是否可以获得可执行文件的完整反汇编(可用作汇编器的输入)?
当我使用 otool -tV a.out
时,我只能看到文本节。其他节,如数据节,则不可见。
当我使用 gdb
时,反汇编命令需要起始地址和结束地址。但我不知道如何找出二进制文件(比如a.out)的起始地址和结束地址。
我正在尝试对一个可执行文件进行反汇编,调整汇编代码,然后重新汇编它。这是可能的吗?
如果能够找到二进制文件中所有节的名称,那也将有所帮助。
是否可以获得可执行文件的完整反汇编(可用作汇编器的输入)?
当我使用 otool -tV a.out
时,我只能看到文本节。其他节,如数据节,则不可见。
当我使用 gdb
时,反汇编命令需要起始地址和结束地址。但我不知道如何找出二进制文件(比如a.out)的起始地址和结束地址。
我正在尝试对一个可执行文件进行反汇编,调整汇编代码,然后重新汇编它。这是可能的吗?
如果能够找到二进制文件中所有节的名称,那也将有所帮助。
尝试使用这个命令,我记得以前有用过:
otool -tvV a.out
你可以使用Hopper Disassembler。
引用:
Hopper是Mac的逆向工程工具,可让您反汇编、反编译和调试32/64位Intel Mac可执行文件。
它售价59美元,但您可以下载演示版先检查是否能完成工作。
编辑
根据手册,似乎您也可以使用otool
实现此功能。
.B -d 显示(_^_DATA,_^_data)部分的内容。
还可以查看这篇简短的博客文章(存档链接,原始链接已失效),其中描述了otool
的使用方法,以及@Sjlver提到的如何使用objdump
。
otool -d
显示数据段。但这并不是全部。如果可执行文件调用一个像 printf("ABCD")
这样的方法,我无法在汇编中找到字符串 "ABCD" 的声明。 - mynkobjdump -D myprog
。
otool -IvV a.out
(显示间接符号表)。此外还有一个 -d 开关,用于获取 data 部分的信息。更多信息请参见:man otool
。 - andwagon