我有一个目标文件,想要进行反汇编。当我使用:
objdump -d example.o
我在代码中得到一个 elf64-x86-64
文件格式的汇编代码。
我想将其反汇编为ARM,应该如何操作?
我有一个目标文件,想要进行反汇编。当我使用:
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。
希望这可以帮助您。
sudo apt install gcc-arm-none-eabi
来安装它,然后使用gcc-arm-none-eabi-objdump -d -marm <binary>
来反汇编ARM二进制文件。 - borizzzzzgcc-arm-none-eabi-objdump
不起作用,但是 arm-none-eabi-objdump
能够正常工作。 - lonelyjoe所以现在我们知道它是一个ARM对象或ELF文件。file dnslookup.o
dnslookup.o:ELF 32位LSB relocatable,ARM,EABI5版本1(SYSV),未剥离
arm-linux-gnueabi-objdump
。在Ubuntu中,“arm-linux-gnueabi-objdump”是ARM二进制文件的默认反汇编程序-无需编译。sudo apt-get install binutils-arm-linux-gnueabi
此软件包中还有其他可以进一步分析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-trusted-firmware-tools
。sudo apt install arm-trusted-firmware-tools
arm-none-eabi-objdump -D -b binary -marm binary.elf > binary.elf.asm
我在 macOS (arm64) 上遇到了这个问题。由于某种原因,configure 工具从 Xcode SDK 中找到了 objdump
,而我并没有进行交叉编译,所以 Xcode 必须也包含 Intel 二进制文件。
我所需要做的就是执行 brew install binutils
– 问题解决了。