15

是否有任何 Linux 程序可以像 objdump 这样反汇编 OSX 通用 x86/x86_64 胖 Mach-O 二进制文件?GNU binutils 的 objdump 支持 ELF 和 Windows PE 文件,但不支持 Mach-O。

4

5 回答 5

14

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 二进制文件)。

于 2012-01-03T14:58:18.880 回答
5

关于杰夫的回应:

即使在当前的 2.23 版本中,bintuils 也不包括对 mach o 的链接支持 (ld/gld),这确实令人失望但并不奇怪。不幸的是,当您制作操作系统并重新发明“真正不需要重新发明”的东西时,就会发生这种情况。每个人都有不同的优先事项。我还没有从某些人那里听到 a.out vs elf 的结局。

想尝试在 OSX 上运行 ELF 二进制文件吗?https://stackoverflow.com/a/2613170/1867574

于 2012-11-30T21:25:42.490 回答
2

您可以使用Hopper在 Linux 上反汇编 Mach-O 二进制文件。与 objdump 不同,它有一个非常漂亮的图形用户界面。

于 2013-03-21T21:53:33.187 回答
2

我认为你需要otool. 它包含在mac osx command tools. 例如,如果你想反汇编a.out,你需要做的就是otool -tv a.out在你的命令行中输入。

于 2014-08-02T16:31:08.357 回答
-1

很少有用于逆向工程 Mach-O 二进制文件的著名工具是otool、strings、nm、otx 等。这绝对适用于 MAC OSX,我认为它也适用于 Linux 平台。

于 2012-01-03T12:39:59.860 回答