讓一顆1000次重複寫入的EEPROM撐到最後,是這次破解能成立的關鍵。開發者DiscoStarslayer在Bluesky貼文中公開,他與協作者Libby找到的漏洞,終於把初代「胖」PlayStation 2負責光碟驗證與大部分安全機制的SPC970 MechaCon晶片firmware完整讀了出來——這是這顆晶片在2000年誕生後,第一次有人看到它裡面的程式碼。
在此之前,有一群人花了大約四年時間,用更慢的方式硬剝晶片封裝、直接讀取內容,但只能拿到粗糙不完整的dump。Libby找到的漏洞換了一條路:先開啟一個EEPROM設定寫入流程,告訴晶片接下來要寫入的資料區塊數量是零,讓晶片內部的計數器發生underflow;接著送出超過緩衝區容量的資料,讓多出來的部分溢出到儲存EEPROM寫入任務的RAM區域,進而覆寫該任務的來源位址,把它指向晶片自己的ROM。結果就是MechaCon誤把自己的256位元組firmware複製進EEPROM,之後PS2可以用標準指令把它讀回來。重複這個過程大約1000次,完整256KB的firmware映像檔才拼得出來,存進隨身碟。
問題是EEPROM沒有wear leveling,寫入壽命也遠低於flash,每dump一次都在消耗它的壽命。dump工具因此會先備份EEPROM內容,事後逐字還原,並比對晶片開機時的checksum程序做確認。即便如此,Libby原始版本的dumper文件仍寫明風險:這個過程可能讓PS2「無法正常運作,或需要硬體層級的維修」,使用者得自行承擔。
22組映像檔補上了MechaPwn漏掉的拼圖 所有成果已經上傳GitHub,包含22組firmware映像檔,涵蓋從2000年日本限定的SCPH-15000到2002年39000系列的胖PS2,另外也涵蓋使用同一顆晶片的Namco System 246與256街機主板。2003年之後改用的「Dragon」版MechaCon晶片,其實早在2021年就已被讀出,一個月後催生出讓PS2解區、能讀備份光碟的MechaPwn漏洞。但MechaPwn的README當時就寫明,沒有用上Dragon晶片的早期機種不支援、也不計畫支援——這影響了2000到2003年之間大約20個型號。這些早期機器雖然還能靠記憶卡與硬碟漏洞跑備份,但晶片層級始終無法解鎖,因為沒有人看得到它的程式碼,直到現在。
由於PS2的遊戲光碟本身沒有加密,這次的firmware dump不會讓任何東西「被解鎖」用於破解遊戲。它真正曝光的是Sony「MagicGate」記憶卡加密機制的程式碼,以及KELF這種PS2用來從光碟與記憶卡開機的可執行檔格式背後的邏輯。貢獻者uyjulian表示,這些資訊未來有機會餵進「完整系統層級的low-level模擬」。目前PCSX2等模擬器並不會真的執行MechaCon的程式碼,而是用C++重新實作它的指令集,再讀取一個1KB的NVRAM檔案與四位元組版本號當替身資料。DiscoStarslayer自己維護一個名為Reliquary的PCSX2分支,專攻PS2的驗證流程,其README也承認,當安全檢查需要比對主機身分時,產生出來的替身資料無法取代真正的硬體數值。
下一步的目標,照uyjulian的說法,是找出類似MechaPwn那種能解鎖SPC970的漏洞,但進度不會像Dragon晶片那麼快。當年研究者只花一個月就攻破Dragon,是因為Sony把它設計成可以接受firmware更新,等於留了一個可以被找到的弱點。SPC970完全不是這樣——它的程式碼在2000年就燒進mask ROM,此後從未更動過,也就沒有同樣的更新機制可以下手。