【问题标题】:Linux Mach-O DisassemblerLinux Mach-O 反汇编程序
【发布时间】:2012-02-01 11:56:43
【问题描述】:

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

【问题讨论】:

  • 你确定binutils 不支持 Mach-O 吗?也许您需要为此配置它并重新编译它(当然您的标准发行版的binutils 不支持它,因为它不需要它)?
  • 我在某处读到 GNU binutils 不支持它。我只是假设修改了 mac 端口以支持它。 @Brett Hale 描述的情况并非如此。

标签: linux disassembly mach-o objdump


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      关于杰夫的回应:

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

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

      【讨论】:

        【解决方案4】:

        AFAIK,本机 Darwin 二进制工具是 cctools 包的一部分。它们没有与GNU binutils 相同的命令行语法或输出。然而,后来的 binutils(即 2.22)支持 Mach-O 格式。如here 所述,您可以获取这些预构建的工具名称,并在工具名称前加上“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 二进制文件)。

        【讨论】:

        • 明确一点,这是专门为 Mac osx 构建 binutils 的?不像最初的问题那样适用于 Linux?
        • @JamesMcMahon - 它应该适用于任何一个。 --target 是工具分析的架构/ABI。 --host 指定工具将运行的平台。通常--host 默认为config.guess 返回的值。
        【解决方案5】:

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

        【讨论】:

        • 是的... otool 是一个 OSX 命令行工具... Linux 平台有一个替代工具.. 谷歌并找到它!
        • 你能告诉 otool 在 ubuntu 上的替代方案吗?
        猜你喜欢
        • 2010-11-09
        • 2017-10-20
        • 2011-05-23
        • 2011-09-28
        • 1970-01-01
        • 2013-08-04
        • 2011-07-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多