我正在对具有 Linux 和 RTOS 组件的固件进行逆向工程。我使用 binwalk 轻松定位 Linux 文件系统,提取它们,安装它们,现在我有了可以在 IDA Pro 中打开并继续工作的二进制文件。
但是,使用固件的 RTOS 端执行此操作要困难得多。在我的目标固件映像中,我能够识别出 RTOS 位于上方内存地址中的 Linux 文件系统,通过对常见的 RTOS 相关事物执行一些字符串搜索。代码绝对是 ARM,可能是 32 位,little-endian。这是 Cortex-A7。我看到了表明它也可能是 ITRON RTOS 或 FreeRTOS 的工件。但本质上,binwalk 提取了 3-4 块包含所有这些的“数据”文件。所以我可以通过查看这些块中的字符串偏移量来获得一些有用的信息。由于大多数数据似乎是字符串和 ARM 指令,因此我在 IDA Pro 中打开了它们。IDA 解析需要很长时间,但是一旦解析完毕,一切都只是数据,需要手动转换为代码。这是我挂断电话的地方。我有两个主要问题:
- 像这样的 RTOS 系统是否有一个合适的“文件系统”,我可以像使用 Linux ext 和 squashfs 那样“安装”来查看二进制文件?我曾经使用 binwalk 使用过的所有文件系统都是 Linux 的。如果是这种情况,什么是常见的 RTOS 文件系统?
- 如果没有,我如何使用 IDA Pro 以清晰的方式查看这些块的 ARM 反汇编?