我正在尝试对这里提供的一个非常小的二进制文件进行反汇编。该文件是从另一个可执行二进制文件的一部分裁剪而来的。
当我用r2
它打开它时,它会自动识别架构并可以为我提供拆卸:
然而,使用 Ghidra,它无法自动找到架构,我必须手动指定语言:
即便如此,我得到以下作为反汇编:
与开源radare2相比,NSA的Ghidra在这种情况下的表现如此糟糕,我感到非常惊讶。有人可以描述发生了什么,我该如何解决?
我正在尝试对这里提供的一个非常小的二进制文件进行反汇编。该文件是从另一个可执行二进制文件的一部分裁剪而来的。
当我用r2
它打开它时,它会自动识别架构并可以为我提供拆卸:
然而,使用 Ghidra,它无法自动找到架构,我必须手动指定语言:
即便如此,我得到以下作为反汇编:
与开源radare2相比,NSA的Ghidra在这种情况下的表现如此糟糕,我感到非常惊讶。有人可以描述发生了什么,我该如何解决?
当您只有原始字节而没有适当的标头时,工具可能不知道如何处理,因为代码可能不是从 offset 开始的0
。他们可以尝试分析字节以检测是否存在代码、数据或其他内容,但您也可能会得到一些误报。
在您的情况下,您指示r2
将这些字节显示为代码 ( pd - print disassembly
) 并且它无法识别任何架构,因为默认情况下它具有 x86。当您不打开任何文件(r2 -
然后e asm.arch
)时,您会得到相同的结果
在 Ghidra 中,您手动选择架构并“强制”工具执行与您pd
在radare2 中相同的操作,只需按D。