Cheat Engineのちょっとしたお役立ち情報
値を一気に固定する方法
固定したい値の行を選択してから、スペースキーを押すと一気に固定できます。
DaveとHALを固定したい場合
Ctrlキーを押しながらDaveとHALを選択してスペースキーを押します。
EricからKITTまでを選択したい場合
まずEricをクリックして、Shiftキーを押しながらKITTをクリックすると連続して選択できます。
全選択するには
アドレスリストのどこかをクリックしてからCtrl+Aを押します。
スクリプト内の文字を一括変換
Cheat Engineでスクリプトを書いていると特定の文字を一括変換したいときがあります。
そういったときはテキストエディタをアクティブにした状態でCtrl + Rを押しましょう。そうするとReplaceダイアログボックスが出現するので、Textに変更したい文字を、Replaceに変更後の文字を入力しReplace allをクリックすればすべて置換されます。
DirectionをForwardにするとカーソルがある位置から前を、Backwardにした場合はカーソルの位置から後ろにある文字を置換します。
Executeボタンについて
Cheat Engineのスクリプトを学び始めてすぐにハマりがちなのがこのExecuteボタンです。
Cheat Engineのスクリプトが画期的なのはオンにすると改造コードに書き換えられ、オフにすると元のコードに戻るところにあります。しかしながら、このExecuteボタンは押してしまうと改造コードが書き込まれるだけで元に戻すことが出来ません。
そのため、スクリプトを実行する際はメニューバーのFileから、Assign to current cheat tableを選択し、チートテーブルに追加してから実行するようにしましょう。
メインウインドウに戻るとAuto Assemble scriptというスクリプトが追加されており、赤枠部分をクリックすれば実行できます。
AAスクリプト内でのメモリの確保について
Auto assemblerスクリプトでメモリを確保する方法は2パターンあります。
alloc(val1,4)
と
label(val2)
val2:
dd 0
です。
上の例では4バイトのメモリval1とval2を確保しています。
どちらのやり方でも良いのですが、少し気になったので両者の違いを調べてみました。
テンプレートを使用してスクリプトを作成している場合、alloc(newmem,$1000)と始めに0x1000バイト分のスクリプト用のメモリが確保されます。上の画像だと1F0000から1F0FFFまでがnewmemになります。
allocで確保したメモリval1のアドレスは1F1000となっており、最初に0x1000バイトのメモリを確保しているにもかかわらず、また新たな領域にメモリを確保していることが分かります。
一方、val2はnewmem内にアドレスがあるため、こちらの方がメモリを無駄に使わずクリーンなやり方といえます。正確に言うと元から確保してあるメモリ領域(newmem)に4バイト分0で初期化しただけということになります。海外の方が作成したスクリプトを見てみるとやはりlabelを使用しているためこのやり方が推奨です。
label(val2)
newmem:
sub [ebx+000004AC],eax
mov [val2],ebx
jmp return
val2:
dd 0
AAスクリプトのエラーの確認方法
スクリプトをActiveにできなかった場合、対象のスクリプトの行を右クリックからエラー内容を確認することが出来ます。↑画像の場合だとプロセス内にMasterQuartzReadInStatusMenuAOBというAOBが見つからないよと言っています。
逆アセンブラウインドウのコメント
アセンブリ言語を追いかけていると途中で何をやっていたのか分からなくなることがよくあります。
そういったときに役立つのがコメントです。コメントを書き込みたい場合は右端にあるCommentの列をダブルクリックして入力することが出来ます。
Cheat EngineのメインウインドウでCtrl + Sを押してチートテーブルを上書き保存すればコメントも一緒に保存され、次回起動時にも表示されるようになります。ぜひ解析に役立ててください。
保存したコメントはCTをテキストエディタで開き、 commentで検索すると見ることができる。
ダンプ画面でのフェードアウト時間の変更
Cheat Engineで値を連鎖的に見つけるのに非常に役に立つのがダンプ画面です。値が変化すると赤くなるのですが、元に戻るのが早すぎてどこだったかな?となりがちです。そのような場合にダンプ画面上を右クリックからChange fade timerでフェードアウト時間を変更できます。
デフォルトだと1秒(1000ミリ秒)になっているので、5秒か8秒あたりにするとちょうど良いかなと思います。
XMMレジスタの値を確認する方法
64ビットのゲームを解析していると出てくるxmmレジスタですが、初見だとどうやって値を確認するの?となりますよね。方法としてはまず該当の命令にブレークポイントを設置しブレークさせてから、↓画像の青矢印部分 > をクリックすると値を確認できます。
ゲームを一時停止する方法
Cheat Engineメインウインドウの左下にあるAdvanced Optionsをクリックし、赤矢印部分のアイコンをクリックすれば一時停止できます。
おすすめの拡張機能
Memory Viewer画面で指定したレジスタをハイライトする拡張機能です。
特定のレジスタを追いかけたい時に重宝します。
ハイライトを解除したい場合は、何も入力せずにOKをクリックします。
インストール方法
Cheat Engineがインストールされているディレクトリにautorunフォルダがあるので、そこに下記のファイルをコピーして再起動すると使えるようになります。
DisassemblerHighlight.lua ← 右クリックから名前を付けてリンク先を保存
情報収集
Cheat Engineの各種使い方などを調べる際は以下のサイトを使っています。
各サイトに飛んだあとSearchをクリックし、サイト内検索からgoogle searchを使用するのが検索のコツです。このgoogle searchが非常に優秀で自分が検索したキーワードに関連するスレッドを的確にリストアップしてくれます。
4つ目のDiscordはチャットのようなもので、参加している人たちが自分の疑問をなげると、それに答えてくれる人がいて質疑応答のようになっています。ちょうどそれ自分も知りたかったことだ!となることがあり、かなり有益なのでおすすめです。
FearLess Cheat Engine
https://fearlessrevolution.com/index.php
Cheat Engine Forum
https://forum.cheatengine.org/
Guided Hacking
https://guidedhacking.com/
Discord - CHEAT THE GAME
https://discordapp.com/invite/ndn4pqs
Luaの文法
https://ichigopack.net/lua/syntax.html
- 関連記事