配置 Ghidra 以使用 Keil 8051 ABI 进行分析

逆向工程 吉德拉 8051
2021-06-27 01:58:49

我正在尝试从(我认为)使用 Keil 工具链编译的 nrf24le1 SoC 对原始二进制图像进行逆向工程。具体来说,我看到此图中的 C 函数通常期望它们的参数位于 r7/r5/r3 中,如此处所述并且返回值位于 r7 中。我看到的行为是:

  • Ghidra 认为这个图像中的每个函数都接受 0 个参数,即使很明显该函数立即查看 r7 作为它的第一个参数
  • Ghidra 认为返回值存在于 ACC

我必须为每个函数手动覆盖它。我希望 Ghidra 能够自动确定函数何时具有基于 Keil ABI 的参数。

相比之下,当我在原始 arm32 二进制文件上运行 Ghidra 时,它会注意到函数何时在 r0/r1/r2/... 中查找参数,并相应地调整函数声明。所以 Ghidra 对 arm32 表现正确,但对 8051 表现不正确。

有没有办法解决这个问题(或者我应该使用更好的工具来代替 Ghidra)吗?

1个回答

加载二进制文件时,您需要使用8051 处理器mx51变体。

链接中的文件使用链接中的调用约定。