チートエンジンのCTが使えない!有効にできないスクリプトの直し方
本来テンプレートを使用してスクリプトを作成した場合、オリジナルコードのコピー(Snippet)が自動で挿入されます。しかしながら、ネット上からダウンロードしたCTはSnippetを削除していることが多く、AOBを修復するのが困難です。この記事ではそんな時に役立つワンポイントアドバイスをご紹介します。
使用するゲームは「英雄伝説 閃の軌跡IV」です。
CTのダウンロードはこちらから
チート名はAlways See Treasure Chests On Map (Portion of Moon Lens Effect)で、
修復するAOBは画像赤枠の「84 C0 44 0F B6 E3 44 0F 45 E6 48 81 C1 68 4D 00 00」です。
まず↑画像のようにAuto Assemblerスクリプトを用意してください。
メインウインドウに戻りスクリプトを有効にした後、Memory Viewer画面に移り、
Ctrl + GでaobTestMemに飛びます。
右クリックからAssembleを選択後、
db 84 C0 44 0F B6 E3 44 0F 45 E6 48 81 C1 68 4D 00 00
と入力します。左端のdbはdeclare bytesの略で「今からバイトを書き込みますよ」という意味です。
これでAOBをアセンブリ言語に変換することができました。
ゲームのアップデートでどのバイトが変わったかを見極めるわけですが、1番怪しいのは684D0000の部分です。ここを?? ?? ?? ??を置き換えてユニークなAOBであることを確かめれば完成です。
84 C0 44 0F B6 E3 44 0F 45 E6 48 81 C1 68 4D 00 00
↓
84 C0 44 0F B6 E3 44 0F 45 E6 48 81 C1 ?? ?? ?? ??
赤枠が目的の命令です。黒字の006A0000はこの記事の最初に作成したAAスクリプトのメモリなので無視してください。スクリプトをオフにすればメモリが解放されて見えなくなります。
AOBの検索方法はこちらの記事をご参照ください。
↑画像のようにAOBを入れ替えましょう。
チートを有効にできるようになり、マップ上にお宝の位置が表示されるようになりました!
補足説明
AOBを修復し検索したときに、アドレスが複数ヒットした場合はブレークポイントを設定し、ブレークしたのが目的の命令です。
例えば、お金を拾うと所持金が9999になるチートがあるとします。
AOBは「7F 11 BA 29 00 00 00 48 8B CE E8 30」で「7F 11 BA 29 00 00 00 48 8B CE E8 ??」に変更すると2つアドレスがヒットしました。ここから両方のアドレスにブレークポイントを設定し、お金を拾った時にブレークしたのが目的の命令です。