文档

通过 Ghidra 静态分析 PSP ELF

说明 REA 针对静态 PSP ELF 可执行文件的受限 Ghidra 配置:Allegrex 指令、PSP 加载与调用约定交由使用者安装的 ghidra-allegrex 扩展处理,同时沿用 REA 的命令行、MCP、证据与快照流程。它仅在 Linux x64 上接受一种 PSPSDK 文件头与 ABI 声明,并在自行构建的测试样本上验证选定的静态事实,不涉及商业游戏或 PRX 模块。

使用条件与局限

  • 初始配置只在 Linux x64 宿主上运行,接受小端 ELF32 可执行文件,要求文件头为 PSPSDK 声明 e_flags 0x10a23001,并有经检查的版本 0 ABI 标志记录,与文档列明的单精度浮点 Allegrex 声明一致。PRX、可重定位或共享镜像、PBP/ISO/CSO 容器、模拟执行与实时代码覆盖均不在范围内;缺失或不同的声明会被拒绝,文件名也不能用来识别目标。
  • 需在所选 Ghidra 发行版内安装兼容的 ghidra-allegrex 扩展;REA 从不下载、安装、重新构建或内置该扩展,并在启动前为其文件计算指纹。公开的兼容组合为 Ghidra 12.1.3、扩展 v21.4、PSPDEV v20261001 与 JDK 21;其他仅通过元数据检查的构建不被视为经过独立验证。缺少前置条件时返回 PSP_EXTENSION_UNAVAILABLE,不会回退到其他分析引擎。
  • 验证使用真实 MIPS 验证脚本的 PSP 模式,需自行提供 PSPDEV 工具。由 tests/conformance/psp 构建的维护样本只做静态分析、不执行,并与 PSP GNU 工具的观察结果对照:已知函数、一次直接调用、一个立即数、BITREV、一个全局字、快照重新打开,以及 A-B-A 目标切换。已合并的 PR #1599 报告在较早的贡献分支版本上通过了真实 Ghidra 验证,并说明该次运行并未重新验证最终版本。
  • 这些检查只是选定的静态事实,不代表行为等价、完整 VFPU 语义或对商业 PSP 可执行文件的普遍兼容;该扩展也未完整模拟 VFPU 前缀效果。未使用或重建任何商业游戏数据,议题 #1330 仍处于开放状态。REA 声明 MIT;ghidra-allegrex、Ghidra、PSPDEV 与所分析的可执行文件仍有各自条款。本合集未运行任何内容。

关于此条目

类型
文档
类别
REA 官方:调查指南
关联
REA 官方文档
目标
二进制 · 游戏

来源复核于

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

一手来源

  1. docs/ghidra-psp.md GitHub · morluto/rea · 修订 c12d9ed
  2. https://github.com/morluto/rea/issues/1330
  3. https://github.com/morluto/rea/pull/1599
  4. scripts/verify-real-ghidra-mips.mjs GitHub · morluto/rea · 修订 c12d9ed
  5. src/ghidra/GhidraPspProfile.ts GitHub · morluto/rea · 修订 c12d9ed
  6. src/ghidra/GhidraPspExtension.ts GitHub · morluto/rea · 修订 c12d9ed
  7. tests/conformance/psp GitHub · morluto/rea · 修订 c12d9ed
  8. LICENSE GitHub · morluto/rea · 修订 c12d9ed