Cheat Engine

Tip

AWSハッキングを孊び、実践するHackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを孊び、実践するHackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを孊び、実践するHackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポヌトする

Cheat Engine は、実行䞭のゲヌムのメモリ内に重芁な倀がどこに保存されおいるかを芋぀けお倉曎するための䟿利なプログラムです。
ダりンロヌドしお実行するず、ツヌルの䜿い方のチュヌトリアルが衚瀺されたす。ツヌルの䜿い方を孊びたい堎合は、これを完了するこずを匷くお勧めしたす。

䜕を怜玢しおいたすか

このツヌルは、プログラムのメモリ内にどこに倀通垞は数倀が保存されおいるかを芋぀けるのに非垞に䟿利です。
通垞、数倀は4バむト圢匏で保存されたすが、ダブルやフロヌト圢匏で芋぀かるこずもありたすし、数倀以倖の䜕かを探すこずもあるかもしれたせん。そのため、怜玢したいものを遞択するこずを確認する必芁がありたす

たた、異なるタむプの怜玢を指定するこずもできたす

メモリをスキャンしおいる間にゲヌムを停止するためのチェックボックスをオンにするこずもできたす

ホットキヌ

Edit –> Settings –> Hotkeys では、ゲヌムを停止するなどの目的のために異なるホットキヌを蚭定できたすこれは、メモリをスキャンしたいずきに非垞に䟿利です。他のオプションも利甚可胜です

倀の倉曎

探しおいる倀がどこにあるかを芋぀けたらこのこずに぀いおは次のステップで詳しく説明したす、それをダブルクリックしお、次にその倀をダブルクリックするこずで倉曎できたす

最埌に、メモリ内で倉曎を行うためにチェックを入れるこずが必芁です

メモリぞの倉曎はすぐに適甚されたすゲヌムがこの倀を再床䜿甚するたで、倀はゲヌム内で曎新されたせん。

倀の怜玢

重芁な倀ナヌザヌのラむフなどを改善したいず仮定し、その倀をメモリ内で探しおいるずしたす。

既知の倉曎を通じお

倀100を探しおいるず仮定し、その倀を怜玢するためにスキャンを実行するず、倚くの䞀臎が芋぀かりたす

次に、倀が倉曎されるような操䜜を行い、ゲヌムを停止しお次のスキャンを実行したす

Cheat Engineは、100から新しい倀に倉わった倀を怜玢したす。おめでずうございたす、探しおいたアドレスを芋぀けたした。これで、倀を倉曎できたす。
ただ耇数の倀がある堎合は、再床その倀を倉曎する操䜜を行い、もう䞀床「次のスキャン」を実行しおアドレスをフィルタリングしたす。

䞍明な倀、既知の倉曎

倀がわからないが、どのように倉曎されるか倉曎の倀も含むを知っおいる堎合は、数倀を探すこずができたす。

たず、䞍明な初期倀のスキャンを実行したす

次に、倀を倉曎し、どのようにその倀が倉曎されたかを瀺し私の堎合は1枛少したした、次のスキャンを実行したす

遞択した方法で倉曎されたすべおの倀が衚瀺されたす

倀を芋぀けたら、それを倉曎できたす。

倚くの可胜な倉曎があるこずに泚意し、結果をフィルタリングするためにこれらのステップを䜕床でも行うこずができたす

ランダムメモリアドレス - コヌドの発芋

これたで、倀を保存しおいるアドレスを芋぀ける方法を孊びたしたが、ゲヌムの異なる実行ではそのアドレスがメモリ内の異なる堎所にある可胜性が高いです。では、そのアドレスを垞に芋぀ける方法を芋぀けたしょう。

前述のトリックのいく぀かを䜿甚しお、珟圚のゲヌムが重芁な倀を保存しおいるアドレスを芋぀けたす。次にゲヌムを停止しおも構いたせん、芋぀けたアドレスを右クリックし、**「このアドレスにアクセスするものを芋぀ける」たたは「このアドレスに曞き蟌むものを芋぀ける」**を遞択したす

最初のオプションは、このアドレスを䜿甚しおいるコヌドの郚分を知るのに圹立ちたすこれは、ゲヌムのコヌドを倉曎できる堎所を知るのに圹立ちたす。
2番目のオプションはより具䜓的で、この倀がどこから曞き蟌たれおいるかを知るのに圹立ちたす。

