Cheat Engineの使い方 チュートリアルStep7の攻略 コードインジェクション (ゲーム改造/チート)
Cheat EngineのチュートリアルStep7の記事です。
チュートリアルの始め方やプロセスのアタッチの仕方などもこちらに書かれていますので、ご一読いただけると幸いです。
Cheat Engineの使い方 チュートリアル Step2の攻略 - 結果だけでなく過程も見てください
Step7の問題文
要約すると以下の通りです。
- コードインジェクション機能とはコードの一部を書き換えて処理の流れを変える機能です
- 初期値の体力(Health)は100
- Hit meボタンを押すと体力(Health)が1減る
- Hit meボタンを押したときに体力(Health)が2増えるようにしてください (課題)
- 体力を減らすコードを見つけたら、自動アセンブラウィンドウとコードインジェクション機能を使ってください
該当箇所の絞り込み
Step2~6でやってきた方法と同様に、初期値100でFirst Scan→問題文ダイアログの「Hit me」→Next Scanでアドレスを絞り込みます。
絞り込んだアドレス①をダブルクリックします。②に行が追加されるので②を右クリックし、③の「Find out what writes to this address」を選択します。
以下のダイアログが出たら「Yes」を押下します。
新しく「The following opcodes write to XXXXXXXX」というウィンドウが開くので、問題文のダイアログに戻り「Hit me」ボタンを押します。
すると、変数の変更を検知して「The following opcodes write to XXXXXXXX」ウィンドウに該当箇所のコードが表示されます。コードを選択して「Show disassembler」ボタンを押下します。
コードの該当箇所がハイライトされたMemory Viewerが開きます。
今回は該当箇所がすで選択された(ハイライトされた)状態になっているので、そのままメニューバーのTools→Auto Assembleを選択します。新たにAuto assembleウィンドウが開きます。
メニューバーからTemplate→Code injectionを選択します。
今回はコードを選択してここまで来ているので該当アドレスが最初から格納されています。
なのでそのままOKボタンを押してください。
以下のように該当箇所のコードが挿入されます。
コードを以下のように変更します。
originalcode:にはもともとの処理が以下のように書かれています(アドレスは各人によって異なります)。
sub dword ptr [ebx+000004A4],01
これはebxのアドレスからオフセット0x4A4ずれた場所から4byte(dword)分の領域から1を減算するという意味になります。
今回新しい処理に正解の処理を記述するため、こちらの処理はコメントアウトしてしまいます。コメントアウトしないと-1の減算も処理されてしまい都合が悪いためです。
newmem:には今回新たに実施するコードを記述します。
今回Hit meボタンを押したときに体力(Health)が+2されてほしいため、newmem:に以下のコードを追加します。意味はebxのアドレスからオフセット0x4A4ずれた場所から4byte(dword)分の領域に2を加算するという意味になります。
add dword ptr [ebx+000004A4],02
コードが書けたらExecuteコマンドを実行してください。
確認するダイアログが表示されたら「Yes」を押下してください。
その後コードインジェクションが成功した旨のダイアログが表示されるので「Yes」を押下してください。
メモリビューワーに戻ると、赤枠のように先ほど追加した処理が追加されています。
最後に問題文のダイアログに戻り、「Hit me」コマンドを押下してください。
体力(Health)が2加算され、Nextが活性化されて次へ進めるようになります。お疲れ様でした。