ゲームで学ぶセキュリティ「Squally」で遊んでみた

はじめに

zennで見かけたこれらの記事を参考に、StramのSquallyというゲームをプレイしてみました!

ゲームの内容としては、いわゆるゲームのチートに対しての防御であるゲームセキュリティについて学べるコンテンツです。
(厳密にいうとチートを学び、ゲームセキュリティの理解を深めましょうという感じです。)

RPGゲームを進める中で遭遇する敵キャラを倒すために、アセンブラレベルでの関数書き換えやメモリの改変などを学ぶイメージです。

このあたりの技術・知識はゲームの分野にとどまらず、マルウェアの解析やバッファオーバーフロー対策など、セキュリティ分野全般において基本的かつ重要だなと思い今回プレイしてみました。

ちなみに...

Steamで2,800円でした。

ただしシステム要件が少し特殊だったのでプレイしたい方は注意

僕はM1チップ・Mac OS 26 だったの動作せず、休みの日に快活クラブのWindowsPCで遊びました笑

ゲームプレイの様子

主人公の見た目がなかなかにいかついです。

ストーリーモードとチュートリアルがありました
チュートリアルはこんな感じ

ストーリーを進めてみる

このような一般的な2D RPGで、ゲームとしてのクオリティもそこそこ高めな感じでした。

すすめなあああいのでハッカーモードに切り替え

↓初めてのバトル
相手の体力1000に対してこちらの攻撃は4、しかも攻撃後、225x8回?ぐらい回復されるのでこのままでは倒せない

相手の回復量をマイナスにすると勝手に倒れてくれそうでは?ということでハッカーモードに突入

すると回復量を格納しているコードがあったので編集

↑9999にしてみたが一回の回復量が-225になりバタンキュウでした。

お次はブレードとハンマー的な攻撃に対して角度を編集してよけていく場面

ブレードの角度を編集して当たらないように改ざん

この辺りからスクリプトの行数も増えてきます

↓ハンマー的なやつも下向きに固定しました

別ベクトルのゲームも存在。

カードバトルタイプでしたがこちらもmovなど関数を使って攻撃したりで、アセンブリ言語の理解を別角度からイメージできるようになっていました。

↓これまでと同じように、ダメージ軽減の敵キャラに対してダメージ増加になるよう改ざんして攻撃

↓ゴブリンを救出して仲間にできた

2時間ほどプレイしましたが出てくる技術としてはデータ操作の関数ぐらいでした
(add, sub, mov, inc, dec...)

チュートリアルの方も遊んでみました

敵の体力が100に対して、こちらの攻撃は1ケタ

自動回復もあった気がする

というわけでハッカーモードを起動

ただし今回使えそうなスクリプトはない…

そこで登場するのがCheat Engineです。

基本的に市販のゲームに対して使うのはグレーかと思いますが、Squallyは公式に認められており、
そもそもこれを使わないと攻略できないようになっているのでインストールしてみました。

敵の体力を0に改ざんできればクリアできるのでは?ということで敵の体力値である100で検索。

ただヒットが769件ということで多すぎる…ので、

一旦攻撃してみる。与えたダメージは13でした。くそう。

ということで最初が100だったけど87に変わった値が格納されているメモリ番地でスキャンすると一意に定まったのでこれだ!

試しに値を1に変更してみると反映されたのでこれのようです。急に体力が減って敵もびっくりでしょう。

この値を編集すれば良いということがわかったので0にして倒します。(試しに増やして遊んでみたらよかった…)

敵が倒れる演出から画面の切り替えが一瞬すぎて倒したところが撮れてないですがクリアしました。

レベル2は少数の体力値だったので、メモリ内で検索するデータタイプをfloat型に変更して検索。

先ほどと同じように初期が100.0で、次に87.0になった値が入っているメモリ番地を検索して0にするとクリア!

ちなみにこの次のレベル3はクリアするところまで行けずでした…
敵キャラの体力値が見えず、わかるものとしては与えたダメージ値と敵の自動回復の値です。一見行けそうなんですが何か見落としてるのかも?

ちょっと毛色が違うものもありました。(16進数ゲームだったと思います。)

敵キャラを倒すのではなく。所持金を増やして爆買いしちゃおうというゲーム構成でした。

こちらも攻略法は同じで、初期の所持金2,000コインで検索→試しに何か買ってみて残りの所持金で検索

とすると所持金が格納されているメモリ番地が見つかるのでたんまりもらって爆買い完了

(こちらもクリアした瞬間画面遷移するのでクリア画面はなし)

実際のゲームセキュリティ分野においての対策は?

これらのチート技術に対してどんな対策があるのかも調べてみました。

特にSteamにおいては、Valve Anti-Cheat(VAC)というアンチチートシステムによる自動検知とBAN、さらに近年ではカーネルレベルで動作するアンチチート技術の積極導入が進められているそうです。
(「エンドポイント監視・自動判定」というしくみや思想はEDRに近い?)

  • Valve Anti-Cheat(VAC)はゲームファイル・プロセスを自動で監視し、既知のチート挙動を検出した場合アカウントにフラグを立て、後日BANが発動される仕組み
    • 一部のマルチプレイ対応ゲームに搭載されている模様
  • 最近は『VALORANT』(Vanguard)、『CoD』(RICOCHET)、『Apex Legends』(Easy Anti-Cheat)など、OS内部で高権限で動作するアンチチート技術がSteam対応ゲームでも増えているそう

AIでオンラインゲームの不正を自動検知するサービスなど

最後に

という感じで、アセンブリ言語であったりメモリ改ざんについてゲーム形式の中で学べるコンテンツでした。

アセンブリの方は、初学者であったり一度学んだ人が復習するのにも良いなぁと思いました。

大学でこのゲームを配ってもらって勉強できてたらもう少し楽しめた気がします。

ストーリーもチュートリアルもまだまだクリアし切ってないので暇を見つけて快活クラブで遊ぼうと思います笑

個人的には最近あまりできていなかったCTFのモチベーションが上がりました。

ゲームとしても、そこそこ時間をかけて遊べそうなストーリーもあるのでぜひどうぞ!
海外のYouTuberで、30分 * 10本ぐらいのプレイ動画を出している人がいたので単純計算で少なくとも5時間ぐらいは遊べそうな気がします。