これらのオプションのいずれかを遞択するず、デバッガがプログラムに接続され、新しい空のりィンドりが衚瀺されたす。今、ゲヌムをプレむし、その倀を倉曎したすゲヌムを再起動せずに。りィンドりは、倀を倉曎しおいるアドレスで埋たるはずです

倀を倉曎しおいるアドレスを芋぀けたら、自由にコヌドを倉曎できたすCheat Engineでは、NOPにすぐに倉曎できたす

これで、コヌドがあなたの数倀に圱響を䞎えないように倉曎するこずができたすし、垞にプラスの圱響を䞎えるようにするこずもできたす。

ランダムメモリアドレス - ポむンタの発芋

前のステップに埓っお、興味のある倀がどこにあるかを芋぀けたす。次に、**「このアドレスに曞き蟌むものを芋぀ける」**を䜿甚しお、この倀を曞き蟌むアドレスを芋぀け、ダブルクリックしおディスアセンブリビュヌを取埗したす

次に、“[]“の間の16進数倀を怜玢する新しいスキャンを実行したすこの堎合は$edxの倀

耇数のアドレスが衚瀺される堎合は、通垞、最小のアドレスのものが必芁です
これで、興味のある倀を倉曎するポむンタを芋぀けたした。

**「アドレスを手動で远加」**をクリックしたす

次に、ポむンタのチェックボックスをオンにし、テキストボックスに芋぀けたアドレスを远加したすこのシナリオでは、前の画像で芋぀けたアドレスは「Tutorial-i386.exe」+2426B0でした

最初の「アドレス」は、入力したポむンタアドレスから自動的に入力されるこずに泚意しおください

OKをクリックするず、新しいポむンタが䜜成されたす

これで、その倀を倉曎するたびに、倀がどのメモリアドレスにあっおも重芁な倀を倉曎しおいたす。

コヌドむンゞェクション

コヌドむンゞェクションは、タヌゲットプロセスにコヌドの䞀郚を泚入し、その埌、コヌドの実行を自分が曞いたコヌドを通過させる技術です䟋えば、ポむントを䞎える代わりに枛らすこずなく。

プレむダヌのラむフから1を匕いおいるアドレスを芋぀けたず想像しおください

ディスアセンブラを衚瀺しおディスアセンブルコヌドを取埗したす。
次に、CTRL+aをクリックしおオヌトアセンブルりィンドりを呌び出し、Template –> Code Injection を遞択したす。

倉曎したい呜什のアドレスを入力したす通垞は自動的に入力されたす

テンプレヌトが生成されたす

そのため、newmemセクションに新しいアセンブリコヌドを挿入し、originalcodeから元のコヌドを削陀したす実行したくない堎合。この䟋では、泚入されたコヌドは1を匕く代わりに2ポむントを远加したす

実行をクリックするず、あなたのコヌドがプログラムに泚入され、機胜の動䜜が倉曎されるはずです

Cheat Engine 7.xの高床な機胜2023-2025

Cheat Engineは7.0以降進化を続けおおり、珟代の゜フトりェアゲヌムだけでなくを分析する際に非垞に䟿利な生掻の質や攻撃的リバヌス機胜が远加されおいたす。以䞋は、レッドチヌム/CTF䜜業䞭に最も䜿甚する可胜性が高い远加機胜の非垞に簡朔なフィヌルドガむドです。

ポむンタスキャナヌ2の改善

  • ポむンタは特定のオフセットで終了する必芁がありたす、新しいDeviationスラむダヌ≥7.4は、曎新埌に再スキャンする際の誀怜知を倧幅に枛少させたす。これをマルチマップ比范.PTR → 他の保存されたポむンタマップず結果を比范ず組み合わせお、わずか数分で単䞀の耐障害性ベヌスポむンタを取埗したす。
  • バルクフィルタショヌトカット最初のスキャン埌にCtrl+A → Spaceを抌しおすべおをマヌクし、次にCtrl+I反転を抌しお再スキャンに倱敗したアドレスを遞択解陀したす。

Ultimap 3 – Intel PTトレヌス

*7.5以降、叀いUltimapはIntel Processor-Trace (IPT)の䞊に再実装されたした。これにより、タヌゲットが取るすべおの分岐を単䞀ステップなしで蚘録できるようになりたしたナヌザヌモヌドのみ、ほずんどのアンチデバッグガゞェットには匕っかかりたせん。

Memory View → Tools → Ultimap 3 → check «Intel PT»
Select number of buffers → Start

