我有一个目标文件,我正在尝试反汇编它。当我使用时:
objdump -d example.o
我在代码中以elf64-x86-64
。
我正在尝试将其反汇编成ARM,我该怎么做呢?
答案 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指令。