ファンタシースターポータブル(日本製) バグ発覚? 

最近多いですが、ファンタシースターポータブルのセーブデータのバグについて紹介します。
(参考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以上...」と表示されます。
はいと押して次に進みます。
Ε灰鵐謄ニューを押してロードすると以下のようになります。
img_0484.jpg

〜参考〜
PSP-1000・・・MainRAM16MB、VRAM2MB、DRAM2MB
PSP-2000/3000・・・MainRAM32MB、VRAM2MB、DRAM2MB

PSPModule
PSPDevice


〜改変方法〜
,蕕椶海DLする。(GAME150に保存する。)
⊆孫圓垢襪函必要フォルダが作成される。
GamekeyをDLする。
ぅ侫.ぅ襪吠9腓垢襦
GAMEID.binが、作成される。

以下を参考に変更する。
sparta.jpg

img_0482-300x225.jpg




WebMoney ぷちカンパ

この記事へのコメント

Re: ファンタシースターポータブル(日本製) バグ発覚?

個人的な意見ですが、独自でテストしたところ
まだ、なんともいえないですが、
HOMEボタン押した後の終了メニュー時に、電池アイコンをバグらせることは出来るので、何らか効果あると思います。
(XMBに戻ってもバグったまま、電源落とすと直ります。)
具体的なプロセスが不明で非常に壊れる可能性が高いので、公開出来ませんが、簡単なゲームが出来るようになったら、公開したいと思います。

Re: ファンタシースターポータブル(日本製) バグ発覚?

ファンタシースターはただのバグと書かれてましたね==

コメントをお寄せ下さい

 必須
 必須
 必須
       
 必須
(コメント編集・削除に必要)
(管理者にだけ表示を許可する)

トラックバック

この記事のトラックバックURL
http://psp0kaizou.blog36.fc2.com/tb.php/550-b0d01fbf