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

时间:2010-10-04 21:57:34

标签: linux arm disassembly objdump

我有一个目标文件,我正在尝试反汇编它。当我使用时:

objdump -d example.o

我在代码中以elf64-x86-64

的文件格式获得汇编

我正在尝试将其反汇编成ARM,我该怎么做呢?

4 个答案:

答案 0 :(得分:8)

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

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

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

arm-elf-objdump -D -b binary -marm binaryfile.dat

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

希望这可以帮到你。

答案 1 :(得分: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

VS

./../../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]
...

答案 2 :(得分:4)

您必须先使用arm-linux-gnueabi-gcc交叉编译arm文件。您正在使用本机objdump。要反汇编arm对象文件使用 arm-linux-gnueabi-objdump。希望这有帮助

答案 3 :(得分:3)

安装ELDK并使用arm-linux-objdump。您正在尝试使用只知道x86的程序来反汇编ARM指令。