Please enable / Bitte aktiviere JavaScript!
Veuillez activer / Por favor activa el Javascript![ ? ]

ハウツーマニア | これってどうやる?困ったときに使える方法!

困ったときにはハウツーマニアにお任せください!あのやり方・方法がわからない、を解決へ導いてみせます!最近は雑記も!

CheatEngineの使い方。プログラム処理の改変のやり方、書籍紹介

CheatEngineの使い方

みなさんはCheatEngineの詳しい使い方をご存知でしょうか?

基本的な使い方から高度な使い方まで紹介します。

画像をたくさん使用して記事を書きましたのでわかりやすいと思います。

サンプルプログラムも用意していますので練習にお使いください。

 

ただしCheat Engineはオンラインゲームなどでは使用しないように注意しましょう。チート行為は他人にも迷惑がかかります。許可されたプログラムのみで使用しましょう。自分でコンパイルしたプログラムであれば問題ないでしょう。他人に一切迷惑をかけない環境でおこなってください。これが守れない方は閲覧をお控えください。

 

※更に高度な技術を求めたい方は、ページ内の「おすすめの書籍」をご覧ください。貴重な手法などを知ることができます。

 

スポンサードリンク

 

前提

CheatEngineのダウンロードとインストールは済ませておいてください。公式サイトからダウンロードしてください。→ http://www.cheatengine.org/downloads.php

なお、セキュリティソフトが反応する場合があります。ソフトの性質上です。しかし全て自己責任でお願いします。

※バージョンはなんでもよいです。当記事では6.4を使用していますが、最新の6.6でも操作は基本的に変わりません。

 

CheatEngineの使い方:基本編

基本編では値を検索して書き換えを行うというものです。

私が用意したサンプルプログラムを使用しています。
ダウンロードはこちら→ https://drive.google.com/open?id=0BxA4pUoZ2HVGU2w3ZzlQeUlYWDA

※上記のサンプルプログラムのデバッグ・解析は許可します。

 

0:今回CheatEngineでやりたいこと

お金を増やすことが目的です。数値の変更は基本的です。簡単に行えます。

 

1:CheatEngineとサンプルプログラムを起動+アタッチ

どちらも起動した状態で進めていきます。

またプログラムをアタッチしてください。(下記画像参照)

ce02

HowToMania-CE-HackMe01.exeを選択してOpen。

 

2:数値を検索して絞り込む

起動直後のお金は「100」です。なので「100」を入力してFirst Scanしましょう。

ce03

さらに[お金を増やす]ボタンを1回だけ押します。するとお金が「101」になるはずです。では上と同じように101を入力して今度はNext Scanを押します。

ce04

すると左側の検索結果が1件になりますのでダブルクリックして下に移動させます。(2件以上ある場合は上記のNext Scanを繰り返す。)

ce05

 

 

3:お金を増やす

下記の画面の101の部分をダブルクリックします。

ce05

すると入力ウィンドウが出てきますので好きな数値に変更します。桁数には注意してください。私は9998にしました。

変更したら再度[お金を増やす]ボタンを押します。すると私の場合9999になりました。

以上が基本編です。

 




 

CheatEngineの使い方:高度編

ここからはちょっと難しいです。知識が必要になってきます。

理解するには「アセンブリ言語」を知る必要があります。基本的なmov/cmp/ジャンプ命令などを覚えると良いでしょう。命令以外ではアドレス/ポインタなども軽く知っておく必要があります。

アセンブリ言語がわからなくても、見ておくだけでも使い方の参考になると思います。

 

まず、サンプルプログラムを起動した状態でスタートします。(数値変更後なら再起動してください)

基本編を参考に該当のアドレスを見つけます。(下記の画面の状態にする)

ce05

 

 

0:今回CheatEngineでやりたいこと(高度編)

お金が1しか増えないのであれば面白くありません。いっきに100増やしてみましょう。(押すたびに)

 

1:アクセスしてくるアドレス(命令)を確認する。

該当アドレスを右クリックして「Find out what accesses this address」を選択します。何か出たら「Yes」を選択します。

そして[お金を増やす]ボタンを押します。するとこのような画面になります。

ce06

命令を確認してください。アセンブリ言語です。

  • inc [*]は、アドレスのポインタ先がもつ数値をインクリメントしています。
  • mov eax,[*]は、eaxレジスタにアドレスの値をコピーしています。

*はアドレスです。

また、inc [*]が実行されるのは、2つ上命令のje命令にです。(je HowToManiaCEHackMe01.Form1::button1_Click+22) 気にしなくて良いです。

このことに注意して進みます。

 

2:命令を書き換える

