工具
ghidra-allegrex PSP Allegrex 处理器模块
面向 PlayStation Portable 所用 Allegrex CPU 的 Ghidra 处理器模块,由 Ghidra 的 MIPS 模块衍生而来。它补充了 Allegrex 特有指令、VFPU 指令的反汇编与基础反编译、PSP 调用约定,以及可识别 PSP 可执行文件的 ELF 加载器;加载器会处理 PSP 特有的 A 类和 B 类重定位节,并支持导入后重新设定基址。附带的脚本可导入和导出 PPSSPP 的 .sym 函数标签文件,另有导出器可把内核模块写成可供链接的可重定位目标文件。
- 目标
- 二进制 · 固件 · 游戏
- 类别
- 游戏分析工具
- 关联
- 基础工具
- 来源复核于
使用条件与局限
- 审阅时的最新发布版为 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。另外,本合集收录的 REA PSP 静态 ELF 指南把它作为需由使用者自行安装的扩展,并将 v21.4 与 Ghidra 12.1.3 配套使用。
关于此条目
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · kotcrab/ghidra-allegrex · 修订 abcf976
- README.md#L73-L81 GitHub · kotcrab/ghidra-allegrex · 修订 abcf976
- CHANGES.md GitHub · kotcrab/ghidra-allegrex · 修订 abcf976
- build.gradle GitHub · kotcrab/ghidra-allegrex · 修订 abcf976
- .github/workflows/build.yml GitHub · kotcrab/ghidra-allegrex · 修订 abcf976
- ghidra_scripts GitHub · kotcrab/ghidra-allegrex · 修订 abcf976
- LICENSE GitHub · kotcrab/ghidra-allegrex · 修订 abcf976
- https://github.com/kotcrab/ghidra-allegrex/releases/tag/v21.5
- https://github.com/kotcrab/ghidra-allegrex/releases/tag/v21.4
- docs/ghidra-psp.md#L28-L37 GitHub · morluto/rea · 修订 c12d9ed