是否有可能获得可执行文件的完整反汇编(可用作汇编程序的输入)?获取可执行二进制文件的完整反汇编
当我使用otool -tV a.out
时,我只能看到文本部分。其他部分如数据不可见。
当我使用gdb
时,反汇编命令需要开始和结束地址。但是我不知道如何找出二进制文件的开始和结束地址(比如a.out)。
我试图反汇编一个可执行文件,修补程序与汇编代码,然后重新组装它。 这可能吗?
如果能找出二进制文件中所有部分的名字,它也会有所帮助。
是否有可能获得可执行文件的完整反汇编(可用作汇编程序的输入)?获取可执行二进制文件的完整反汇编
当我使用otool -tV a.out
时,我只能看到文本部分。其他部分如数据不可见。
当我使用gdb
时,反汇编命令需要开始和结束地址。但是我不知道如何找出二进制文件的开始和结束地址(比如a.out)。
我试图反汇编一个可执行文件,修补程序与汇编代码,然后重新组装它。 这可能吗?
如果能找出二进制文件中所有部分的名字,它也会有所帮助。
报价:
Hopper是为Mac逆向工程工具,可以让你反汇编,反编译和调试32/64位Intel Mac上的可执行文件。
它花费59美元,但你可以下载一个演示来检查它是否首先完成工作。
编辑
看来你可以用otool
实现这一目标还有,根据the manual。
.B -d 显示(_ \^_ DATA,_ \^_ data)部分的内容。
也看看this short blog post描述提到使用otool
,以及如何使用objdump
由@Sjlver提及。
在Mac上,您可以安装(可能通过自制软件)binutils,其中包括gobjdump。您可以在安装后反汇编任何二进制程序。它是开放的和免费的。
brew安装binutils为我工作 – brthornbury
这应该是一个评论,因为它没有试图回答这个问题。 – jww
尝试使用此命令,我记得使用它是回:
otool -tvV a.out
这个命令在过去帮助过我以及'otool -IvV a.out'(显示间接符号表)。此外还有用于_data_部分信息的_-d_开关。更多信息:'man otool' – andwagon
'otool -d'肯定显示的数据部分。但那不是全部。如果可执行文件调用类似于:'printf(“ABCD”)'的方法,则无法在任何位置找到程序集中字符串“ABCD”的声明。 – mynk
你尝试过Hopper吗? – jurgemaister
我正在寻找一个免费的解决方案。所以没有给它一个镜头。 – mynk