如何利用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中的内存区域视图添加特殊内存区域,运行自动分析以创建交叉引用。
  • 完成步骤后可查看感兴趣的内存区域及其交叉引用。
➡️

继续阅读