なかなか家にいれなかった先週、移動中はPSP片手にMHP2Gをずっとやってました。そして今回も改クエつくれないものかと、いろいろ研究中・・・・ (´・ω・`)
今回は、ものすご~く、プロテクトかけてきてますねぇ・・・・orz
Visual Studio 2008つかって、メモリーダンプなどの16進数みて頭の中でパズルしているだけ(逆アセンブルなどの手法は禁じ手なので使えない)なので、トライ&エラーでダンプみながら進めているわけですが・・・
どこまでプロテクトがかかっているか(仕様かもしれないが)、ちょっと解説
①Labokoがそのまま使えないように、暗号化キー(Gamekey)が共通のものではない
②従来の改クエが簡単に作成されないように、さらに暗号化データで保存されている
③マスターディスク(いわゆるISO)内も、暗号化かけられていてダンプしてもわけわかめ
※直接ダンプして抜き出しがかなり厳しい
④ゲーム中、読み込みのバッファは再利用されているので、ダンプしてメモリーのバイナリサーチしてもなかなか目当ての文字列などが見つかりにくい
※ダンプするタイミングが重要。MHP2では、再利用はほとんどなされていなかった。
①に関しては解決済み
そして、Labokoで素のまま復元と暗号化しても問題なし。
②がかなり面倒。というかコレが一番の肝。
③④からMHP2ndでやった手法でファイルダンプみただけで判読するのは、ちょっと㍉
というわけで、②をどうするかに行き着いて、ここでとまるわけですが(´・ω・`)・・・
現状、CD1Fで始まるキーが①の正解らしいというのは、複数のセーブをこのキーで抽出したときに見られるパターンがあるので、現状では確定。そして、そのパターン解析から、次のようなセーブ構造になっているのではと、とりあえずダンプの差みることから予想。
①0x00000000 - 0x00000FFF[0x00000020 DL特典等がはいっている気がする]
②0x00001000 - CHAR Save #1
③0x0006c100 - CHAR Save #2
④0x000D7200 - CHAR Save #3
⑤0x00142300 - DL Quest #1
⑥0x00148b10 - DL Quest #2
⑦0x0014F320 - DL Quest #3
⑧0x00155B30 - DL Quest #4
⑨0x0015c340 - DL Quest #5
⑩0x00162b50 - DL Quest #6
⑪0x00169360 - 0x0016a0df※0x00でうめられてるみたいな気がする
⑫0x0016a0e0 - 0x0016a0ff暗号化用?/SUM?
だが、ここまでは、データのパターンからある程度わかったのだが、一番の問題点。暗号化されたデータのパターンが、セーブするたびに異なるということ。つまり、暗号化キーが毎回ことなっていることが、解析を非常にやりにくくしている。だが、ヒントはあった。そのヒントとなるパターンがみられたから、上記のような構造であると予想されるわけだが・・・
そして、複数のセーブパターンから上記の構造がはじきだされるから、GamekeyはCD1Fから始まるキーで確定だと思われる。
現状ここで手詰まり。というか、いちいちセーブしてLaboko複合して、ダンプみて・・・って、やってる時間ないwwwww
まぁ、本編はもちろんむっちゃ面白いが、こういう暗号化パズルも面白いな(´・ω・`;)
時間とれれば、このパズルとこうともっと試しては見るが・・・・
現状、改クエを動作させれそうなタイミングは、公式DLクエを受けたあと、CWCでクエスト用メモリー部分書き換えてから、クエ開始するようなパターンか・・・
(未チェックだが、いままでのダンプ見る限りできる可能性が一番高いみたいだ)
内容がアレなので、コメント/トラックバックは不可にしておきます。