{
  "added_at": "2026-10-18",
  "additional_evidence_urls": [
    "https://github.com/morluto/rea/issues/1620",
    "https://github.com/morluto/rea/pull/1898",
    "https://github.com/morluto/rea/blob/c12d9eda87aa5a022ee7e18ea96d8d03bfd12e96/scripts/verify-real-ghidra-mips.mjs",
    "https://github.com/morluto/rea/blob/c12d9eda87aa5a022ee7e18ea96d8d03bfd12e96/tests/conformance/ghidra/mips-fixture.mjs",
    "https://github.com/morluto/rea/blob/c12d9eda87aa5a022ee7e18ea96d8d03bfd12e96/src/ghidra/GhidraMipsProfile.ts",
    "https://github.com/morluto/rea/blob/c12d9eda87aa5a022ee7e18ea96d8d03bfd12e96/LICENSE"
  ],
  "category": "workflow-guides",
  "description_en": "Documents REA’s Ghidra lane for MIPS ELF executables, relocatable objects and MIPS16 shared images, including a pinned 32-bit language for recordless legacy firmware executables that Ghidra would otherwise import as 64-bit. Admission is bounded by declared header and ABI-record facts, and verification compares source-owned fixtures with independent readelf output rather than executing or rehosting firmware.",
  "description_zh": "说明 REA 通过 Ghidra 分析 MIPS ELF 可执行文件、可重定位目标文件与 MIPS16 共享镜像的流程，包括为缺少 ABI 记录的旧式固件可执行文件固定 32 位语言，以免 Ghidra 将其按 64 位导入。准入以文件头声明和 ABI 记录为界；验证将项目自有的测试样本与独立的 readelf 输出对照，而不执行或重新托管固件。",
  "entry_url": "https://awesomerea.org/resources/rea-ghidra-mips-guide/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/rea-ghidra-mips-guide/",
  "evidence_url": "https://github.com/morluto/rea/blob/c12d9eda87aa5a022ee7e18ea96d8d03bfd12e96/docs/ghidra-mips.md",
  "group": "rea",
  "id": "rea-ghidra-mips-guide",
  "json_url": "https://awesomerea.org/resources/rea-ghidra-mips-guide/record.json",
  "kind": "documentation",
  "markdown_url": "https://awesomerea.org/resources/rea-ghidra-mips-guide/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/rea-ghidra-mips-guide/index.md",
  "name": "MIPS ELF analysis through Ghidra",
  "name_zh": "通过 Ghidra 分析 MIPS ELF",
  "record_type": "resource",
  "relationship": "official-documentation",
  "requirements": [
    "Needs a caller-installed Ghidra and compatible JDK on a supported Linux or macOS host; Windows Ghidra P0 does not admit MIPS, and Hopper/IDA gain no MIPS support. The lane does not execute MIPS code or rehost firmware. The standard profile admits ELF32 executables and relocatable objects declaring o32 and MIPS32r2; MIPS16 shared images have a separate bounded profile. ELF64, n32/n64, microMIPS, machine variants, FP64, NAN2008 and PSP PRX are refused.",
    "Merged PR #1898, for issue #1620, admits recordless legacy ELF32 executables with EF_MIPS_ARCH_32 or 32R2, an unspecified ABI field and an inspected absence of ABI-flags records. It pins MIPS:<LE|BE>:32:default and checks the language Ghidra reports after import. o32 is recorded as an analysis assumption, not a declared fact, and floating-point ABI semantics stay unverified.",
    "Optional real-provider lanes need caller-supplied Clang with MIPS targets, LLD, GNU readelf or MIPS cross-binutils, and Ghidra. They build source-owned fixtures in both byte orders without executing them, comparing instruction bytes, symbols, languages and relocations with independent readelf facts. The guide states that pseudocode presence and decoding agreement do not establish runtime, delay-slot or complete floating-point semantics.",
    "The issue author reports gating a local patch on four real MIPS32 LE firmware ELFs whose function entries matched separate 32-bit Ghidra exports, and 400 of 5,250 functions lost on one image under auto-selection; those files are not public. A PR reviewer tested header-edited OpenWrt kernels and BusyBox builds with Capstone cross-checks and found no unedited public recordless file.",
    "REA declares MIT. Ghidra, compilers, binutils and analysed firmware keep their own terms, and the firmware behind the author’s results is not supplied."
  ],
  "requirements_zh": [
    "需要使用者自行安装 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 与所分析的固件仍有各自条款，作者结果所用的固件也未提供。"
  ],
  "targets": [
    "binary",
    "firmware"
  ],
  "url": "https://github.com/morluto/rea/blob/main/docs/ghidra-mips.md",
  "verification": "source-reviewed",
  "verified_at": "2026-10-18"
}
