{
  "added_at": "2026-11-02",
  "additional_evidence_urls": [
    "https://github.com/kotcrab/ghidra-allegrex/blob/abcf97659260b11a9a4781ff72fff30ede2f073f/README.md#L73-L81",
    "https://github.com/kotcrab/ghidra-allegrex/blob/abcf97659260b11a9a4781ff72fff30ede2f073f/CHANGES.md",
    "https://github.com/kotcrab/ghidra-allegrex/blob/abcf97659260b11a9a4781ff72fff30ede2f073f/build.gradle",
    "https://github.com/kotcrab/ghidra-allegrex/blob/abcf97659260b11a9a4781ff72fff30ede2f073f/.github/workflows/build.yml",
    "https://github.com/kotcrab/ghidra-allegrex/tree/abcf97659260b11a9a4781ff72fff30ede2f073f/ghidra_scripts",
    "https://github.com/kotcrab/ghidra-allegrex/blob/abcf97659260b11a9a4781ff72fff30ede2f073f/LICENSE",
    "https://github.com/kotcrab/ghidra-allegrex/releases/tag/v21.5",
    "https://github.com/kotcrab/ghidra-allegrex/releases/tag/v21.4",
    "https://github.com/morluto/rea/blob/c12d9eda87aa5a022ee7e18ea96d8d03bfd12e96/docs/ghidra-psp.md#L28-L37"
  ],
  "category": "game-analysis",
  "description_en": "Ghidra processor module for the Allegrex CPU of the PlayStation Portable, derived from Ghidra's MIPS module. It adds Allegrex-specific instructions, VFPU disassembly and basic decompilation, the PSP calling convention, and an ELF loader that detects PSP executables and applies the PSP-specific type A and B relocation sections, with rebasing after import. Bundled scripts import and export PPSSPP .sym function-label files, and an exporter writes kernel modules as relocatable object files for linking.",
  "description_zh": "面向 PlayStation Portable 所用 Allegrex CPU 的 Ghidra 处理器模块，由 Ghidra 的 MIPS 模块衍生而来。它补充了 Allegrex 特有指令、VFPU 指令的反汇编与基础反编译、PSP 调用约定，以及可识别 PSP 可执行文件的 ELF 加载器；加载器会处理 PSP 特有的 A 类和 B 类重定位节，并支持导入后重新设定基址。附带的脚本可导入和导出 PPSSPP 的 .sym 函数标签文件，另有导出器可把内核模块写成可供链接的可重定位目标文件。",
  "entry_url": "https://awesomerea.org/resources/ghidra-allegrex/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/ghidra-allegrex/",
  "evidence_url": "https://github.com/kotcrab/ghidra-allegrex/blob/abcf97659260b11a9a4781ff72fff30ede2f073f/README.md",
  "group": "tools",
  "id": "ghidra-allegrex",
  "json_url": "https://awesomerea.org/resources/ghidra-allegrex/record.json",
  "kind": "tool",
  "markdown_url": "https://awesomerea.org/resources/ghidra-allegrex/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/ghidra-allegrex/index.md",
  "name": "ghidra-allegrex",
  "name_zh": "ghidra-allegrex PSP Allegrex 处理器模块",
  "record_type": "resource",
  "relationship": "foundation",
  "requirements": [
    "Latest release at review: v21.5, published 2026-10-25, built for Ghidra 12.2 and requiring JVM 25; the reviewed master commit is that tag. Each release zip targets one Ghidra version, so v21.4 of 2026-08-25 remains the build for Ghidra 12.1.3 and 12.1.4. Extension v19 and later install through Ghidra's File > Install Extensions; v18 and earlier are unpacked into Ghidra's Processors directory.",
    "Source builds set GHIDRA_INSTALL_DIR and run the Gradle wrapper's buildExtension task, compiling Kotlin and Java against the local Ghidra installation with a JVM 25 toolchain. CI builds the extension against Ghidra 12.2 on Ubuntu and uploads the zip; the repository has no automated tests. The two PPSSPP scripts are written in Ghidra's Python 2 (Jython) dialect, and the .sym file comes from the user's own PPSSPP debugging session.",
    "Inputs are PSP executables in ELF/PRX form, kernel modules or raw binaries that the user supplies; the README notes that game executables must already be decrypted, and the repository contains no PSP software or firmware. Raw binaries need the processor and image base set by hand, and some kernel modules need the reboot.bin type B relocation option at import.",
    "The README lists limits: almost every VFPU operation decompiles to a function call such as vadd_q(...), the vpfxs, vpfxt and vpfxd prefix semantics are not modeled, vfim.s shows its half-float operand as an integer, object files cannot be rebased after import, and functions with 64-bit arguments need custom storage because of a Ghidra issue.",
    "Apache-2.0; the README says it is derived from Ghidra's Apache-2.0 MIPS module and that type B relocation parsing is based on prxtool under AFL v2.0. Separately, REA's PSP static ELF guide uses it as a caller-installed extension and pairs v21.4 with Ghidra 12.1.3."
  ],
  "requirements_zh": [
    "审阅时的最新发布版为 v21.5，发布于 2026-10-25，面向 Ghidra 12.2，需要 JVM 25；所审阅的 master 分支提交即该标签。每个发布压缩包只对应一个 Ghidra 版本，因此 Ghidra 12.1.3 和 12.1.4 仍使用 2026-08-25 发布的 v21.4。扩展 v19 及更高版本通过 Ghidra 的 File > Install Extensions 安装；v18 及更早版本需解压后放入 Ghidra 的 Processors 目录。",
    "从源码构建需设置 GHIDRA_INSTALL_DIR，并运行 Gradle wrapper 的 buildExtension 任务，使用 JVM 25 工具链，基于本地 Ghidra 安装编译 Kotlin 和 Java 代码。CI 在 Ubuntu 上针对 Ghidra 12.2 构建扩展并上传压缩包；仓库没有自动化测试。两个 PPSSPP 脚本采用 Ghidra 的 Python 2（Jython）写法，.sym 文件来自使用者自己的 PPSSPP 调试会话。",
    "输入是使用者自备的 ELF/PRX 格式 PSP 可执行文件、内核模块或原始二进制；README 指出游戏可执行文件须为已解密版本，仓库本身不包含任何 PSP 软件或固件。原始二进制需手动选择处理器并设定映像基址，部分内核模块导入时需勾选 reboot.bin B 类重定位选项。",
    "README 列出的限制包括：几乎所有 VFPU 运算都会被反编译为 vadd_q(...) 之类的函数调用；vpfxs、vpfxt 和 vpfxd 前缀的语义尚未建模；vfim.s 的半精度浮点操作数显示为整数；目标文件导入后不能再更改基址；带 64 位参数的函数因 Ghidra 的一个问题需要手动指定参数存储。",
    "采用 Apache-2.0 许可；README 说明它衍生自采用 Apache-2.0 的 Ghidra MIPS 模块，B 类重定位解析参考了采用 AFL v2.0 的 prxtool。另外，REA PSP 静态 ELF 指南把它作为需由使用者自行安装的扩展，并将 v21.4 与 Ghidra 12.1.3 配套使用。"
  ],
  "targets": [
    "binary",
    "firmware",
    "game"
  ],
  "url": "https://github.com/kotcrab/ghidra-allegrex",
  "verification": "source-reviewed",
  "verified_at": "2026-10-27"
}
