PlayStation 2 最后一片未被完全测绘的安全芯片区域,如今已被成功逆向。

SPC970 MechaCon 固件提取突破
开发者 DiscoStarslayer 近日宣布,已成功从索尼 PlayStation 2 早期机型使用的 SPC970 MechaCon 安全芯片中提取出完整固件。这一成果得益于 Libby 发现的漏洞利用方法。
在此之前,研究人员曾尝试通过剥离芯片封装来读取内部数据,但耗时四年仅获得粗糙结果。DiscoStarslayer 在 Bluesky 上致谢了 Libby 的贡献,指出新方法是基于对芯片配置写入机制的滥用:通过欺骗芯片认为传入的数据批次为空,从而绕过保护机制。
此次破解针对的是使用 SPC970 芯片的 PS2 机型,涵盖从 2000 年发布的日本版 SCPH-15000 到 2002 年的 39000 系列,同时也包括采用相同芯片的 Namco System 246 和 256 街机基板。这些设备是继 2021 年“Dragon”代 MechaCon 芯片被攻破后,PS2 硬件中最后未被读取的部分。
EEPROM 下溢与 ROM 镜像转储
SPC970 芯片将核心代码存储在不可写、不可修补的面具 ROM(Mask ROM)中,仅在独立的 1KB EEPROM 中存储校准和配置数据。为了获取 ROM 内容,“spc970-dumper-union”爱好者团队利用了芯片写入 EEPROM 时的逻辑缺陷。
具体操作如下:攻击者以零块数启动配置写入会话,导致芯片内部计数器发生下溢。当推送的数据量超过七块缓冲区容量时,溢出数据会覆盖存放 EEPROM 写入任务的 RAM 区域。通过将写入任务的源地址指向芯片 ROM,MechaCon 会将固件中的 256 字节复制到 EEPROM 中。随后,PS2 主机可通过标准命令读取这些数据。
重复此过程约 1,000 次,即可将完整的 256KB 固件镜像存入 U 盘。然而,由于 EEPROM 缺乏磨损均衡机制且写入寿命有限,每次转储都会消耗其使用寿命。为此,该工具在执行前会自动备份 EEPROM,并在完成后逐字恢复,同时对照芯片的上电校验和例程检查结果。Libby 的原始转储工具警告称,操作可能导致 PS2 “无法正常运行或需要硬件级维修”,使用者需自行承担风险。
填补 MechaPwn 之前的空白
2021 年,研究人员发布了“Dragon”代 MechaCon 固件图像,一个月后推出的 MechaPwn 漏洞使得后期 PS2 机型能够无区域限制并读取备份磁盘。然而,MechaPwn 的 README 明确指出,旧款游戏机不使用基于 Dragon 架构的 MechaCon,因此不支持该解锁方式。这影响了 2000 年至 2003 年间生产的约 20 个 PS2 型号。尽管这些机器仍可通过存储卡和硬盘驱动器漏洞进行备份,但在芯片层面一直无法解锁。
目前提取出的固件图像本身不足以构建光驱模拟器,但支持模拟芯片功能。由于 PS2 游戏未加密,此次破解并未带来新的游戏解锁能力。不过,固件暴露了索尼“MagicGate”加密背后的代码,为未来的“全系统低级仿真”提供了基础,贡献者 Uyjulian 表示。
现有的模拟器如 PCSX2 并不运行真实的 MechaCon 代码,而是通过 C++ 重新实现相关命令,并从磁盘读取 1KB 的 NVRAM 文件和四字节版本号来替代真实硬件部分。DiscoStarslayer 维护了一个名为 Reliquary 的 PCSX2 分支,旨在针对 PS2 的身份验证路径。他们在 README 中承认,当安全检查涉及控制台身份时,生成的替代数据尚不能完全替代硬件值。
对于 SPC970 而言,首要任务是找到能打开早期游戏机的漏洞。通过 MechaPwn,研究人员得以读取 Dragon 芯片代码并发现索尼让芯片自行更新的弱点。Uyjulian 指出,目标是为 SPC970 实现类似 MechaPwn 或 TonyHax 式的解锁。破解 Dragon 芯片仅花费一个月时间,因为该芯片允许接受补丁;而 SPC970 的代码在 2000 年被嵌入芯片后从未改变,且不具备更新能力,这使得研究突破更为艰难。





