使用 IDA Pro 在特定固件 .bin 文件中定位入口点

逆向工程 艾达 二进制格式
2021-06-22 13:45:35

我试图通过反转我自己编译的 .bin 文件来熟悉 IDA。代码是用cpp编写的,开源代码可以在这里找到:https : //github.com/openxc/vi-firmware

查看 Makefile 和链接器文件(在 vi-firmware/src 和 vi-firmware/src/platform/lpc17xx/ 中),您可以看到注释中标出了 Flash 和 RAM 位置。微控制器使用 LPC17xx ( http://vi.openxcplatform.com/electrical/design/microcontroller.html ) 和 ARM 7 架构。

因此,当我加载 IDA 时,我选择二进制文件并将处理器设置为 ARM,将处理器选项设置为 ARM 7。

在下一个菜单中,我根据 vi-firmware/src/platform/lpc17xx/LPC17xx-bootloader.ld 中的注释配置 RAM 和 ROM,然后按 OK 后,出现对话框告诉我“请移至think 是一个切入点”。

我将 64KB (0x10000) 移动到闪存 (ROM) 中并点击“C”以尝试自动分析。只有几行转换为组装。

还有什么我可以在这里做的吗?我已经梳理了 uC 的数据表,但找不到任何有用的东西。

1个回答

(免责声明:我不知道 ARM,这可能是完全错误的)

使用以下设置加载vi-default-firmware-FORDBOARD-ctv7.2.0.bin(从发布页面下载)到 IDA:

固件设置

然后,将光标放在 后0x10000,您必须按C,然后滚动到未定义的字节,然后C再次滚动到该函数的顶部并按下P以使其成为一个函数,并获得一个漂亮的图形视图Space

如何修复代码

我对 ARM 没有任何经验,但这对我来说似乎是一个合适的函数图:

ARM函数图