チートエンジンの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つアドレスがヒットしました。ここから両方のアドレスにブレークポイントを設定し、お金を拾った時にブレークしたのが目的の命令です。

関連記事

5 Comments

白猫

No title

こんにちは。Cheat Engineについて調べていたところ、こちらのサイトが非常に分かりやすかったので参考にさせて頂いております。

ディスコードにも書き込みをしてしまったのですがCheat Engineに関する質問をさせて頂くことは可能でしょうか?

Memory viewerについて分からない部分が出てきてしまって・・・

お忙しいところ恐縮ですが、もしお時間がありましたらよろしくお願いいたします。

  • 2022/09/30 (Fri) 15:15
  • REPLY
ちーたー

なんでもチート

コメントありがとうございます。
もちろんOKですよ!私がわからない場合はこちらでも調べてみますが、解決しなかったら申し訳ないです。

  • 2022/09/30 (Fri) 20:27
  • REPLY

白猫

お返事ありがとうございます。

お返事ありがとうございます!

私は今、Cheat Engineを使ってPC版のFF7R(ファイナルファンタジー7リメイク)の敵操作チートを試しています。(YouTubeにて海外の方がCheat Engineを使って本来はプレイヤーが操作できない敵キャラクターを操作していました。)

Memory viewerの文字列を変更してPC0002_00_Tifa(名前が4文字のキャラ)をEB0003_00_Reno(同じく名前が4文字のキャラ)に変更することに成功しました。

他のキャラでも試したのですが名前の文字数が同じキャラクターは問題なくMemory viewerの文字列の置き換えで変更できました。

ただPC0002_00_Tifa(名前が4文字のキャラ)をEB0021_00_Sephiroth(名前が9文字のキャラ)などに変更しようとすると文字数が合わないためキャラクターが消えてしまいます。

どうやら私以外にも同じ部分で行き詰っている方が多いようで、海外の動画投稿者の方に「文字数が違うキャラの場合はどうすればいいんですか!?」と質問している方がいました。

その質問に対しての回答は「名前の文字数の違うキャラに置き換えるには、名前の周りのメモリビューワで、結果とそのサイズ、最大4バイトを確認する必要があります。文字が変わるたびに、適切なサイズを設定する必要があります。」とのことでした。

↑は海外の方の解説を翻訳したのですが「文字が変わるたびに、適切なサイズを設定する」という部分の手順が具体的にどの項目で何をいじればいいのか、どうしても理解できませんでした。

もし何かご存知でしたらご教示いただけますと幸いです・・・!

  • 2022/09/30 (Fri) 21:11
  • REPLY

なんでもチート

少し調べました。
名前のアドレスの近くにサイズ値があるようです。サイズ値を発見したら、4から9に変更すると出来るかもしれません。
https://www.youtube.com/watch?v=UC_vidSY2Yg
https://i.imgur.com/h3bTDCA.png

  • 2022/09/30 (Fri) 23:32
  • REPLY

白猫

この方の動画は既に全て視聴していまして探してみたのですがサイズ値は見つかりませんでした・・・

どうやらサイズ値は固定ではなくゲームを起動すると毎回変わるらしく000002や001AB8などの数値のようです。

サイズの変更にはAOBを使うといいらしいですが、難しすぎるので諦めようと思います。

ご相談に乗っていただきありがとうございました!今後もこちらのサイトを参考にさせていただきます!

  • 2022/10/01 (Sat) 14:36
  • REPLY