工具
FirmLoader 微控制器固件内存布局 IDA 插件
为原始微控制器固件镜像套用芯片内存布局的 IDA 插件:分析者选定 MCU 型号后,它会创建 RAM 等内存段,添加带有寄存器命名的外设段,并在描述文件包含中断向量表时标注各表项,把它们指向的处理程序创建为函数。README 称其类似 IDA 内置的 SVD 加载器,但采用更简单的 JSON 描述格式,可依据公开的数据手册手工编写。所审阅提交附带 813 个描述文件,涵盖 Microchip/Atmel、ST、NXP、TI、Silicon Labs 等厂商的 MCU。
- 目标
- 固件
- 类别
- 固件工具
- 关联
- 基础工具
- 来源复核于
使用条件与局限
- 唯一的发布版本是标签 1.0,标题为“IDA 8.X”,发布于 2024-12-05,指向 2024 年 2 月的一次提交。所审阅的 main 分支提交 5c9c1a1 是 2024-12-05 的最后一次改动,比该标签多四个提交:一个外部贡献的拉取请求加入了 IDA 9.0 支持,另一个为 STM32L4x1 增加了 SRAM2 内存段。未核实更早的 IDA 版本能否使用。
- 安装方法是把 firmloader.py 和 firmloader_data 文件夹复制到 IDA 的 plugins 目录;需要带 IDAPython 的 IDA,插件代码使用 Python 3.8+ 语法。分析者需按处理器文档给出的基址加载镜像,把主代码段重命名为 ROM,再在 Edit > FirmLoader 菜单中选择型号;应用后插件会将 ROM 段交给 IDA 自动分析。
- 输入是分析者已从微控制器中读出的固件镜像;仓库不含任何固件,只有插件本身、MCU 描述 JSON 文件、data_template.json 和两张 README 配图。813 个描述文件中有 812 个为 32 位;16 位的 ATmega328 描述文件未列出外设,另有四个 SPC5 和 AURIX TC27x 芯片的描述文件没有中断向量表;README 说明,若同一系列有多种内存容量,所有型号都按最大 RAM 生成。其他 MCU 需要手工编写描述文件。
- 采用 Apache-2.0 许可。README 指出 SPC560B64x 是完全手工编写的描述文件,其余文件则只称作 SVD 数据的补充,未说明其生成方式;本次未对照厂商文档核对其中的寄存器与向量,也未加载任何固件。
关于此条目
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · Accenture/FirmLoader · 修订 5c9c1a1
- firmloader.py GitHub · Accenture/FirmLoader · 修订 5c9c1a1
- data_template.json GitHub · Accenture/FirmLoader · 修订 5c9c1a1
- firmloader_data GitHub · Accenture/FirmLoader · 修订 5c9c1a1
- LICENSE GitHub · Accenture/FirmLoader · 修订 5c9c1a1
- https://github.com/Accenture/FirmLoader/pull/5
- https://github.com/Accenture/FirmLoader/releases/tag/1.0