使用objdump进行ARM体系结构:反汇编到ARM

Ste*_*eve 12 linux arm objdump disassembly

我有一个目标文件,我试图反汇编它.我用的时候:

objdump -d example.o
Run Code Online (Sandbox Code Playgroud)

我在代码中得到一个文件格式的程序集elf64-x86-64.

我想把它拆成ARM,我该怎么做呢?

qiu*_*989 9

如果你想拆解ARM代码,你最好有一个ARM工具链,这就是我得到的:

http://bb.osmocom.org/trac/wiki/toolchain

完成后,您可以使用arm-elf-objdump而不是objdump.我用的命令是

arm-elf-objdump -D -b binary -marm binaryfile.dat
Run Code Online (Sandbox Code Playgroud)

如果您查看联机帮助页,您会发现"-b"后面跟着文件类型.对不起,我不知道怎么告诉-b你想要分析一个.o文件."-marm"会告诉cpu是ARM.

希望这可以帮到你.

  • 现在,您只需使用“sudo apt install gcc-arm-none-eabi”安装它,并使用“gcc-arm-none-eabi-objdump -d -marm <binary>”反汇编arm二进制文件。 (4认同)
  • 就我而言(Ubuntu 18.04),“gcc-arm-none-eabi-objdump”不起作用,但“arm-none-eabi-objdump”起作用。 (3认同)

sou*_*kah 6

binutils使用正确的目标进行编译,以获取知道如何反汇编ARM的binutils objdump二进制文件.

http://www.gnu.org/software/binutils/

./configure --enable-targets=all 例如.

选择您的目标,制作并使用objdump您的目标感知的新二进制文件.有关binutils/README定位的详细信息,请参阅该文件.

objdump -D t3c # stock binary
objdump: t3c: File format not recognized
Run Code Online (Sandbox Code Playgroud)

./../../binutils-2.22/binutils/objdump -D t3c # latest compiled from source with all targets
In archive t3c:

t3c:arm:     file format mach-o-le


Disassembly of section .text:

00002d94 <start>:
    2d94:   e59d0000    ldr r0, [sp]
...
Run Code Online (Sandbox Code Playgroud)


小智 5

您必须先使用交叉编译该文件以供使用arm-linux-gnueabi-gcc。您正在使用本机objdump。要反汇编手臂目标文件,请使用 arm-linux-gnueabi-objdump。希望这可以帮助


Jon*_*han 4

安装ELDK并使用arm-linux-objdump。您正在尝试使用仅识别 x86 的程序反汇编 ARM 指令。