我试图在这里获取一个很小的二进制文件的反汇编。该文件是从另一个可执行二进制文件的一部分中裁剪而来的。

当我用r2打开它时,它会自动识别该体系结构并可以为我提供拆装:



但是对于Ghidra,它不能自动找到体系结构,然后我必须手动指定语言:



即便如此,我还是得到了以下反汇编代码:



与开源的rarad2相比,在这种情况下,NSA的Ghidra表现不佳,我感到非常惊讶。有人可以描述发生了什么,如何解决?

#1 楼

当您只有原始字节而没有适当的头文件时,工具可能不知道如何处理,因为代码可能不是从偏移量0开始的。他们可以尝试分析字节以检测是否存在代码,数据或其他东西,但是您可能还会得到一些假阳性。 ),并且由于默认情况下具有x86,因此无法识别任何体系结构。在不打开文件的情况下(r2pd - print disassembly),您会得到相同的结果。

在Ghidra中,您手动选择了体系结构,并“强制”该工具执行与radare2中的r2 -相同的操作,只需按D 。

#2 楼

PawełŁukasik是正确的。

使用Ghidra分解代码片段可以分3个步骤完成: />突出显示要反汇编的字节




按Paweł的说明按“ D”或右键单击并选择“反汇编”