どうすればボタンを押すたびにお金を100増やせるか考える必要があります。inc命令だとインクリメントなので+1する命令です。ではadd命令を使ってみてはどうでしょうか。任意の数を足すことが出来ますよね。しかしinc命令をadd命令に書き換えたところ、Byte数が合わず命令が破壊されてしまいます。ですので下記の手順で書き換えを行います。

Memory Viewの画面でCtrl+AでAuto assemble(AA)ウィンドウを表示させます。

Template→Code injectionでinc [*]のアドレスを入力。(je命令のジャンプ先です)

すると自動で入力されます。下の画像のようになります。ce07

inc [*]の部分をadd命令に書き換えましょう。

私は下記のようにしました。

ce08

add [*], #100

(#を使うと10進数で認識されます。今回は100増やしたいのでそう設定します)

なお、CheatEngineで正しく書き換えるには「add dword ptr [*],#100」と書くほうが良さそうです。自動で修正されるのでどちらでもかまいませんが。

 

入力したら「Execute」で書き換えを実行します。

 

Memory Viewを見てみると命令が書き換えられています!

ce09

inc [*]がjmp *に書き換えられています。

jmp先には「add命令」と「戻り先のjmp命令」があります。

 

いよいよお金を増やします。

[お金を増やす]ボタンを押してみてください。200代…300代と増えていくはずです。そうなれば書き換え成功です。

 

おまけ:チートのON/OFFの設定を付け加える

Executeをしてしまうと書き換えのみでOFFにできません。不便なときもあるかもしれませんよね。

そんなときは[enable](有効)と[disable](無効)を書けば良いです。画像の赤枠部分を書き足しました。

ce10

[disable]の部分は元に戻す命令を書きます。今回の場合はinc [*]を変えたため。元の命令を書いておきます。

さらに画像にはありませんが、メモリを開放するために最後の行に「dealloc(newmem)」を追加します。

 

このチートスクリプトのON/OFF制御するためにFile→Assign to current cheat tableでテーブルに追加。追加された行にチェックを入れるとON。チェックをはずすとOFFになります。

 

Cheat Engineの使い方:スピードハック

プロセス速度を変更する方法です。(いわゆるスピードハック・加速)

手順は簡単で、Enable SpeedHackにチェックを入れるのみです。

ce-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(チートがまとめられたもの)

AoB:Array of Byte

BP:Break Point

CEM:Cheat Engine Memory

 

 

思ったこと

・Googleで「cheat engine」と入力したところ、「ツムツム」「モンスト」が候補に出ていました。有利に進めたいのはわかりますが、正規プレイしている方にとって迷惑でしょう、やめましょう。また、これらではチート行為が禁じられています。

・高度編は簡単とは言えないかもしれませんが、アセンブラの命令の知識を勉強すると理解できるはずです。

 

 

おすすめの書籍

アセンブラやデバッグに関する知識やテクニックを知るためには下記の書籍が非常に参考になります。

デバッガによるx86プログラム解析入門【x64対応版】
デバッガによるx86プログラム解析入門【x64対応版】

↑ 以前は64ビットに対応しておらず、絶版になっていましたが、最近新しくなって再販されました。私は再販前の絶版本を中古で購入したほどです。おすすめの1冊です。


 

クラッカー・プログラム大全 新装版
クラッカー・プログラム大全 新装版

↑ サンプルプログラムなども用意されています。シリアルコードをはじき出したりと実践しながら楽しめます。
中古しかありませんが、買う価値はありそうです。


 

リバースエンジニアリングバイブル ~コード再創造の美学~
リバースエンジニアリングバイブル ~コード再創造の美学~

↑ すごく実用的です。貴重な手法がたくさん書いてあります。その為、中/上級者向けかもしれません。


 

最初の2冊はデバッガーの使い方などが書かれています(主にOllyDbg)。初心者にとって内容は難しいかもしれませんが、参考になる部分はたくさんあります。気になったら是非購入してみてください。

 

まとめ

以上がCheatEngineの使い方や用語です。全て自己責任でお願いします。またしつこいですが、オンラインゲームなど解析が禁止されたアプリケーションでの使用は絶対にしないでください。(私が配布しているサンプルプログラムは許可しています。)

今回は簡単なサンプルプログラムでしたので簡単に書き換えなどが可能でしたが、他のプログラムだと複雑なアセンブリ処理もありますのでこう簡単にはいきません。

なかなかこの手順を書いたサイトが無かったり、説明が少なかったりしたので記事にしました。参考になれば嬉しいです!共有してくれると飛んで喜びます。

 

■使い方その2の記事を書きました!
CheatEngineの使い方2。ログイン認証を突破する!メソッド処理改変してみよう

 - IT