最近多いですが、ファンタシースターポータブルのセーブデータのバグについて紹介します。
(参考
wololo氏ブログ)
LibTiffクラッシュで有名なwololo氏がファンタシースターポータブルのセーブデータがexploitになるか試しています。
〜解説〜
まず、wololo氏が行った実験について説明します。
wololo氏が行った実験は、Gripshiftと同様にバッファーオーバーフローを起こして、任意のプログラムを実行させようとするものです。
⇒GripShiftについては
こちらからQ.そもそも、オバーフローとは?
A.PSPに限らず、全ての電子機器は、まず、プログラム通りに物事を進めていきます。
その際、PSPで説明すると、ゲームのプログラムをメモリスティックから読み込み、アクセス速度の遅いMSより、CPU内部のメモリに格納して実行していき、目印として、X行目に
戻る、
進むといったデータを入れておきます。。
CPUのメモリは限られているので、超えた場合は、始めに読み込んでいたものが抜け落ちていきます。抜け落ちてしまうと、あるプログラムのX行目を読み込んでいたデータが消えるので、戻る場所がなくなり、次のプログラム移行します。
これが
バッファーオーバーフローです。
(若干、語弊があるかもしませんが、大体の意味を捉えてください。
間違っていたら、訂正をコメントにてお願いします。)
そこで、一旦上のことを理解したうえでプログラムについて説明します。
C言語の含む多くのプログラム言語はメインルーチン、サブルーチンなどから構成されています。
簡単な流れを書くと(ファンタシースターポータブルについて)
PSPでゲーム実行
for(;;) { //ループ
file.fdpをロード(チェック)
⇒ない場合は、繰り返しロード
▲察璽屮如璽人無チェック
⇒読み終えたらメインループに戻る。
A.セーブデータがある場合は自動読み込み
B.ない場合は無視(スキップ)
メイン画面表示
ぁ
始めから」、と「
続きから」を選択
A.始めからの場合は新規でセーブデータを作成
B.続きからの場合はセーブデータ読み込み
ゥ押璽爐離襦璽船鶻始
}
XMBのルーチン
〜下準備〜
・PSP-3000
・改造セーブデータ(
DL)
・ファンタシースターポータブル(
体験版DL)
〜導入手順〜
‐紊茲蟆造セーブデータをダウンロードする。
圧縮されているので、解凍して、以下のように配置します。
ms0:/PSP/SAVEDATA/ULJM91014/・・・
次に、体験版の人は、以下のように配置します。
ms0:/PSP/GAME/ULJM91014
EBOOT.PBP
file.fbp
XMBより起動します。
サ動すると、ロードした後、画面がおかしくなりますが、Oを押すと、
「このゲームをセーブするには384KB以上...」と表示されます。
はいと押して次に進みます。
Ε灰鵐謄ニューを押してロードすると以下のようになります。

〜参考〜
PSP-1000・・・MainRAM16MB、VRAM2MB、DRAM2MB
PSP-2000/3000・・・MainRAM32MB、VRAM2MB、DRAM2MB
PSPModulePSPDevice〜改変方法〜
,蕕椶海DLする。(GAME150に保存する。)
⊆孫圓垢襪函必要フォルダが作成される。
GamekeyをDLする。
ぅ侫.ぅ襪吠9腓垢襦
GAMEID
.binが、作成される。
以下を参考に変更する。

