イベント
[Unite]大損害を与えるスマートフォンゲームのチートに,いかに対策するか。「スマホゲーム開発者が知っておくべきチートのリスク&対策」をレポート
「Unite 2017 Tokyo」公式サイト
4Gamer「Unite 2017 Tokyo」記事一覧
登壇したのはチート対策セキュリティツール「CrackProof for Unity」を開発したDNPハイパーテック マーケティング部の小林亜実氏で,講演の最後にはこのツールのプレゼンテーションも行われた。
スマートフォンゲームに大損害を与えるチート
小林氏はまず,今回の講演に使われるチートという言葉を,「ゲームを優位に進めるために制作者の意図しない動作をさせる不正行為」と定義した。スコアやヒットポイントを操作したり,自動的にプレイさせて報酬を獲得したり,レアキャラクターや課金アイテムを入手したりするほか,位置情報を使うゲームでは,GPSの情報を偽装するなど,時代の流れに応じてさまざまなチートが行われてきたという。
当然ながら,対戦やランキングにチーター(チート使用者のこと)がいると,一般ユーザーは離れてしまうし,課金アイテムを操作されると収益が損なわれる。アプリストアのレビューでも悪評が立ち,新規ユーザーの獲得も困難になる。ゲームを運営していく上でチート対策は重要な課題であると小林氏は語った。
具体的なチートの手口はさまざまで,メモリに保存されたパラメータを操作する「メモリ改ざん」,アイテムやキャラクターの使用権を不正に取得する「ライセンス認証解除」,望みのキャラクターが手に入るまでインストールと消去を繰り返す「リセマラ」,ゲームプレイを自動化する「マクロ」,ゲームサーバーと端末のやり取りを操作する「通信データ改ざん」などが挙げられた。このため,対策は簡単ではないという。
講演では,メモリ改ざんチートが実演された。これは,実際に出回っているツールを使い,デモンストレーション用に作られたゲームをチートしてみるという内容だ。ゲームは「敵と1対1で戦うターン制RPGで,課金アイテムを使うと攻撃力をアップできる」というものだったが,本来なら倒せない強敵も,チートツールで増やした課金アイテムを使って簡単にクリアできることが示された。
このように,チートはゲームシステムに致命的な影響を及ぼすだけでなく,知識がなくても使えるチートツールが手軽に入手できることも問題だと小林氏は警鐘を鳴らす。
チート対策チームを設置するも,不正改造されたゲームが出回って大打撃に
パブリッシャのA社は,チート対策の専門チームを置き,ゲームが解析されてしまわないような対策を行った。しかし,今度は不正改造されたapk(Androidのゲームプログラムをパッケージ化したファイル。つまりゲーム本体)が出回ってしまったという。どういう手口でゲームが解析されたのだろうか。
多くのAndroidアプリは,C#というプログラミング言語で制作される。プログラムを記述したソースコードはコンパイルされてDLL(ダイナミックリンクライブラリ。プログラムの機能をモジュール化したもの)となり,apkファイルに圧縮される。apkファイルは,正規のものであることを証明する電子署名を施されたうえでGoogle Playで配布され,ユーザーの端末にインストールされる。ゲームの実行時,DLLはCPUが理解できる機械語に翻訳されて,所定の役割を果たすという。
このDLLにセキュリティ上のリスクがあると小林氏は指摘する。DLLは,ツールを使えば簡単にソースコードに戻すこと(逆コンパイル)ができてしまうからだ。ソースコードは制作者が記述したプログラムそのものであり,ゲームがどのような処理をしているかが最も分かりやすい。簡単に解析でき,それが改造やチートにつながるという。
A社では解析対策として難読化(逆コンパイルしても,元どおりのソースコードにならないようにする処理)を施していたが,それでも結局改造されてしまった。小林氏は,難読化だけでなく,プログラムの暗号化やハッシュ値のチェック,部分的なネイティブファイル化といった対策を併用し,逆コンパイルのハードルを上げることが有効だと語った。
チーターがアプリを解析するうえで,デバッガも強力な武器になる。これを防止するため,デバッガを検知する関数やクラスで対策するという手もあるが,この場合,制作者もデバッガが使えなくなり,また,デバッガの検知部分を書き換えられると意味がなくなってしまう。
A社のケースにおけるもう1つの問題は,不正改造されたapkファイルが端末にインストールできてしまったことだ。上記のとおり,正規の電子署名がないとGoogle Playで配布することはできない。セキュリティ的には完璧に思えるのだが,ここに盲点があったと小林氏は指摘する。
オリジナルと異なる電子署名でもapkは作れるし,これをGoogle Playではない,いわゆる「野良サイト」から配布すればよいというのだ。
起動時に電子署名を検証させれば,不正なapkファイルを弾けるものの,先に挙げたデバッガの例と同様,検証する部分を書き換えられると,この対策は無効になる。このように,まさにいたちごっこであり,根本的な対策の困難さがよく分かる。
最後に小林氏は,自社開発のチート対策ツール「CrackProof for Unity」の機能を紹介した。「CrackProof」シリーズはこれまでWindowsやiOS,Androidに対応していたが,2016年6月からUnityで作ったDLLにも使えるようになったとのこと。
逆アセンブルやメモリ改ざん,デバッガによる解析などさまざまなチート手法に対応し,必要となるセキュリティにチェックを入れて,完成したアプリをアップロードすれば,クラウドで自動的にチート対策を行ってくれるという。アプリの規模や回線状況にもよるが,要する時間は数分前後で済む。
純国産ツールであり,現時点ではゲームタイトル数で424以上の採用実績を持っている。ゲーム以外にも金融や産業の分野で用いられており,中には10年以上継続して使用されている例もあるとのことだ。
また,同社ではアプリの通信を秘匿化する「DNP Multi-Peer VPN」に加え,スマートフォンに不正アプリが仕込まれている場合に起動を止める「アプリ保護サービス」など,さまざまなソリューションを提供していると述べた。
チートの手口はさまざまで,対抗する手段も複数あるものの,それぞれに弱点を抱えている。そのため,今後も多面的な対策が必要であると小林氏は講演を締めくくった。
「Unite 2017 Tokyo」公式サイト
4Gamer「Unite 2017 Tokyo」記事一覧
- この記事のURL:
キーワード