是否可以获得可执行文件的完整反汇编(可以作为汇编程序的输入)?
当我使用时,otool -tV a.out
我只能看到文本部分。数据等其他部分不可见。
当我使用gdb
时,反汇编命令需要一个开始地址和一个结束地址。但是我不知道如何找出二进制文件的开始和结束地址(比如 a.out)。
我正在尝试反汇编一个可执行文件,修改汇编代码,然后重新组装它。那可能吗?
如果可以找出二进制文件中所有部分的名称,那也会有所帮助。
是否可以获得可执行文件的完整反汇编(可以作为汇编程序的输入)?
当我使用时,otool -tV a.out
我只能看到文本部分。数据等其他部分不可见。
当我使用gdb
时,反汇编命令需要一个开始地址和一个结束地址。但是我不知道如何找出二进制文件的开始和结束地址(比如 a.out)。
我正在尝试反汇编一个可执行文件,修改汇编代码,然后重新组装它。那可能吗?
如果可以找出二进制文件中所有部分的名称,那也会有所帮助。
尝试使用此命令,我记得曾经使用过它:
otool -tvV a.out
在 Mac 上,您可以安装(可能通过自制软件)包含 gobjdump 的 binutils。安装后,您可以反汇编任何二进制程序。它是开放和免费的。
您可以使用Hopper Disassembler
引用:
Hopper 是 Mac 的逆向工程工具,可让您反汇编、反编译和调试 32/64 位 Intel Mac 可执行文件。
它的价格为 59 美元,但您可以下载一个演示以检查它是否首先完成了工作。
编辑
otool
根据手册,您似乎也可以实现这一点。
.B -d 显示 (_^_DATA,_^_data) 部分的内容。
另请查看这篇简短的博客文章(存档链接,原版已消失),其中描述了 的上述用途,以及@Sjlver 提到的otool
如何使用。objdump
在linux上,你可以尝试使用objdump -D myprog
请注意,这仅在程序不包含不规则控制流时才有效。特别是恶意软件经常被混淆,例如通过插入然后跳过的虚假字节。
如果您针对此类程序,我听说最好使用的产品之一是IDA pro。