日付操作 このゲームは、残りの日数までに色々をこなす タイムリミット付きのゲームですが どうせなら制限無しで遊んでみたいものです まず、日付のワークアドレスを探します こういうゲームの場合、基本的にはお金のアドレスの近くに その他諸々のデータを格納する事が多いので お金のアドレスを頼りに探してみたいと思います お金(コール)のアドレスを探すために PS2解析ではお馴染みの最大値検索をします その結果、最大値は000F423F(999999) チェック個所は002f8580という事が判明しました上限チェックされる数値が格納されているアドレスは lwで値をロードしている参照先である 00F76430 xxxxxxxx どうやらここがお金のアドレスのようです 早速000F423Fを書き込むようにPARに入力します 20F76430 000F423F 〜暗号化〜 1C62E758 144F25CC 予想した通り、所持金がMAXに変更されています ここがお金のワークアドレス確定です 次に周辺のアドレスの数値を変更してみて 日付に何か変化が無いか調べて見ます、すると 10F76434 00000000 〜暗号化〜 4C62E75C 1456E7A5 を入力したら日付が最初の物に固定されています 思惑通り、日付のワークコードを見付ける事が出来ました しかし残り200日くらいになってから 日付を最初の日付に戻してしまった場合 通常、日付は巻き戻ることの無い要素なので 何か不具合が出てしまう可能性があります そこで、プログラム面から操作して 日付が増えないを作る事にしました どうやってプログラムを探すかというと PS2DISで簡単なHBPに似た方法を使います PSのX-Linkなどに実装されているHBP機能に 「値を変化させたらブレイク」 「値をロードしたらブレイク」 「命令を通過したらブレイク」 の3つの機能が付いていますが この「値をロードしたらブレイク」に似た機能を PS2DISで再現する事が可能です 方法は至って簡単「参照先を調べるだけ」です 00F76434のアドレスをスペースキーでマークして F3ボタンを押すだけで探すことが出来ますが この下の画像のように__00f76434というように アドレスが表示されていない場合は参照先は見つかりません (ちなみに、基本解析のアドレスでアセンブルと同じ方法です)
日付は0001刻みで増加しているようなので いくつかある候補の中から 数値のロード後に値を0001加算して 同じアドレスにストアしている場所を探します すると、001439A8でヒットした後の処理を見ると 0001を加算して同じアドレスにストアしています
試しにこの001439ACの加算命令を潰してみます 201439AC 24630000 〜暗号化〜 1C83BAD4 3873E7A5 この状態で調合や遠くまで採取に出てみても 一切日付が進まなくなりました、改造成功です しかし、ここでまた新たに問題点が出てきました それは「やすむとゲームが進まない」という事です これはパッド操作で切り替えるように作らないと 回避出来ないような問題なのですが 肝心のパッドアドレスの探し方については 今の私自身の解析の主力になる方法になので 残念ながら今回は紹介出来ません(汗) (シンボル解析のパッドアドレス特定方とは違う方法です) 時期が来たら公開しようかなと思っています。