在OSX10.6上反汇编到x86_64(但使用_Intel_语法)

Isa*_*aac 9 macos x86 assembly x86-64

我知道otool -tv,但我更倾向于使用英特尔语法而不是AT&Ts,主要是为了轻松地在书中跟随,而不必查看成千上万%的和$.

我也很感激我可以找到gdb配置文件的任何提示.

编辑:我忘记了:我正在运行一个64位处理器,但是想知道是否有可能还可以拆解成32位汇编程序?不仅如此,但确实OSX的gdblist指挥工作不同于标准GNU版本?

非常感谢!

(另外,如果你有任何想法,我可以从C - > MIPS找到一个小的反汇编程序,玩起来会非常有趣.但不是必需的!)

Ste*_*non 8

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

另请注意,虽然otool不支持Intel语法,但gdb(set disassembly-flavor intel)和XCode(首选项 - >调试 - >反汇编样式)可以.


Mic*_*inz 8

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

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

objdump -disassemble -x86-asm-syntax=intel /bin/echo
Run Code Online (Sandbox Code Playgroud)