# 通过 Ghidra 分析 MIPS ELF

> 说明 REA 通过 Ghidra 分析 MIPS ELF 可执行文件、可重定位目标文件与 MIPS16 共享镜像的流程，包括为缺少 ABI 记录的旧式固件可执行文件固定 32 位语言，以免 Ghidra 将其按 64 位导入。准入以文件头声明和 ABI 记录为界；验证将项目自有的测试样本与独立的 readelf 输出对照，而不执行或重新托管固件。

- 类型：文档
- 目标：二进制 · 固件
- 类别：REA 官方：调查指南
- 关联：REA 官方文档
- 来源复核于：2026-10-18
- 收录于：2026-10-18
- 原始资源：<https://github.com/morluto/rea/blob/main/docs/ghidra-mips.md>
- 一手来源：<https://github.com/morluto/rea/blob/c12d9eda87aa5a022ee7e18ea96d8d03bfd12e96/docs/ghidra-mips.md>
- 目录页面：<https://awesomerea.org/zh/resources/rea-ghidra-mips-guide/>
- 记录 JSON：<https://awesomerea.org/resources/rea-ghidra-mips-guide/record.json>
- 英文版：[English](https://awesomerea.org/resources/rea-ghidra-mips-guide/index.md)

## 使用条件与局限

- 需要使用者自行安装 Ghidra 及兼容的 JDK，并在受支持的 Linux 或 macOS 宿主上运行；Windows 版 Ghidra P0 不接受 MIPS 目标，Hopper／IDA 也不因此获得 MIPS 支持。该流程不执行 MIPS 代码，也不重新托管固件。标准配置接受声明 o32 与 MIPS32r2 的 ELF32 可执行文件和可重定位目标文件；MIPS16 共享镜像另有受限配置。ELF64、n32／n64、microMIPS、特定机型变体、FP64、NAN2008 与 PSP PRX 均被拒绝。
- 已合并的 PR #1898（对应议题 #1620）接受缺少 ABI 记录的旧式 ELF32 可执行文件：文件头为 EF_MIPS_ARCH_32 或 32R2、ABI 字段未指定，且经检查确无 ABI 标志记录。它固定 MIPS:<LE|BE>:32:default，并在导入后核对 Ghidra 报告的语言。o32 被记为分析假设而非声明事实，浮点 ABI 语义仍未验证。
- 可选的真实分析引擎验证流程需自行提供支持 MIPS 目标的 Clang、LLD、GNU readelf 或 MIPS 交叉 binutils，以及 Ghidra。流程以两种字节序构建项目自有的测试样本但不执行，并将指令字节、符号、语言与重定位结果同独立的 readelf 信息对照。指南说明，能生成伪代码或解码结果一致，并不证明运行时、延迟槽或完整浮点语义。
- 议题作者报告曾在四个真实 MIPS32 小端固件 ELF 上检验本地补丁，其函数入口与另行生成的 32 位 Ghidra 导出一致，并报告其中一个镜像在自动选择语言时丢失 5,250 个函数中的 400 个；这些文件未公开。一位 PR 审阅者测试了改写文件头的 OpenWrt 内核与 BusyBox 构建，用 Capstone 交叉核对，且未找到未经改写的公开无记录文件。
- REA 声明 MIT。Ghidra、编译器、binutils 与所分析的固件仍有各自条款，作者结果所用的固件也未提供。

## 一手来源

1. <https://github.com/morluto/rea/blob/c12d9eda87aa5a022ee7e18ea96d8d03bfd12e96/docs/ghidra-mips.md>
2. <https://github.com/morluto/rea/issues/1620>
3. <https://github.com/morluto/rea/pull/1898>
4. <https://github.com/morluto/rea/blob/c12d9eda87aa5a022ee7e18ea96d8d03bfd12e96/scripts/verify-real-ghidra-mips.mjs>
5. <https://github.com/morluto/rea/blob/c12d9eda87aa5a022ee7e18ea96d8d03bfd12e96/tests/conformance/ghidra/mips-fixture.mjs>
6. <https://github.com/morluto/rea/blob/c12d9eda87aa5a022ee7e18ea96d8d03bfd12e96/src/ghidra/GhidraMipsProfile.ts>
7. <https://github.com/morluto/rea/blob/c12d9eda87aa5a022ee7e18ea96d8d03bfd12e96/LICENSE>

## 同分区更多条目：文档与学习资源

- [通过 Ghidra 静态分析 PSP ELF](https://awesomerea.org/zh/resources/rea-ghidra-psp-guide/index.md) · 文档
- [借助 Ghidra 恢复 NativeAOT 元数据](https://awesomerea.org/zh/resources/rea-ghidra-nativeaot-guide/index.md) · 文档
- [REA & AI RE Tools Guide（非官方）：REA 安装、接入与故障排查社区指南](https://awesomerea.org/zh/resources/reaguide-unofficial-rea-guide/index.md) · 学习资源
- [OpenSecurityTraining2](https://awesomerea.org/zh/resources/ost2/index.md) · 学习资源
- [pwn.college：逆向工程](https://awesomerea.org/zh/resources/pwn-college-re/index.md) · 学习资源
- [逆向工程入门](https://awesomerea.org/zh/resources/re-for-beginners/index.md) · 学习资源

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
