是否有任何 Linux 程序可以像 objdump 这样反汇编 OSX 通用 x86/x86_64 胖 Mach-O 二进制文件?GNU binutils 的 objdump 支持 ELF 和 Windows PE 文件,但不支持 Mach-O。
5 回答
AFAIK,本机 Darwin 二进制工具是cctools包的一部分。它们没有与GNU binutils相同的命令行语法或输出。然而,后来的 binutils(即 2.22)支持 Mach-O 格式。你可以得到这些预建的,g
在工具名称前加上“”前缀,如此处所述。或者,您可以编译 binutils,例如:
> ./configure --prefix=$CROSSTOOLDIR --target=x86_64-apple-darwin \
--enable-64-bit-bfd --disable-nls --disable-werror
安装将产生一个bin/
目录,其中实用程序的前缀为x86_64-apple-darwin
. 它应该可以很好地处理 i386 Mach-O 格式(和 FAT 二进制文件)。
关于杰夫的回应:
即使在当前的 2.23 版本中,bintuils 也不包括对 mach o 的链接支持 (ld/gld),这确实令人失望但并不奇怪。不幸的是,当您制作操作系统并重新发明“真正不需要重新发明”的东西时,就会发生这种情况。每个人都有不同的优先事项。我还没有从某些人那里听到 a.out vs elf 的结局。
想尝试在 OSX 上运行 ELF 二进制文件吗?https://stackoverflow.com/a/2613170/1867574
您可以使用Hopper在 Linux 上反汇编 Mach-O 二进制文件。与 objdump 不同,它有一个非常漂亮的图形用户界面。
我认为你需要otool
. 它包含在mac osx command tools
. 例如,如果你想反汇编a.out
,你需要做的就是otool -tv a.out
在你的命令行中输入。
很少有用于逆向工程 Mach-O 二进制文件的著名工具是otool、strings、nm、otx 等。这绝对适用于 MAC OSX,我认为它也适用于 Linux 平台。