【问题标题】:Objdump ARM aarch64 code?Objdump ARM aarch64代码?
【发布时间】:2014-08-20 23:53:46
【问题描述】:

我有一个 elf arm aarch64 二进制文件,我想使用 objdump 反汇编它的 .text 部分。我的机器是 amd64。

我尝试了Using objdump for ARM architecture: Disassembling to ARM,但 objdump 无法识别二进制文件,因此无法反汇编。

【问题讨论】:

  • 如果你有 Ubuntu 或 Debian,另一种选择是安装 binutils-multiarch,它可以反汇编许多不同的 CPU 类型。其他系统很可能有类似配置的包。

标签: arm objdump arm64


【解决方案1】:

转到http://releases.linaro.org/latest/components/toolchain/binaries/ 并选择gcc-linaro-aarch64-linux-gnu-4.9-*,例如gcc-linaro-aarch64-linux-gnu-4.9-2014.07_linux.tar.bz2

解包后调用aarch64-linux-gnu-objdump,即:

echo "int main(void) {return 42;}" > test.c
gcc-linaro-aarch64-linux-gnu-4.9-2014.07_linux/bin/aarch64-linux-gnu-gcc -c test.c
gcc-linaro-aarch64-linux-gnu-4.9-2014.07_linux/bin/aarch64-linux-gnu-objdump -d test.o

获取 objdump。

test.o:     file format elf64-littleaarch64


Disassembly of section .text:

0000000000000000 <main>:
   0:   52800540    mov w0, #0x2a                   // #42
   4:   d65f03c0    ret

【讨论】:

    【解决方案2】:

    使用与编译二进制文件相同的工具链

    如果是 ARM 架构,它通常类似于 arm-linux-gnueabi-gcc,所以对于 objdump 你应该使用

    arm-linux-gnueabi-objdump

    目前我猜你必须使用 x86 工具链(objdump)来反汇编使用 ARM 工具链编译的二进制文件,因此错误

    【讨论】:

      猜你喜欢
      • 2015-03-18
      • 1970-01-01
      • 2021-09-04
      • 2011-04-21
      • 2022-08-15
      • 2016-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多