完全反汇编可执行二进制文件

时间:2012-10-23 21:37:31

标签: macos gdb disassembly otool

是否可以获得可执行文件的完整反汇编(可以作为汇编程序的输入)?

当我使用otool -tV a.out时,我只看到文字部分。其他部分如数据不可见。

当我使用gdb时,反汇编命令需要一个起始地址和一个结束地址。但是我不知道如何找出二进制文件的开始和结束地址(比如a.out)。

我正在尝试反汇编可执行文件,修改汇编代码然后重新组装它。 这可能吗?

如果能找到二进制文件中所有部分的名称,也会有所帮助。

4 个答案:

答案 0 :(得分:25)

尝试使用此命令,我记得在某个时候使用它:

otool -tvV a.out

答案 1 :(得分:2)

在Mac上,您可以安装(可能通过自制程序)包含gobjdump的binutils。您可以在安装后反汇编任何二进制程序。它是开放和免费的。

答案 2 :(得分:0)

您可以使用Hopper Disassembler

报价:

  

Hopper是Mac的逆向工程工具,可让您对32/64位Intel Mac可执行文件进行反汇编,反编译和调试。

它的价格是59美元,但您可以下载一个演示来检查它是否先完成工作。

修改

根据the manual,您似乎可以使用otool实现这一目标。

  

.B -d   显示(_ \ _ ^ DATA,_ \ ^ _ data)部分的内容。

另请参阅this short blog post,其中介绍了otool的上述用法,以及如何使用@Sjlver提及的objdump

答案 3 :(得分:-3)

在linux上,您可以尝试使用objdump -D myprog

请注意,仅当程序不包含不规则的控制流时,这才有效。特别是恶意软件经常被混淆,例如通过插入随后跳过的伪字节。

如果您定位此类程序,我听说使用的最佳产品之一是IDA pro