我有一个对象文件,并试图反汇编它。 当我使用:
objdump -d example.o
我以elf64-x86-64
的文件格式获得代码集。
我试图把这个反汇编成ARM,我该怎么做呢?
如果你想做反汇编的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。
希望这可以帮到你。
用正确的目标编译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
与
./../../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] ...
你必须首先使用arm-linux-gnueabi-gcc
来交叉编译arm文件。 您正在使用本地objdump。 要反汇编arm目标文件,请使用arm-linux-gnueabi-objdump
。 希望这可以帮助
安装ELDK并使用arm-linux-objdump。 您正试图使用只知道x86的程序反汇编ARM指令。