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


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


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


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


3D PINBALLのダウンロード先

https://www.groovypost.com/howto/windows-7-3d-pinball-space-cadet-game/





出題2:
次に使用するゲームはKindergartenでUnityで作成されています。
ゲーム内で使用するお金は何らかのクラスのメンバ変数として定義されています。
そのクラス名をCheat Engineの"Mono Features"を使用して特定してください。


参考URL

https://wiki.cheatengine.org/index.php?title=Mono


ヒント:

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


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


関連記事

4 Comments

-

1は多少なりともプログラム齧ってないと無理なのかな
トレースしてスタック見ても意味がわかりませんし、バックトレースもどんな感じでやっていけばいいのやら

  • 2021/05/04 (Tue) 19:53
  • REPLY

ななし

break and traceのメリットを知りたいです!

1番は手動で引数見ていったらわかったのですが、手作業だといつ読み間違えるかとヒヤヒヤですね。。。(汗)
ピンボールすぐに静的アドレスで助かりました!

ヒントのbreak and trace (instructions) のほうは、使うとどのようなメリットがあるのでしょうか。
backtraceは結局手動なので、普通のbreakpointとの違いがわからず....
一回関数呼び出し元を調べてから呼び出し前にbreak point作って使うのでしょうか?

Kindergartenはしーだがいないみたい...自分でも何言ってるかわからないけど・・・しーどして欲しいな...()

  • 2022/09/19 (Mon) 03:12
  • REPLY

ななし

Kindergartenを買いたくなかったので、Mosh PitというフリーのシューティングゲームのHPについて行ってみました。

Mono Featureはこれを利用して探しに行く、と言うより、気になる動的アドレスが見つかった際にその周りの構造を推定するために使う、という利用方法が主なのでしょうか。

Mosh Pitのような小さいゲームだと全てのクラスを見ることができるのですが、3D RPGなどではクラス数が多く、目的のものを探せなかった経験があって...

  • 2022/09/19 (Mon) 14:40
  • REPLY
ちーたー

なんでもチート

To ななしさん

コメントありがとうございます。

>>1番は手動で引数見ていったらわかった
おめでとうございます!もしよかったら、以下の記事の内容も挑戦してみてください。
https://cheatwhatever.com/blog-entry-57.html

>>break and traceのメリットを知りたい
関数の呼び出し元が階層化されるので見た目がわかりやすいのがメリットだと思います。もちろん手動でブレークポイントを設定して1つずつ戻っていくのもありです。

>>Kindergartenを買いたくなかった
monoを使ってjitコンパイルされているゲームなら何でもOKです!

>>3D RPGなどではクラス数が多く、目的のものを探せなかった経験があって
おっしゃる通り、クラス名やメソッド名を推測して探すのは少し面倒だったりします。
そのため、まずは従来通りのやり方で体力のアドレスを特定し、書き込んでいる命令を見つけた後、その命令に対して"Mono Features"を使用したスクリプトを組みます。

このあたりは以下の記事を参考にしてみてください。
https://wiki.cheatengine.org/index.php?title=Tutorial:Mono:Basic

Cupheadはシーダーがいます。

  • 2022/09/19 (Mon) 22:37
  • REPLY