工具
ghidra-nanomips nanoMIPS 处理器模块
为 Ghidra 增加 nanoMIPS 反汇编和反编译能力的处理器模块,以 SLEIGH 规范描述小端 32 位 nanoMIPS 指令集,包括其多线程指令。NCC Group 的发布文章称,该模块是在逆向分析 MediaTek 5G 基带固件时编写的,实现了该固件中遇到的指令,部分复杂 P-Code 仿真尚未实现,但已能反编译团队分析过的大部分基带代码。
- 目标
- 二进制 · 固件
- 类别
- 原生分析工具
- 关联
- 基础工具
- 来源复核于
使用条件与局限
- 审阅时最新版本为 v0.3.3,于 2025-11-06 基于所审阅的 main 分支提交发布,附带为 Ghidra 11.4.2 构建的扩展 zip;v0.3.1 和 v0.3.2 同样面向 11.4.2,而 README 的构建示例使用 Ghidra 11.0.3。若使用其他 Ghidra 版本,需用 Gradle 并设置 GHIDRA_INSTALL_DIR 从源码构建,再通过 File > Install Extensions 安装 zip。
- 模块只定义了 nanomips:LE:32:default 一种语言,导入器判定文件仍是注释掉的模板,因此导入时(例如导入原始二进制)需手动选择该语言。README 列出了编写时参考的 nanoMIPS32 指令集、特权架构、多线程、ELF ABI 以及 I7200 内核手册;仓库不含这些文档。
- 发布说明记录了 LWM/RESTORE、BITREVH 及内存引用的 p-code 修正、一处导致反编译器 varnode 错误的编译器规范修正,以及 ADDIUPC 的 PC 相对地址显示。仓库没有测试或 CI,规范中仍有关于有效地址处理的 TODO 注释;本次审阅未加载任何二进制。
- 采用 GPL-3.0;build.gradle 保留了 Ghidra 扩展模板的 Apache-2.0 文件头。extension.properties 署名作者为 James Chambers 和 Robert Herrera。待分析的固件需由使用者提供;发布文章中的 MediaTek 演示仅为示例,并非随附样本。
关于此条目
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · nccgroup/ghidra-nanomips · 修订 62ebe71
- data/languages/nanomips.ldefs GitHub · nccgroup/ghidra-nanomips · 修订 62ebe71
- data/languages/nanomips.opinion GitHub · nccgroup/ghidra-nanomips · 修订 62ebe71
- data/languages/nanomips.slaspec GitHub · nccgroup/ghidra-nanomips · 修订 62ebe71
- data/languages/nanomips.sinc GitHub · nccgroup/ghidra-nanomips · 修订 62ebe71
- extension.properties GitHub · nccgroup/ghidra-nanomips · 修订 62ebe71
- LICENSE GitHub · nccgroup/ghidra-nanomips · 修订 62ebe71
- https://github.com/nccgroup/ghidra-nanomips/releases/tag/v0.3.3
- https://www.nccgroup.com/research/ghidra-nanomips-isa-module/