Cheat Engineのポインタースキャンを使おう!アドレスが変わって困っている方におすすめ

Cheat Engineのポインタースキャンの使い方を、チュートリアルを用いて解説します。
チュートリアルはメニューバーのHelpから起動できます。




チュートリアルを起動すると右下にパスワードを入力する箇所があるので、 525927と入力してStep8に飛びましょう。


ポインタースキャンを使うとどうなるの?


マルチレベルポインターとは


Step8はマルチレベルポインターについての説明で、ゲームをチートするうえで非常に大切な知識です。マルチレベルポインターとはポインターのポインターのことで、今回見つけるのは4レベルポインターになっています。


下記のようなイメージで、全部でpointerが4つあるのを確認できますね。
static pointer → pointer → pointer → pointer → address+offset → 目的の値


もう少し詳細に表すと
[static pointer] [address+offset] [address+offset] [address+offset] address+offset 目的の値
になります。


[address+offset]の[ ]はポインターの指す値を得るという意味で次のaddressを指しています。このaddressは再起動すると変わってしまう動的なアドレスなので特に重要ではありません。 重要なのはstatic pointerのアドレスとオフセットで、この二つが分かれば目的の値までたどることが出来ます。ポインタースキャンはそれらを自動で見つけてくれる大変便利な機能で使う頻度も多くなります。


◆ ポインタースキャンの要点

ポインタースキャンの目的は、いつ起動しても使える安定的なポインターを見つけることです。また、現在そのプロセスで使われているすべてのポインターのスナップショットのことをポインターマップと呼びます。


2つのポインターマップを比較しながらスキャンすれば全体の作業時間を大幅に短縮できます。


パソコンを2台用意しそれぞれのパソコンでポインターマップを作り、その2つのマップを使用してポインタースキャンをするとより効果的です。なお、このStep8はCheat Engineの機能「コードファインダー」でもクリアすることができ、そちらもやることでより理解が深まるのでぜひやってみてください。


始める前に

コンピューターのユーザー名が日本語の方は、Cドライブ直下にポインタースキャン用のフォルダを作り、そこで作業するようにしましょう。ファイルパスに日本語が含まれているとスキャン結果が0になります。詳しくはコメント欄をご参照ください。


OK  C:\pointerscan\pointer.ptr
NG  C:\pointerscan\ポインター.ptr
NG  C:\Users\デーモン閣下\Desktop\pointerscan\pointer.ptr


ポインタースキャンでマルチレベルポインターを攻略しよう


それでは始めていきましょう。
まずValue:に現在の値を入力してFirst Scanをクリックします。



Change valueをクリックし、値を変更します。



真ん中のアドレス01921208の値が1912になりました。
これをアドレスリストに追加し、Descriptionを「value 1」に変更します。



value 1の行を右クリックからGenerate pointermapを選択します。



ポインターマップのファイル名を入力します。
ここでは「step8 map1 01921208」にしました。
ポインタースキャン用のフォルダを作り、そこに作成しています。



Change pointerをクリックし、ポインターを変更します。
もう一度value 1の時と同じ手順で値を見つけ、Descriptionを「value 2」にします。
そうするとアドレスリストは下画像のようになっていると思います。



ここからvalue 2の行を右クリックからGenerate pointermapを選択し、2つめのポインターマップを作成します。



2つめのポインターマップ名は「step8 map2 018AD920」にしました。



value 2の行を右クリックからPointer scan for this addressを選択します。



画像赤枠のUse saved pointermapにチェックを入れます。



018AD920に対応するポインターマップは2つ目に作ったポインターマップです。
したがって「step8 map2 018AD920.scandata」を選択し、開くをクリックします。



画像青枠のCompare results with other saved pointermap(s)にチェックを入れ、
赤枠のアイコンをクリックして比較するポインターマップを選択します。



マップ1を選択し、開くをクリックします。



プルダウンメニューから01921208=value 1を選択します。
マップ1に01921208=value 1
マップ2に018AD920=value 2
となっています。



