FinalFantasy 10 解析


小倉のベスト電器で発見した、PS2のセーブデータをパソコンに保存する機械を買ってきたので、早速FF10のセーブデータをパソコンに取り込んで解析してみました。
FF9には手計算では解析不可能なチェックサムが掛かってたのに、今作は何故かチェックサムが掛かっていなかったのでデータ解析がとても楽でした。
自分の見方としては、今までのセーブデータは1ブロック(約15Kバイト)だったけど、FF10は63Kバイトと約4倍近く増えているので、チェックサムを入れるとデータが壊れる危険が4倍増えるって事と、DQ7の様に無理矢理データを圧縮して保存させているわけではないからチョットぐらいデータが壊れても問題ないって事で、今回は外しているのかもしれません。
↑の事を分かりやすく説明すると、DQ7のセーブ中にPSのコンセントを抜いたら100%データが壊れて読み込めないけど、FF10で同様のことをした場合は(99%バグると思うけど)読み込み可能って事です。
(↑間違ってました。↓参照)

↑ 2001/11/30 訂正
PS2のメモリーカードは、メモリーカード自体にXOR形式のチェックサムが掛かってます〜。
PS2メモリーカード吸い出し機がメモリーカード側の計算を自動でしてくれるので、データ改造する時もこのチェックサムは全く気にする必要が無かったから〜すっかり忘れてました。
だから上記のような事をしたら、(FF10のソフトに対してのチェックサムは無いから、どんな値でも通過できるんだけど)、PS2のハードがメモリーカードに対して壊れているデータが含まれるって認識するので、100%読み込み不可能です。ゼッタイに真似しないように〜〜〜!!!!

下手したらカード内の全てのデータが消えます!
PS1でチェックサムの掛かってないソフトなら実際可能です。(例。Tales of Destiny)


チェックサムに関して(知らない人のために)


チェックサムとは誤り防止符号のことで、9割以上のソフトのセーブデータにはこれが掛かっています。これのおかげでバグることなくゲームを楽しむことができるのです。
プレステを含む全てのゲーム機は2進数でデータを扱ってます。セーブデータも当然2進数で、1と0の並びでゲームの情報を記録してます。しかし、もし強い衝撃等により1って保存されてるデータが0になってしまった場合、このデータをそのままロードしてしまったらゲーム上でバグが出てしまう可能性が非常に高くなります。
そこで最も簡単なチェックサムとしては、セーブ中にデータ内の全ての数の和が0か1か記録しておき、ロード中にこの値が一致しなかったら壊れているデータと認識させ、そのデータをロードさせないようにしてるのです。(実際はこんなに単純ではありませんがね)

一見すると、データを保護する上で役に立ってる様に見えるチェックッサムも、解析する側にとっては超迷惑な代物でして、セーブデータを書き換えただけではチェックサムの値が違ってくるので、プレイステーション等でロードすると「データが壊れています」って表示されてロードできません。改造データをロードさせるためには、チェックサムを解析し、計算式を算出して改造したデータに応じてチェックサムの値も書き換える必要があるのです。


チェックサムを無視した場合の例。

チェックサムの値が違うので、キャラ情報、時間、エンカウント数は表示されていても、壊れているデータとみなされてロードできないという事態に…。


それでは解析本題へ。
データ解析の基本中の基本。まずはお金の保存アドレスを突き止める事〜。
電卓使って、現在のお金の額を16進数に直して、下位バイトから検索。引っかかったアドレスを全部FFで埋めちゃえば完璧!強制的に補正されて一気に持ち金が999999999ギルに。
(999ギルなら16進で03E7だからE703で検索)
ま、FF10は直接ステータスを改造しなくても、お金さえあればどんな敵(ボス)でも一撃なので…。お金を9億9999万9999ギルにしちゃえば無敵だし(笑)
用心棒に1億ギル払って斬魔刀を決めてもらったり、モンスターさんに賄賂を数百万ギル渡してレアアイテムをもらったり…(改造しちゃえばどんな物も手に入るからあんまり意味無いんだけど〜)。正義の召喚士様ご一行がする行動じゃないですね(笑)


吸出しソフト。

バイナリエディタで書き換え中。(モンスター捕獲数)
16進数で0A=10進数の10

次に、FF10で最強の敵「全てを越えし者」と戦うためのモンスター集め(全モンスター×10匹捕獲)がとっても面倒だったので、全部10匹捕獲したことにするため、上の画像のように、捕獲済みデータを入力しちゃいました(笑)

さらに、スフィア板を全部発動させた自分のデータでは(HPが20000程度)苦戦を強いられそうだったので、HPをMAXの99999に書き換え。(注、HP限界突破のアビリティが無いと改造してもMAXは9999)

改造データでも、「全てを超えし者」には苦戦しました。HPがMAXの99999でも、世界最後の日を使われたら全体99999ダメージで一瞬にして全滅…(爆)
(これだと改造した意味がない!)
保険として全員にリレイズをかけて、クイックトリックの連発。敵のターンになる直前に召還獣を出して盾になってもらって倒しました〜。
クイックトリック&召喚獣無しだと、倒すのはさらに一苦労。オートヘイストを使っていても、リレイズ+通常攻撃1回で敵の攻撃がくるから…。倒すのに40分もかかりました。StarOcean2のイセリア・クイーンの2時間よりはマシですけどね…。
ま、面倒なら用心棒さんに1億ギル払えば真っ二つにしてくれるから楽だけど〜(笑)


そのうち、最初から最強データを使ってFF10をやってみようと思います。本来は数ターンかけて倒すイベントの敵を一撃で倒してしまったことで起こる弊害なんかも載せていきま〜す(笑)。

最後に…
チェックサムが掛かってない=間違って入力したデータもそのまま読み込む可能性があるってことなので、改造は慎重に! 1バイトでもデータがずれてたら、バグってとんでもないことになっちゃいますよ〜。



戻る