見やすい!Cheat Engineのコンパクトモード

Cheat Engineでチートの数が増えてくると、ウィンドウに収まらなくなり見づらくなりませんか?今回はCheat Engine Forumにあった便利なLuaスクリプト「コンパクトモード」をご紹介します!


スクリプト実行後


function cycleFullCompact(sender,force)
  local state = not(compactmenuitem.Caption == 'Compact View Mode')
  if force~=nil then state = not force end
  compactmenuitem.Caption = state and 'Compact View Mode' or 'Full View Mode'
  getMainForm().Splitter1.Visible = state
  getMainForm().Panel4.Visible    = state
  getMainForm().Panel5.Visible    = state
end

function addCompactMenu()
  if compactmenualreadyexists then return end
  local parent = getMainForm().Menu.Items
  compactmenuitem = createMenuItem(parent); parent.add(compactmenuitem)
  compactmenuitem.Caption = 'Compact View Mode'
  compactmenuitem.OnClick = cycleFullCompact
  compactmenualreadyexists = 'yes'
end

addCompactMenu()
上記のスクリプトを実行すると↓画像のようにCompact View Modeというメニューが追加され、
クリックするとコンパクトモードに、もう一度クリックすると元に戻ります。


CTを開いてすぐにコンパクトモードにしておきたい場合は、1番下のaddCompactMenu()の下にcycleFullCompact(nil,true)を付け足し、Table -> Show Cheat Table Lua Scriptに貼り付けてください。コンパクトモードとCheat Engineのオートアタッチ機能を併用すれば快適にゲームをスタートできます。

常時メニューに表示しておきたい場合は、Cheat EngineがインストールされているディレクトリにautorunフォルダがあるのでそこにLuaスクリプトをコピーすれば完成です。


Auto AssemblerスクリプトからCompact View、Full Viewを切り替えたいときは以下のようになります。
[ENABLE]
LuaCall(cycleFullCompact(nil,true))
 
[DISABLE]
LuaCall(cycleFullCompact(nil,false))

参考リンク

リバースエンジニアリングの勉強法

Lenas Reversing for Newbies

The Legend of R4ndom Tutorials


ゲームのチートに関するものではなく、ソフトウェアクラッキングについてのTutorialです。

両者は共通する点が多く、私はこのTutorialをやっていたおかげでCheat Engineを使い始めた時もすんなりと入っていけました。実際に存在していたプログラムを解析するためとても実践的で、デバッガの使い方を覚えるのにもってこいの内容です。


身元不明のプログラムも含まれているため、解析する場合は念のため仮想マシン上で行うようにしてください。私はVMwareにWindows XPをインストールして行っています。





Cheat Engineに関するクイズです。解けるかな?


出題1:
使用するゲームはWindows XPにデフォルトでインストールされていたピンボールです。
ゲーム内で使用されているスコアは1レベルポインターになっています。
このスコアの静的なポインターのアドレスとオフセットをポインタースキャンを使わずに解析し、求めてください。

例 [[[["Tutorial-i386.exe"+002426E0]+ C]+ 14]+ 0]+ 18

ヒント:
ブレークポイントとコールスタックを使用して値をバックトレースしてみよう。
コールスタックは関数の戻り先(アドレス)が記載されている表みたいなものです。
Cheat Engineの機能break and traceでもコールスタックを形成できます。

3D PINBALLのダウンロード先



出題2:

次に使用するゲームはKindergartenでUnityで作成されています。

ゲーム内で使用するお金は何らかのクラスのメンバ変数として定義されています。

そのクラス名をCheat Engineの"Mono Features"を使用して特定してください。


参考URL


ヒント:

ゲームを開始してすぐに貯金箱があるので、それを利用してお金のアドレスを見つけることが出来ます。アドレスを見つけなくても勘を働かせれば出来るかも?このゲーム持っている方いないと思いますが、頑張って入手してやってみてください。1337xで検索すれば普通に見つか...


出題1、2ともに答えが分かった方はコメント欄に書き込んでもらえるとありがたいです!