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]
...
5条答案
按热度按时间piah890a1#
如果你想反汇编ARM代码,你最好有一个ARM工具链,这是我得到的:
http://bb.osmocom.org/trac/wiki/toolchain
有了这个之后,可以使用arm-elf-objdump代替objdump
如果你看manpage,你会发现“-B”后面跟着文件类型。对不起,我不知道如何告诉-b你想分析一个.o文件。“-marm”会告诉cpu是ARM。
希望这能帮到你。
rn0zuynd2#
使用正确的目标编译
binutils
以获得知道如何反汇编ARM的binutils objdump二进制文件。http://www.gnu.org/software/binutils/
例如
./configure --enable-targets=all
。选择你的目标,制作并使用新的
objdump
二进制文件,它可以识别你的目标。有关目标的更多信息,请参阅binutils/README
文件。对比
c3frrgcw3#
在反汇编二进制文件之前,请通过“file”检查文件类型,例如:
文件dnslookup.o
dnslookup.o:ELF 32位LSB可重定位,ARM,EABI 5版本1(SYSV),未剥离
所以现在我们知道它是一个ARM对象或ELF文件。
使用
arm-linux-gnueabi-objdump
反汇编arm对象文件。在Ubuntu中,“arm-linux-gnueabi-objdump”是ARM二进制文件的默认反汇编程序-不需要编译。要安装它,只需执行以下操作:
sudo apt-get install binutils-arm-linux-gnueabi
这个包中还有其他的二进制文件,可以进一步分析ARM二进制文件。
kt06eoxx4#
安装ELDK并使用arm-linux-objdump。您正在尝试使用只知道x86的程序反汇编ARM指令。
oipij1gg5#
我在macOS(arm 64)上遇到了这个问题。出于某种原因,configure从Xcode SDK中找到了
objdump
,我没有交叉编译,所以Xcode必须也包含Intel二进制文件。我所要做的就是
brew install binutils
-问题解决了。