SDDATA.BINにまつわる独り言

しばらく前から取り組んでいたのだけれど、XMBのセーブデータ管理上は表示されるのに起動すると読み込んだ後にデータ破損してるから削除しなさいと怒られ続けてた。
今日になってようやく気がついた。
恥ずかしい話だが、システムバージョン表示も5.00M33だったからうっかり忘れていた。
PSPのFWが5.03TDPだったことを。

どうりでgripshiftのexploitが破損データになるわけだ。大失敗。

ということで、Gripshift日本版でなんとかしてHello Worldでも表示できないものだろうかと試行錯誤してみた。
唯一暗号化されていないデータが存在するのはUS版のみ。
US版のspartaのデータと、オリジナルデータでなにが書き変わっているのかちょっとのぞいてみた。
まずはオリジナルとspartaの復号化したデータでどこが違うのかから見ていくとしよう。

…ULUS10040.binもSDINFO.BINもSDDATA.BINも全部CRCが違う。

容量が小さいのから見ていくか。
まず2kBのSDINFO.BINから。

SDINFO.BINを見ると、
00000080:から8バイト分は、たぶんXMB上のセーブデータ管理で表示されるプレーヤーの名前部分かな?
US版はMATIAZって表示されるし、1% COMPLETE : 5 CREDITSもそうだし。日時はファイルのタイムスタンプだろうか。
JP版はMAMOSUKEって入れたけど、同じアドレスに入っているから間違いなさそう。
ということは、SDINFO.BINは関係なさげ。

次に同じく2kBのULUS10040.bin。
00000074から0000008Bまでが違う。
spartaのは
90 CC E4 08 00 70 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00
オリジナルは
90 CC E4 08 D4 63 00 00 D4 63 00 00
47 52 49 50 53 48 49 46 54 E2 84 A2

オリジナルのはGRIPSHIFTナントカって文字が入っているのにspartaはなくなってる。
000063D4ってのはSDDATA.BINのデータの最終アドレスだ。
spartaの00007000ってのは存在しないアドレス。これは何だ?

あとはオリジナルは00000100から8バイト分プレーヤーの名前(MAMOSUKE)があるのにspartaにはそれもない。
00000580から000005C8にもなにかデータがあるけれどオリジナルは00だけ。
とにかくspartaはデータが00で埋め尽くされている。
気になるのは00000078から2バイト分がオリジナルのD4 63に対してspartaが00 70になっていることくらい。

なぜ00で埋められているのか、それが関係あるのかもわからない。
70の秘密さえわかってしまえばたぶんULUS10040.binはなんとかなる。
日本版の場合はファイル名はULJM05089.binだ。

さて、セーブデータ本体の25kBもあるSDDATA.BIN。
名前の開始アドレスは日本版でも同じなことは分かっている。
でも日本版のSDDATA.binだとthis si spartaaaaaaの”a”の数を同じだけ入れようとするとUS版にはデータがないところにすでに何かデータが入っていてだめなんだよね。
同じだけ”a”入れても、データ読み込めてフリーズもせず、なぜか音楽(BGM)だけなくなるし。(効果音は出る)

日本版はデータをオフセットさせないとだめかなぁ。
this is spartaaaaaaaaaaの間にUS版には謎のアドレスが存在してる。
000000A9から4バイト分。
50 CD E4 08

そういえばMaTiAz氏が
The return address is located at offset 0xA9 in the file
って言ってたっけ。
あと、ヒントになりそうなコメントとしては
In this poc it points to 0x08E4CD50 (which is only a few bytes after the return address), and the code starts at 0xCC in the file.
あとたしか、言語によって戻りアドレスが違うとか…

0xCCからコードが始まるって書いてあるけど、000000CCから始まるのはたぶんこの68バイト。
00 44 02 3C 21 08 40 00
FF FF 03 24 00 00 43 AC
04 00 42 24 FD FF 00 10
00 00 00 00 00 00 00 00
00 00 E4 C2 00 00 00 00
00 00 00 00 9A F9 15 44
00 00 00 00 00 00 00 00
00 00 00 00 9A F9 15 44
9A F9 15 44

いや、たぶんこれだけなわけがない。

