Cheat Engineでゲーム内の情報を芋づる式に見つけよう!

Cheat Engineには「Dissect data structures」という機能があります。
この機能を使うとゲームを動かしながら、メモリの情報を視覚的にわかりやすく分析でき、値を変更することも可能です。

プレイヤーの体力や弾丸のアドレスを見つければ、そのアドレスの近辺には他の情報もたくさんあります。
なぜこのようなことが起こるかというと、プログラミングでは関連するデータをメモリの特定の場所にまとめて管理しているという特徴があるからです。
C言語でいう構造体のことですね。これはゲームだけに限りません。
なので体力のアドレスを見つければ、弾丸やその他の情報も近くにある可能性が高いということです。
逆もまた然りです。
似たようなツールでReClass.NETがあります。

「Dissect data structures」でデータ構造を分析する

実際にやってみましょう。
使用するゲームはAssault Cubeです。

ここで使用するアドレスはプレイヤーの情報にアクセスするためのベースになるアドレスで、プレイヤーベースと呼ばれるものです。
Assault Cubeの場合、ポインター509b74がプレイヤーベースになります。

Cheat Engineメインウインドウ右下の「Add Address Manually」をクリックします。
Pointerにチェックを入れ、青枠に509b74を入力し、赤枠のアドレスをクリップボードにコピーします。


Cheat Engineメインウインドウにある「Memory View」をクリックします。


メニューバーのToolsから「Dissect data/structures」をクリックします。


コピーしたアドレスを張り付け、「Define new structure」をクリックします。


Structure Nameはなんでも良いので入力し、OKをクリックします。 



これで分析に使用するウインドウが出現しました。 
赤枠がオフセット、緑枠がデータ型、青枠がアドレスとそのアドレスが保持している値になります。
ゲーム内で情報が変化すれば、このウインドウの情報もリアルタイムで更新されます。
試しにオフセットのF8まで下にスクロールしてみましょう。


体力を確認できました。
他にも情報がないかスクロールしながら探していきます。
ゲーム画面と一致する値や、それらしい数字を見つけます。


3つほどありました。オフセット114の50も気になりますね。
ある程度情報を見つけたのでこのくらいにして、新たに設定していきます。
↓画像にある矢印のあたりで右クリックして「Lock」を選択します。


さらにメニューバーのFileから「Add extra address」をクリックします。


左に入力してあるアドレスと同じアドレスを右にも入力します。


そうすると↓画像のようになります。


赤枠のアドレスはロックされていて値は変化しません。ロック時の状態を保っています。
青枠のアドレスはゲーム内の情報が変わると値も更新されます。これで変化が一目瞭然です。
それではゲームに戻り、試しに銃を撃ってみましょう。


一発撃つと、アサルトライフルのマガジンの弾数が20から19になりました。
Dissect data structuresのウインドウを見るとオフセット150の値が20から19に変化しています。
ロック時の状態から値が変化すると画像のように文字が赤色になります。
これで、アサルトライフルのマガジンのオフセットとアドレスを見つけることが出来ました。
次はリロードしてアサルトライフルの残り弾数(予備マガジン)を40から39にしてみます。


見つけることが出来ました。
これでゲームを動かしながら、値を見つけるやり方が分かったと思います。
関連記事

0 Comments

Post a comment