ポインタースキャンをする準備ができたのでOKをクリックします。
その他にも設定項目がありますが、ここではデフォルトのまま行います。


よく使う設定は以下の4つです。


Max different offsets per node
この数字を大きくすることでヒットするポインターの数が増え、スキャン時間も長くなります。 数字を小さくするとスキャン時間は大幅に短くなりますが、その分有効なポインターを取りこぼす可能性があります。
ほとんどの場合デフォルトの3で問題ありませんが、スキャン時間が長い場合は2に変え、どうしても有効なポインターが見つからない場合は1ずつ数字を増やして様子を見てください。

Pointers must end with specific offsets
最終オフセットが分かっている場合に入力することで、検索範囲を絞れます。

Maximum offset value
最大オフセット値を10進数で入力します。

Max level
ポインターパスの深さ、最大レベルを入力します。
仮にこの数字を3以下にすると今回見つける4レベルポインターはヒットしなくなります。



ポインタースキャン結果のファイル名を入力します。



ポインタースキャンが完了しました。
見事に1つだけに絞り込まれています。
ダブルクリックしてアドレスリストに追加しましょう。



pointerscan resultがスキャンで見つけたポインターです。
435のあたりをダブルクリックして値を5000に変更し、
Activeにチェックを入れます。



Change pointerをクリックします。



Nextボタンが押せるようになりました! これでStep8はクリアです。


スキャンして見つけた P->xxxx となっているポインターは、ゲームやパソコンを再起動しても使えます。


手順まとめ

  1. 値を見つける(value 1)
  2. value 1のポインターマップを作る(マップ1)
  3. Chage pointerをクリックし、ポインターを変更する
  4. 再度、値を見つける(value 2)
  5. value 2のポインターマップを作る(マップ2)
  6. マップ1とマップ2を使いポインタースキャンをする
  7. スキャンして見つけたポインターの値を5000に固定する
  8. Chage pointerをクリックする

Step8 マルチレベルポインターのイメージ図


スキャン結果をソートする

Max levelを5でスキャンした場合、スキャン結果のウインドウで一番右のオフセットが6になっているので、そこをクリックするとポインターの少ない順にソートできます。
実際のゲームではポインターが100~1000以上見つかるはずなので、そのような時にソートして上から順に使えるかテストしていけば効率がよいです。



実際のゲームでやる場合の手順

  1. HPのアドレスを見つける(HP1)
  2. HP1のポインターマップを作る(マップ1)
  3. ゲームを再起動する
  4. 再度、HPのアドレスを見つける(HP2)
  5. HP2のポインターマップを作る(マップ2)
  6. マップ1とマップ2を使いポインタースキャンをする
  7. ヒットしたポインターをソートし上から順に3,4つほどアドレスリストに追加
  8. ゲームやパソコンを再起動しても使えることを確認すれば成功です

関連記事

11 Comments

-

こんにちは
すごく参考になります。。
ですが私がやっているゲームは
数値を検索し値を変更→固定の枠をチェックしても
変更した数値と元々の数値に高速で戻ったりします。
攻撃速度などの数値の絞り方がどうしてもわからず困っております。
どうか手助けをしていただけないでしょうか
スピードハックでもいいのですがスピードハックですと
サーバーが耐えきれないのか、すぐにダウンしてしまいます。
スペックは申し分ないのでサーバーが原因だと判断しました。
どうかお力をお貸しください

  • 2020/08/07 (Fri) 02:58
  • REPLY
ちーたー

なんでもチート

To -さん

コメントありがとうございます。
私も移動速度のチートは少しだけ挑戦したことがあります。
ゲームによって違うかもしれませんが、最終的にfloat型の値が見つかるはずです。
multiplier(乗数)と呼ばれるもので、速い時は1.8、遅い時は0.8とかそんな感じでした。
攻撃速度も似たような感じだと思います。
以下の手順を踏めば見つかるかもしれません。

