2010-10-04 208 views
10

我有一个目标文件,正试图对其进行反汇编。当我使用:使用objdump进行ARM体系结构:反汇编到ARM

objdump -d example.o 

我得到了代码的组件的elf64-x86-64的文件格式。

我想把这个反汇编成ARM,我该如何去做这件事?

+0

只是为了澄清,你是说你有一个x86_64可执行文件/目标文件,并希望它反汇编为ARM指令? – dmckee 2010-10-04 22:22:22

+0

是的,教授让我在一个项目上工作,我想要做的是反汇编目标文件,但我想这是一个x86可执行文件。如果我使用arm-linux-objdump,我应该可以反汇编到ARM中吗? – Steve 2010-10-11 00:36:26

+1

对于编译以及反汇编,您需要使用ARM交叉编译工具链。 – JagsVG 2015-10-08 05:44:07

回答

2

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

6

编译binutils与正确的目标(s)得到binutils objdump二进制文件知道如何反汇编ARM。

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

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

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

objdump -D t3C# stock binary 
objdump: t3c: File format not recognized 

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

如果你想要做拆机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。

希望这可以帮助你。

3

您必须首先使用arm-linux-gnueabi-gcc交叉编译arm文件。您正在使用本地objdump。要拆解ARM目标文件,请使用 arm-linux-gnueabi-objdump。希望这有帮助