如何利用IDA Pro逆向分析ARM 二进制映像
💡
原文中文,约4800字,阅读约需12分钟。
📝
内容提要
本文介绍了使用ANYTONE 878UVII对讲机固件进行ARM固件映像逆向分析的步骤,包括使用IDA Pro和固件映像进行分析、设置处理器选项和重新定位固件映像。还介绍了使用脚本创建代码和字符串的方法,以及识别操作系统函数和处理I/O和外围设备。
🎯
关键要点
- 本文介绍了ANYTONE 878UVII对讲机固件的ARM固件映像逆向分析步骤。
- 假设读者已熟悉IDA Pro,并能分析普通二进制文件。
- 固件映像可以从分销商网站下载,本文以2.04版本为例。
- 下载的更新包中包含CDI、SPI和CDD文件,CDD是要分析的固件映像。
- 固件映像未加密,直接在IDA Pro中加载CDD文件。
- ANYTONE 878系列对讲机使用GigaDevice GD32 ARM Cortex-M4微控制器。
- 可以通过FCC查询设备信息,避免拆机。
- 下载CPU的数据表以获取设置参数。
- 在IDA Pro中打开CDD文件,设置处理器类型为ARM little-endian。
- 修改处理器选项以适应ARMv7E-M架构,建议勾选“No automatic ARM THUMB switching”。
- 将固件映像重新定位到正确的偏移量0x8004000。
- 创建RAM分区,分配的RAM从0x20000000位置开始,长度为0x17FFF。
- 从数据手册中获取内存偏移量和长度信息。
- 分析固件映像时,需手动创建代码,IDA不会自动分析。
- 复位处理程序的地址需根据最低有效位判断是否为Thumb。
- 使用脚本自动创建代码和字符串,提升分析效率。
- 识别固件中的字符串和OS函数,了解设备使用的RTOS是μC/OS-II。
- 基于ARM的CPU使用特殊内存区域处理I/O和外围设备。
- 通过IDA中的内存区域视图添加特殊内存区域,运行自动分析以创建交叉引用。
- 完成步骤后可查看感兴趣的内存区域及其交叉引用。
➡️