我正在查看内存转储
B79C6440 64 6F 6E 65 00 00 6C 5F 75 62 6C 65 20 73 68 6F done..l_uble sho
B79C6450 77 5F 00 00 5F 6F 6E 5F 72 75 70 00 00 61 63 6B w_.._on_rup..ack
B79C6460 69 72 71 5F 76 65 63 74 6F 72 73 10 10 05 30 10 irq_vectors...0.
B79C6470 06 50 10 07 70 10 08 90 10 09 B0 10 0A 98 1B FC .P..p...........
B79C6480 16 9C 1B A0 A4 A8 18 6E 6D 69 5F 63 68 65 63 6B .......nmi_check
使用 Hexedit,我可以通过按 Enter 键并输入地址来跳转到新地址。
假设我想B79C6440
通过添加 X 字节的偏移量来从地址移动,我如何计算我想要到达的新地址以便我可以输入它?
答案1
好吧,除了使用例如bc
或你的外壳(简单地echo "$((0xB79C6440 + 1234))
),你不能。
老实说,hexedit
这是一个具有悠久传统的好工具,但如果你真的想移动复杂的文件,它很难成为选择的十六进制编辑器:
- 如果您正在查看可执行程序代码/库,
radare2
这是一个非常强大的工具,还允许您直接跟踪跳转,可以分析二进制文件以提取函数,分析文件区域中的熵以查找特定内容等 - 如果您想分析数据存储文件格式,Ange Albertini 的斯巴德可能更符合您的需求。有一个简洁的演示关于这个问题。
- 如果你习惯使用 emacs,无论如何,猜猜存在什么主要模式
- vim 有一个非常流行的十六进制编辑器模式:事实上,最常用的工具之一就是将文件内容转储为十六进制(而不是交互式地在其中跳转),它的名字就来自于它
xxd
。您可以通过输入 vim 进入十六进制编辑模式:%xxd
。
查看您的转储,这看起来像是将作为过程映像或直接作为裸机固件加载的东西:radare2r2
确实是可以使用的工具。