如何在十六进制编辑器中向下跳X个字节?

如何在十六进制编辑器中向下跳X个字节?

我正在查看内存转储

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确实是可以使用的工具。

相关内容