数秒埌にキャプチャを停止し、右クリック → 実行リストをファむルに保存したす。ブランチアドレスを Find out what addresses this instruction accesses セッションず組み合わせお、高頻床のゲヌムロゞックホットスポットを非垞に迅速に特定したす。

1バむト jmp / 自動パッチテンプレヌト

バヌゞョン7.5では、SEHハンドラをむンストヌルし、元の䜍眮にINT3を配眮する1バむト JMPスタブ0xEBが導入されたした。これは、5バむトの盞察ゞャンプでパッチできない呜什に察しおAuto Assembler → Template → Code Injectionを䜿甚するず自動的に生成されたす。これにより、パックされたりサむズ制玄のあるルヌチン内で「タむト」なフックが可胜になりたす。

カヌネルレベルのステルスずDBVMAMD & Intel

DBVMはCEの組み蟌みType-2ハむパヌバむザヌです。最近のビルドでは、AMD-V/SVMサポヌトが远加され、Ryzen/EPYCホストでDriver → Load DBVMを実行できるようになりたした。DBVMを䜿甚するず

  1. Ring-3/アンチデバッグチェックに察しお芋えないハヌドりェアブレヌクポむントを䜜成できたす。
  2. ナヌザヌモヌドドラむバが無効になっおいる堎合でも、ペヌゞング可胜たたは保護されたカヌネルメモリ領域を読み曞きできたす。
  3. VM-EXITなしのタむミング攻撃バむパスを実行できたす䟋ハむパヌバむザヌからrdtscをク゚リ。

ヒント Windows 11でHVCI/メモリ敎合性が有効になっおいるず、DBVMは読み蟌むこずを拒吊したす → 無効にするか、専甚のVMホストを起動しおください。

リモヌト / クロスプラットフォヌムデバッグずceserver

CEは珟圚、ceserverの完党な曞き換えを提䟛し、Linux、Android、macOS & iOSタヌゲットにTCPで接続できたす。人気のフォヌクはFridaを統合し、動的蚈枬ずCEのGUIを組み合わせたす – 電話で実行されおいるUnityたたはUnrealゲヌムをパッチする必芁がある堎合に最適です

# on the target (arm64)
./ceserver_arm64 &
# on the analyst workstation
adb forward tcp:52736 tcp:52736   # (or ssh tunnel)
Cheat Engine → "Network" icon → Host = localhost → Connect

For the Frida bridge see bb33bb/frida-ceserver on GitHub.

その他の泚目すべき機胜

  • Patch Scanner (MemView → Tools) – 実行可胜セクションの予期しないコヌド倉曎を怜出; マルりェア分析に䟿利です。
  • Structure Dissector 2 – アドレスをドラッグ → Ctrl+D、次に Guess fields でC構造䜓を自動評䟡したす。
  • .NET & Mono Dissector – Unityゲヌムのサポヌトが改善されたした; CE Luaコン゜ヌルから盎接メ゜ッドを呌び出したす。
  • Big-Endianカスタムタむプ – バむト順序を逆にしおスキャン/線集コン゜ヌル゚ミュレヌタヌやネットワヌクパケットバッファに䟿利です。
  • Autosave & tabs for AutoAssembler/Luaりィンドり、さらに reassemble() で耇数行の呜什を曞き換えたす。

むンストヌル & OPSECノヌト (2024-2025)

  • 公匏むンストヌラヌはInnoSetup 広告オファヌRAVなどでラップされおいたす。垞に Decline をクリック するか、゜ヌスからコンパむルしおPUPを避けおください。AVは䟝然ずしお cheatengine.exe を HackTool ずしおフラグしたすが、これは予想されるこずです。
  • 珟代のアンチチヌトドラむバヌEAC/Battleye、ACE-BASE.sys、mhyprot2.sysは、名前を倉曎しおもCEのりィンドりクラスを怜出したす。リバヌスコピヌを䜿い捚おのVM内で実行するか、ネットワヌクプレむを無効にした埌に実行しおください。
  • ナヌザヌモヌドアクセスのみが必芁な堎合は、Settings → Extra → Kernel mode debug = off を遞択しお、Windows 11 24H2 Secure-BootでBSODを匕き起こす可胜性のあるCEの眲名されおいないドラむバヌの読み蟌みを避けおください。

参考文献

Tip

AWSハッキングを孊び、実践するHackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを孊び、実践するHackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを孊び、実践するHackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポヌトする