【问题标题】:Disassemble into x86_64 on OSX10.6 (But with _Intel_ Syntax)在 OSX10.6 上反汇编成 x86_64(但使用 _Intel_ 语法)
【发布时间】:2010-12-16 05:23:14
【问题描述】:

我知道 otool -tv,但我更愿意使用 Intel 语法而不是 AT&T,主要是为了轻松地在一本书中学习,而不必查看成千上万的 %' s 和 $ 的。

如果我能找到gdb 的配置文件的任何提示,我也将不胜感激。

编辑:我忘记了:我正在运行 64 位处理器,但想知道是否也可以反汇编成 32 位程序集?不仅如此,OSX 的gdblist 命令与标准GNU 版本的工作方式有什么不同吗?

非常感谢!

(另外,如果你知道我在哪里可以找到一个来自 C -> MIPS 的小反汇编程序,那玩起来会很有趣。但不是必需的!)

【问题讨论】:

  • C -> MIPS 不是反汇编,而是编译。 C 是“高级”源代码,而不是机器代码。 godbolt.org(编译器资源管理器)安装了 MIPS GCC,通过 clang,您可以使用 -O3 -target mips-O3 -target mips64。如果 MacOS 上的 Apple Clang 支持构建,您或许可以在桌面上使用 clang -target mips -S

标签: macos assembly x86 x86-64


【解决方案1】:

(我知道这是一个老问题,但我想为通过搜索引擎来到这里的人们提供更新的答案)。

在最新版本的 macOS(我运行的是 10.14.5)上,可以使用 objdump 命令,该命令基于 LLVM,不是来自 GNU 项目的命令。它提供了一个(隐藏的)选项来使用 Intel 语法进行反汇编。比如/bin/echo可以这样反汇编:

objdump -disassemble -x86-asm-syntax=intel /bin/echo

【讨论】:

【解决方案2】:

对于 GDB,在您的 .gdbinit 文件中,添加:

设置反汇编风格的intel

那么它将是 gdb 的默认语法。

【讨论】:

    【解决方案3】:

    回答你的第二个问题,如果代码已经编译成64位和32位的胖二进制文件,你可以使用otool -arch i386 -tv反汇编二进制的32位切片; otool -arch x86_64 -tv 将为您提供 64 位部分(在 SnowLeopard 上,如果未传递 -arch 标志,这也是默认行为)。

    还要注意,虽然 otool 不支持 Intel 语法,但 gdb (set disassembly-flavor intel) 和 XCode (Preferences -> Debugging -> Disassembly Style) 支持。

    【讨论】:

    • 谢谢!尽管我仍然对 MIPS 感到好奇,但我会继续这样做 :) 太糟糕了 otool 不支持 Intel 的语法。
    • 如果对您有障碍,您应该提交一个错误请求添加该功能(如果您还没有 ADC 帐户,则需要设置一个):developer.apple .com/BugReporter
    【解决方案4】:

    Objdump 可以用-d -M intel 反汇编,显然-m 可以用来指定架构。

    【讨论】:

    • 我明白 - 不幸的是 objdump 不能在 OSX 上工作/不附带。
    • 如果你使用 macports 或 homebrew 安装 gdb binutils,我相信你可以在 OSX 上获得 objdump。我曾经有过它,但我更喜欢使用 otool 因为它实际上是一个 OSX 工具。不过我同意,希望 otool 本身的 intel 语法。
    • 如果您使用自制软件安装 binutils,则可执行文件的名称是 gobjdump。生成输出后有点片状和崩溃,但是......总比没有好!
    • 我在 mac 上有一个 objdump 版本,但我不能让它反汇编 x64 代码
    【解决方案5】:

    您可以使用 A2I 将 AT&T 语法转换为 Intel 语法:http://membres.lycos.fr/placr/a2i.html

    【讨论】:

    • 这不是我想要的——语法都很容易阅读。更重要的是让我的生活更轻松;使用 A2I 会增加我不想采取的步骤,但回报很少。不过谢谢!
    • 此链接现已损坏。
    猜你喜欢
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 2016-11-15
    • 2015-03-26
    • 2018-11-13
    相关资源
    最近更新 更多