見出し画像

CheatEngineはデバッグツールだ

こんばんは。チョコダン2走者にして趣味で解析をやっている者です。
グリッチハンターにオレはなる。

目標と進捗

目標

write break または read break を使えるようになる。
チョコボのHPや所持アイテムなどの「パラメータ」部分はエミュレータの機能を使ってメモリを直接いじったりして理解できていた。対して、攻撃を受けたときなどの「処理(命令)」部分はブラックボックス化していた(あくまで筆者の感覚でのお話)。
件のbreak point が使えればその辺りの命令部分の解析の足掛かりとなるのでどうしても使いたい。

進捗

noteの筆を執っているということで。出来ましたよ。
もしも同じことを実践したいけれどよく分からない方の為、自分自身の成果を残しておきたいから、後々になって振り返る必要が出たときの為
色々な理由はありますがとりあえず書き記します。

使用アプリ

・no$psx
PS1ソフトを起動させるためのエミュレータ。実は自前でBIOSを用意しなくて良い気軽にセットアップできる代物。PS1ソフトのCD-ROMやCD-IMAGEはご自身でご用意ください。間違っても違法に無料で入手したりしないでください。
このエミュレータは自身の機能でハードウェアブレイクが使えるので単体でもかなりのはたらきを見せてくれます。ブレイクさせた状態でレジスタのPC(プログラムカウンタ)を見れば実行中のプログラムの現在地や整合性をすぐに確認できるのがメリットです。
更に指定アドレスにすぐにジャンプできるのでブレイクポイントを仕掛けたりアドレス内に格納されている値を確認するときにも便利です。

CheatEngine
チート(ゲームにおける不正行為)をするためのツールと思われがちですが、ワタシはこれを有力なデバッグツールとして紹介したい。先に紹介したwrite break , read break が使える他、メモリに格納された値の捜索において便利な機能があったりとパラメータや命令を探すためのツールとしてはとても強力だ、という印象を受けました。
実際、既存のチートコードから命令の位置にアタリをつけたりといった経緯もあるのでチートと解析は密接に関係しています。使用目的がチートだと単なる不正にしかなりませんが内部解析のために使うのであればこれほど有力な存在はありません。
※CheatEngineを初めてダウンロード、インストールする場合は余計なアプリを自身のパソコンに入れないよう注意してください。筆者はインストール方法を誤っておかしなブラウザやセキュリティソフト?まがいの物を勝手に入れ込まれてしまいました。もしもそういった事態に陥ったらタスクマネージャーから見覚えのないアプリを見つけ出したり、インストールした日と同じ日の更新日となっているアプリを設定からアンインストールしたりして自己防衛とクリーンアップを図ってください。

今後の展望

write break , read break を使えるようになったということは、特定の命令が実行されるアドレスが分かるようになったということです。そこから逆算してレジスタの値やスタックポインタなどを本来とは意図しないものに書き換えることができるかを探っていきます。
要はゲームの脆弱性を探るということです。
つまり、ここに来てようやく内部解析(グリッチを探す)スタートラインに立てたということです。
楽しくなってきました。ここから本格的に始めてまいりましょう。


この記事が気に入ったらサポートをしてみませんか?