在ARMv8中为objdump反汇编程序定义代码偏移量

西维桑

我有一个包含ARM v8二进制代码的文件。我想反汇编该文件并获取其中包含的实际汇编代码。

假设文件名为tmp.o,我运行:

/opt/linaro/A64-tools/bin/aarch64-linux-gnu-objdump -b binary -m AARCH64 -D tmp.o

这给了我正确的拆卸方法。但是,分支指令的偏移量假定此代码位于地址0x00000000中。

如果我知道代码将位于内存中的地址0x12345678中:

  1. 有没有办法告诉objdump使用此地址作为起始地址?
  2. 如果没有,我可以在二进制文件中添加一些标头,例如:

    = 0x12345678

提前致谢..

不是这样的

快速浏览一下即可发现objdump的--adjust-vma选项,它似乎正是这样做的。

使用第一个原始二进制文件:

$ aarch64-linux-gnu-objdump -b binary -m aarch64 -D arch/arm64/boot/Image

arch/arm64/boot/Image:     file format binary


Disassembly of section .data:

0000000000000000 <.data>:
       0:       91005a4d        add     x13, x18, #0x16
       4:       140003ff        b       0x1000
...

$ aarch64-linux-gnu-objdump -b binary -m aarch64 --adjust-vma=0x12345678 -D arch/arm64/boot/Image

arch/arm64/boot/Image:     file format binary


Disassembly of section .data:

0000000012345678 <.data>:
    12345678:   91005a4d        add     x13, x18, #0x16
    1234567c:   140003ff        b       0x12346678
...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章