CheatEngineの基本的な使い方から、高度な使い方まで紹介します!
サンプルプログラムも用意していますので練習にお使いください。
ただしCheat Engineはオンラインゲームなどでは使用しないように注意しましょう。チート行為は他人にも迷惑がかかります。許可されたプログラムのみで使用しましょう。自分でコンパイルしたプログラムであれば問題ないです。他人に一切迷惑をかけない環境でおこなってください。これが守れない方は閲覧をお控えください。
※更に高度な技術を求めたい方は、ページ内の「おすすめの書籍」をご覧ください。貴重な手法などを知ることができます。
→ CheatEngineの使い方2。ログイン認証を突破する!メソッド・関数の処理改変してみようそのほかの似た記事
→ CheatEngineでCrackMeを解いてみた【方法解説】
【前提】
CheatEngineのダウンロードとインストールは済ませておいてください。
ダウンロードは公式サイトから行ってください。(Mac版もあります)
→ https://www.cheatengine.org/downloads.php
なお、セキュリティソフトが反応する場合があります。全て自己責任でお願いします。
※バージョンはなんでもよいです。当記事では6.4を使用していますが、最新の7.0でも操作は基本的に変わりません。
CheatEngineの使い方:基本編
基本編では値を検索して書き換えを行うというものです。
私が用意したサンプルプログラムを使用しています。
ダウンロードはこちら→ https://drive.google.com/file/d/0BxA4pUoZ2HVGU2w3ZzlQeUlYWDA/view?usp=sharing&resourcekey=0-2cFbQMBhqnUP1Rf0ajpTlA
(2021年9月22日:リンクを更新しました)
※上記のサンプルプログラムのデバッグ・解析は許可します。
0:今回CheatEngineでやりたいこと
お金を増やすことが目的です。
このような数値の変更は基本的な技術です。
簡単に行えます。
1:CheatEngineとサンプルプログラムを起動+アタッチ
CheatEngineとサンプルプログラムを、
どちらも起動した状態で進めていきます。
また、プログラムをアタッチしてください。(下記画像参照)
HowToMania-CE-HackMe01.exe を選択して「Open」を押します。
2:数値を検索して絞り込む
起動直後のお金は「100」です。なので「100」を入力してFirst Scanしましょう。
[お金を増やす]ボタンを1回だけ押します。するとお金が「101」になるはずです。
では同じように101を入力して今度はNext Scanを押します。
すると左側の検索結果が1件になりますのでダブルクリックして下に移動させます。
※もし検索結果が2件以上ある場合は、Next Scanの操作を繰り返してください。
3:お金を増やす
下記の画面の101の部分をダブルクリックします。
すると入力ウィンドウが出てきますので好きな数値に変更します。桁数には注意してください。私は9998にしました。
そして再度[お金を増やす]ボタンを押します。すると私の場合9999になりました!
以上が基本編です。
CheatEngineの使い方:高度編
ここからは少し踏み込むので、内容が難しくなります。
専門的な知識が必要になってきます。
内容を理解するには「アセンブリ言語」を知る必要があります。基本的なmov/cmp/jmp,jeなどのジャンプ命令などを覚えると良いでしょう。命令以外ではアドレス/ポインタなども軽く知っておく必要があります。
アセンブリ言語がわからなくても、見ておくだけでも使い方の参考になると思います。
まず、サンプルプログラムを起動した状態でスタートします。
(上の基本編で数値を変更した後であれば、再起動してください。)
基本編を参考に、該当のアドレスを見つけます。
(下記画像の状態にする)
0:今回の目的
ボタンを押してもお金が1しか増えないので、
押すたびに100増えるように改造してみましょう。
1:アクセスしてくるアドレス(命令)を確認する。
該当アドレスを右クリックして「Find out what accesses this address」を選択します。
※ウィンドウが出る場合は、「Yes」を選択します。
そして[お金を増やす]ボタンを押します。するとこのような画面になります。
命令を確認してください。アセンブリ言語です。
- inc [*]は、アドレスのポインタ先がもつ数値をインクリメントしています。
- mov eax,[*]は、eaxレジスタにアドレスの値をコピーしています。
*にはアドレスが入ります。(起動するたびに変化します)
※上の画像にある「002A30E2」というアドレスは、以降よりアドレス①と表現します。
※上の画像にあるinc [00174C68]は、以降よりinc [00134C68]に変わります。
(画像を差し替えたため。ややこしくなりすみません。)
2:命令を書き換える
どうすればボタンを押すたびに、お金を100増やせるか考える必要があります。
inc命令だとインクリメントなので+1だけする命令です。
ではadd命令を使ってみてはどうでしょうか。add命令であれば任意の数を足すことが出来ますよね。しかしinc命令をadd命令に書き換えたところ、Byte数が合わず命令が破壊されてしまいます。ですので下記の手順で書き換えを行います。
Memory Viewの画面でCtrl+AでAuto assemble(AA)ウィンドウを表示させます。
Template→Code injectionで、inc [*]のアドレス①を入力しましょう。
(私の場合は「002A30E2」を入力します。)
すると、自動でコードが入力され、下の画像のようになります。
「originalcode:」部分にある、
inc [*]の部分をadd命令に書き換えましょう。
私は下にある画像のようにしました。
add [*], #100
(#を使うと10進数で認識されます。今回は100増やしたいので、そう設定しています)
なお、正しく書き換えるには「add dword ptr [*],#100」と書くほうが良さそうです。自動で修正されるのでどちらでもかまいませんが。
入力したら「Execute」ボタンを押して書き換えを実行します。
Memory Viewを見てみると命令が書き換えられています!
inc [*]がjmp *に書き換えられています。
jmp先には「add命令」と「戻り先のjmp命令」があります。
いよいよお金を増やします。
[お金を増やす]ボタンを押してみてください。
お金が100づつ増えるはずです。そうなれば書き換え成功です。
高度編は以上です。
動画も撮りましたので、参考になれば幸いです!
おまけ:チートのON/OFF設定を付け加える
Executeをしてしまうと書き換えのみでOFFにできません。
そんなときは[enable](有効)と[disable](無効)を書けば良いです。画像の赤枠部分を書き足しました。
[disable]の部分は元に戻す命令を書きます。今回の場合はinc [*]を変えたため。元の命令を書いておきます。
さらに画像には見えませんが、メモリを開放するために最後の行に「dealloc(newmem)」を追加します。
このチートスクリプトのON/OFF制御するためにFile→Assign to current cheat tableでテーブルに追加します。CheatEngineのメイン画面に追加された行にチェックを入れるとON。チェックをはずすとOFFになります。
Cheat Engineの使い方:スピードハック
プロセス速度を変更する方法です。(いわゆるスピードハック・加速)
手順は簡単で、アタッチ後にEnable SpeedHackにチェックを入れるのみです。
1.0が通常速度ですので、2.0だと2倍速です。
Applyを押すと入力した速度が適用されます。
Cheat Engineの日本語化について
日本語化パッチされたものが配布されています。
下記サイトからダウンロードしてご利用ください。
(外部サイト)
http://dukedogdukedom.blogspot.jp/2016/03/cheat-engine-65.html
英語が苦手な方は利用すると良いでしょう。
Cheat Engineの用語
AA:Auto Assemble
CT:Cheat Table(チートコードがまとめられたもの)
下記の画像の部分のことを言います。CTは保存できます。
保存はCtrl+Alt+Sで行えます。
AoB:Array of Byte
BP:Break Point
CEM:Cheat Engine Memory
思ったこと
Googleで「cheat engine」と入力したところ、「ツムツム」「モンスト」が候補に出ていました。有利に進めたいのはわかりますが、正規プレイしている方にとって迷惑でしょう、やめましょう。また、これらでは規約によりチート行為が禁じられています。
おすすめの書籍
アセンブラやデバッグに関する知識やテクニックを知るためには、下記の書籍が非常に参考になります。
これプログラマの方は覚えておくと、かなり強いです。
↑ 以前は64ビットに対応しておらず、絶版になっていましたが、最近新しくなって再販されました。私は再販前の絶版本を中古で購入したほどです。おすすめの1冊です。
↑ サンプルプログラムなども用意されています。シリアルコードをはじき出したりと実践しながら楽しめます。
中古しかありませんが、買う価値はありそうです。
最初の2冊はデバッガーの使い方などが書かれています(主にOllyDbg)。初心者にとって内容は難しいかもしれませんが、参考になる部分はたくさんあります。気になったら是非購入してみてください。
まとめ
以上がCheatEngineの使い方や用語です。全て自己責任でお願いします。またしつこいですが、オンラインゲームなど解析が禁止されたアプリケーションでの使用は絶対にしないでください。(私が配布しているサンプルプログラムは許可しています。)
今回は簡単なサンプルプログラムでしたので簡単に書き換えなどが可能でしたが、他のプログラムだと複雑なアセンブリ処理もありますのでこう簡単にはいきません。
なかなかこの手順を書いたサイトが無かったり、説明が少なかったりしたので記事にしました。参考になれば嬉しいです!共有してくれると飛んで喜びます。
■使い方その2の記事を書きました!
→ CheatEngineの使い方2。ログイン認証を突破する!メソッド処理改変してみよう
■他のソフト(CrackMe)を解析してみた。
→ CheatEngineでCrackMeを解いてみた【方法解説】
コメント
inc [*]のアドレスを入力。(je命令のジャンプ先です)
と書いてあるところの意味がわかりません
いろいろ試しましたがそこの意味がわからずうまくいきません
コメントありがとうございます。
追記しましたので御覧ください。
また、動画もページ下部にのせてみました。
このサイトわかりやすい もっと記事増やして欲しい
splaxのゲームのチートの使い方教えてほしいです。
チートでチートを倒したいから。
これは、悪用とはいわないですよね?
特にsplaxの戦車のゲームのチートを教えてください。
ちなみに無料ゲームです。
チートエンジンにウィルスは、ほぼ100%超高確率で入っています。
ウィルスを除去した状態でファイルをダウンロードさせてくれるのが
一番リスクが無くていいと思うのですが?
何度もいろんなサイトで確認しましたがほぼすべてウィルスに汚染されてます
ちなみにカスペルスキー使用しています
警戒システムは最大レベルです
良ければこちらでチートエンジン本体ファイルをダウンロードさせてくれれば助かるのですが
下記ページの「CheatEngine70.exe」からのダウンロードは、どうでしょうか?
https://github.com/cheat-engine/cheat-engine/releases
すいません。チートエンジンで一括選択のようなものは出来ないのでしょうか?
もし出来るのならばやり方を教えて頂くと有難いです
「一括選択」はCtrl + Aで、できそうです。
画面によってはできないかもですが・・・。
例えば、[First Scan]をしたあとに、左の画面でCtrl + Aを押すと、全選択できます。
貴重な情報ありがとうございます。
とあるゲームのチートエンジン(他者作成)を複数人が使用した際、私だけがチートを有効化できない(ボックスをクリックしても10秒程度チートエンジンのウィンドウが固まる)ということがありました。
どのような原因が考えられますでしょうか?
こちらこそ、閲覧していただきありがとうございます。
そのゲームは落ちずに、10秒程度固まった後、通常に動作するのでしょうか?
・ゲームが落ちるのであれば、アドレスが間違っている可能性が大です。
・固まる場合も、アドレスが間違っている可能性あり。(可能性:小)
他者とゲームのバージョンは同じですよね?もし違うなら、チートは使えないはずです。
数年触ってないということもあり、
ハッキリとわからないです・・・。申し訳ないです。
お返事が遅くなりすみません…あれからScan Settingの設定を変更することで、無事にチートを使用することができました。ご回答いただき、ありがとうございました。
cheat engineを使ってFPS(FortniteやApex legends等)の限定のスキンや銃ラップ、その他バッジなどアンロックする方法、手順を教えていただきたいです。オートエイムやウォールハック等については使用するつもりはありません。
Steamのオフラインゲーム【My Child Lebensborn】で所持金を増やすことが出来ません。
コードを書き換えても反映されずゲーム内で金額変動するとその金額がコードの方に反映されます。
スタデューバレーで同じ様に書き換えると反映されてるので手順自体が間違っているのではないと思うのですが、詳しく教えていただきたいです。