gpt4 book ai didi

disassembly - 在 ARMv8 中为 objdump 反汇编器定义代码偏移量

转载 作者:行者123 更新时间:2023-12-03 21:33:41 25 4
gpt4 key购买 nike

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

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

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

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

如果我知道代码将位于内存中的地址 0x12345678 中:
  • 有没有办法告诉 objdump 使用这个地址作为起始地址?
  • 如果没有,我可以在二进制文件中添加一些 header ,其内容如下:

    . = 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
    ...

    关于disassembly - 在 ARMv8 中为 objdump 反汇编器定义代码偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30460004/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com