まず攻撃速度の遅い武器を装備して、unknown initial valueでスキャン
攻撃速度の速い武器を装備し、increased valueでスキャン
攻撃速度の遅い武器を装備し、decreased valueでスキャン
この流れをある程度絞り込めるまで繰り返します。
これで見つからなければ、
攻撃速度の遅い武器を装備して、unknown initial valueでスキャン
攻撃速度の速い武器を装備し、changed valueでスキャン
攻撃速度の遅い武器を装備し、changed valueでスキャン
途中でunchanged valueもはさみながらやると効果的です。

また固定しても値がすぐ戻る現象については、その値に書き込んでいる命令を潰してみると何かわかるかもしれません。

  • 2020/08/07 (Fri) 21:53
  • REPLY

-

この記事を含むいくつかの記事を読みましたがとても参考になりました。
日本語の解説は少ないのでありがたい限りです。

  • 2021/01/06 (Wed) 13:59
  • REPLY
ちーたー

なんでもチート

To -さん

そう言っていただけると嬉しいです!
コツコツと更新していくので引き続き当サイトをよろしくお願いいたします。

  • 2021/01/12 (Tue) 21:47
  • REPLY

-

記事通りにやっているのですが、ポインタースキャンの結果が0になります。Max different offsets per node等の数字を大きくしてもダメでした...原因分かりますか?

  • 2021/02/06 (Sat) 22:31
  • REPLY
ちーたー

なんでもチート

To -さん

コメントありがとうございます。
コンピューターのユーザー名に日本語が含まれてないでしょうか?
仮にユーザー名が太郎で、かつポインタースキャン結果のファイル名がpointer.ptrだったとして、それをデスクトップに保存した場合、パスはC:\Users\太郎\Desktop\pointer.ptrになるはずです。このようにポインタースキャン結果のファイルのパスにASCII以外の文字が含まれているとスキャン結果が0になるようです。

対策としては、Cドライブ直下にpointerscan用のフォルダを作成し、そこにポインターマップとスキャン結果のファイルを保存して実行してみてください。ファイル名もポインター.ptrのように日本語は使わないようにします。
https://dl.dropboxusercontent.com/s/qwbkqup8rtydng3/Image.png
参考記事
https://forum.cheatengine.org/viewtopic.php?p=5727940

  • 2021/02/07 (Sun) 03:36
  • REPLY

2/6の投稿者

早速ご返信いただきありがとうございます。ユーザー名に日本語を使用しており、確かにデスクトップに保存しておりましたので、Cの直下に新しいフォルダを作成してやってみたのですが、それでもダメでした...
記事に書かれていることはなんとなくわかるのですが、なぜヒットしないのかが全然わからないです。正直チートエンジンも昨日使い始めたばかりの素人ですが、どうかよろしくお願いします。

  • 2021/02/07 (Sun) 14:02
  • REPLY
ちーたー

なんでもチート

To 2/6の投稿者さん

以下の手順を試してみてください。
Step8を起動しvalueのアドレスを見つけ、ダブルクリックしてアドレスリストに追加します。
valueのアドレスの行を右クリックからPointer scan for this addressを選択します。
そうすると、ポインタースキャンの設定ウインドウが出現すると思うので、デフォルトのままOKをクリックしてポインターがヒットするかを確認する。
https://dl.dropboxusercontent.com/s/ph10cdzkdjdy420/Image44.png

  • 2021/02/07 (Sun) 14:48
  • REPLY

2/6の投稿者

To なんでもチートさん

ありがとうございます。何万件もヒットしますが、スキャン結果は出るようになりました。一旦自力でやってみるようにします。また行き詰った時は質問させていただくと思います。

  • 2021/02/07 (Sun) 17:44
  • REPLY

BBB

解説してくれているサイトが少ない為、とても参考になりました。
ここから少しずつ自分でも試していきます。
ありがとうございました。

  • 2022/02/17 (Thu) 04:30
  • REPLY

-

Citra Emulator (ステートロードでアドレスが変わる) でこの手順でやってみましたが、pointer scanで1件もヒットしませんでした。
tutorialでは成功しています。
Citraではできないのでしょうか?
サーチしたアドレス自体は、ゲーム内ではstaticなものです。

  • 2023/05/20 (Sat) 15:26
  • REPLY