でも9A F9 15 44っていうのはSDDATA.BINの中に相当数存在してる。
NULLのところはFFで埋まっているのだけれど、その前後に必ず9A F9 15 44があるから多分無関係。だから68バイトではなくて24バイト?じゃE4 C2って関係ないのか?

ていうか、MaTiAz氏のUS版は1%しかゲームが進んでいないはずなのに、いままもすけがオリジナルを復号化したのは2%進んだデータだからよりデータ量多いはずなのに、オリジナルはFFで埋め尽くされているところにspartaはことごとくデータが埋まっている…
どれかがバッファーオーバーフローさせた後実行されるコードなんだろうけど、特定できない。やっぱりバイナリだけでなんとかなるものじゃないか…

不思議なのが、このSDDATA.BIN、オリジナル日本版は同じ2%くらいの達成率データでもFFで埋まっているところが全然ない。
必ず何か書かれてる。

どうもUS版はFFで埋まっているところ=NULLで使っていないエリアに実行コードが書かれているくさいけど、日本版には同じような空きエリアがない。

EU版や韓国版のSDDATA.BINを見てみたいけれど、公開されているのは暗号化されたデータばかり。
そもそも唯一US版だけが初期に暗号化されていないデータも配布していたのでこうして中をのぞきこめるわけだが、EUと韓国でFFで埋まっているところがどうなっているのか見てみたい。
すでに現時点で3種類のexploitセーブデータがあるわけだが、比較すればなにか分るかも。

ここで問題が。
EU版でUMDではなくISOファイルを使ってやってみた。やってみたがフリーズして電源が落ちる。
pongもボンバーマンもRtypeも落ちる。起動しない。
起動しないことにはデータを復号できない。名前をバッファーオーバーフローしないように戻せばフリーズはしないのかな?でもそんなことしたらコード部分をオリジナルデータで上書きされるかも。
韓国版なんでそもそも手に入らないし、いい案だと思ったけど比較は無理だ。
ちなみにUS版でもHomebrew起動しない。UMDでないとだめなのか?それともCFWだからか?愛着のあるPSP-1000使ったせいか?だめだ、ワカンネ。

それにしてもなぜ日本版はFFで埋め尽くされていないのだろう。いったい何が書いてあるのだろう。素人ではやっぱりハッキングは無理か。
だめもとでPSPのSDKとか入手してみたけど、さっぱり使い方がわからない。
逆アセンブラみたいなものあればなんかわかるかもしれないけど、PSPセーブデータ用のものがあるのかどうかもわからない。
らぼこ使ってもセーブデータを改造するわけじゃないしな。
DSならNDSDIS2とかあるんだけどな。

ふといやな予感がした。
もしかすると、日本版だけ放置されてるのは、誰も手をつけてくれないのではなくてFFで埋まってるところがなくてexploitを実行できるコードを記述する空きエリアがないせい?
だとしたら日本はお先真っ暗?

[本日の格言]
素人は手を出すべからず ひたすら待つべし

やっぱり誰か、頼む。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

『SDDATA.BINにまつわる独り言』へのコメント

  1. 名前:gta 投稿日:2009/02/16(月) 12:56:02 ID:589fc6ab0 返信

    SECRET: 0
    PASS:
    俺はさっぱり分からないので読むことだけしか
    できませんが、まもすけさんも色々試してみたんですね。
    日本語版のみ何もアクションが無いのは不自然ですよね。
    何か理由があるのかなぁ。
    そういえばバグのみ分かって動きの無い
    バーストフォースが届きましたが
    封を開けてません(笑)

  2. 名前:まも助 投稿日:2009/02/16(月) 20:32:48 ID:589fc6ab0 返信

    SECRET: 0
    PASS:
    gtaさんこんばんは。

    ヒントがどこにも無いのでさっぱりです。
    韓国版の作り方が一番参考になりそうですが、LAN.STフォーラムにも当然詳しい話は書いてくれていないのでお手上げです。

    >バーストフォースが届きましたが
    >封を開けてません(笑)

    …同じく。

    憂さ晴らしに真面目にあいつのゲームレビューでもしてやろうかしら…あ"〜そんなことやりたくない

    どうでもいいですが、Youtubeにこの前MaxPowerDigitalバッテリー動画うpしたんですが英語でコメント載っけたら外人さんからばっかり書き込み来て大変ですw
    今度から日本語オンリーで書くか。