【发布时间】:2015-08-08 05:07:08
【问题描述】:
我有一个包含 ARM v8 二进制代码的文件。我想反汇编文件并获取其中包含的实际汇编代码。
假设文件名为 tmp.o 我运行:
/opt/linaro/A64-tools/bin/aarch64-linux-gnu-objdump -b binary -m AARCH64 -D tmp.o
这给了我正确的反汇编。但是,分支指令的偏移量假定此代码位于地址 0x00000000 中。
如果我知道代码将位于内存中的地址 0x12345678:
- 有没有办法告诉 objdump 使用这个地址作为起始地址?
-
如果没有,我可以在二进制文件中添加一些标题,如下所示:
。 = 0x12345678
提前致谢..
【问题讨论】:
-
您是否有足够的磁盘空间来简单地用 0x12345678 零字节填充文件的开头? :P
-
不幸的是没有磁盘空间也没有运行时:(
-
这是一个对象而不是链接的二进制文件,您可以将二进制文件链接到最终地址,然后对其进行反汇编
-
@dwelch 这是我从一些内存快照创建的虚拟对象。它并不意味着被链接。我需要在独立模式下对其进行反汇编。不过谢谢。
-
我知道关键是您的最终地址直到链接时间才正常应用,因此如果 objdump 中没有此命令行选项,那么您的选择是在基数为零的位置反汇编对象并处理它或者严格链接,目的是为了拆解改地址...
标签: disassembly arm64 objdump