NHN Cloud Meetup 編集部
AppGuardのUnreal Engine保護機能
2019.12.19
801
モバイルアプリのセキュリティソリューションであるAppGuardは、アプリケーションコードの改ざんを防止することができ、メモリや速度、コードを改ざんする各種ツールをパターンやヒューリスティックな方法で検出し、これらを制裁できる機能を提供します。
AppGuardには次のようなメリットがあります。
- コードの改ざんを根本的に防止できる
- パターンやアクティビティ解析をもとに、さまざまな改ざんツールを検知し、制裁処理ができる
- ウェブ上のコンソールでは、AppGuardを通して検知した情報の照会し、制裁の理由を確認できる
- 簡単な操作で強力にアプリを保護することができる
- ゲーム、ショッピング、簡易決済などの様々なサービスでの保護実績があり、各種アビューズ対策やアプリ改ざんに対する保護に貢献
AppGuardが提供する主な機能です。
- ウェブコンソールによるアプリケーション保護により便利なコンパイル防止機能を提供
- ファイルの整合性を通じたアプリケーション改ざんの検出
- root化、エミュレーションなどアビュージング環境の検出
- スピード操作検出
- 各種改ざんツールのパターンと行動基盤から検出
- オペレータによる手動制裁ではなく、システムでの自動制裁により、リソースコストを削減
AppGuardレベル別機能と、新しく追加されたUnreal Engine基盤のゲームのコード保護機能について簡単に説明します。(Androidのバージョンを基準に作成)
1. AppGuard適用レベルの概要
AppGuard適用時、適用レベルを設定することができます。レベル別の機能は次のとおりです。
機能 | レベル1 | レベル2 | レベル3 |
---|---|---|---|
マニフェスト、署名改ざん検査 | O | O | O |
ゲームコードとJavaコード(DEX)改ざん検査 | O | O | O |
OSroot化環境検査 | O | O | O |
エミュレータ環境検査 | O | O | O |
チート検査 | O | O | O |
Javaコード(DEX)暗号化 | O | O | |
ゲームコード暗号化(Cocos-2dx、Unity mono、Unreal Engine) | O | O | |
ゲームコード暗号化(Unity il2cpp) | O | ||
メモリ改ざん防止 | O | ||
AppGuard自主モジュール防御強化 | O |
サービスの種類別に推奨しているレベルは次のとおりです。
- 通常アプリ:レベル1以上
- ゲームアプリ:レベル2以上
- 金融系アプリ:レベル2以上
※AppGuard レベル3は強力な機能が適用されています。
サービス配布前にAppGuard レベル3を適用したアプリで品質チェック(QA)を実施し、安定性を必ずご確認ください。
アプリにAppGuardを適用する際は、レベル別の機能をご確認いただき、サービスの特性に見合ったレベルを選択して適用してください。
2. Unreal Engine保護機能
「リネージュ2 レボリューション」、「アーキエイジビギンズ」、「BLADE for Kakao」、「OVERHIT」、「イカロスM」のようなゲームがUnreal Engine基盤で製作されています。最近では「PLAYERUNKNOWN’S BATTLEGROUNDS」がUnreal Engine基盤のモバイルで製作されており、世界的に人気を博しているPCゲーム「Fortnite」もUnreal Engine基盤のモバイルとしてリリースされる予定です。
このようなモバイルゲーム市場の傾向から、AppGuardに新しく追加されたUnreal Engineゲームコードの保護機能(コードファイルの暗号化とメソッド名の難読化)について簡単に紹介します。
Unreal Engineゲームコードファイルの暗号化
Unreal Engine基盤で製作されたアプリのゲームコードファイルは、APKファイル>lib>armeabi-v7aフォルダ内のlibUE4.soファイルです。AppGuard レベル2 / レベル3を適用すると、ゲームコードファイルの先頭の16384 Byteだけを暗号化して別々に保存し、元のゲームコードファイルの先頭16384 Byteを意味のない値で満たして壊します。
ファイルの最前部には、当該ファイルをメモリにロードする際に使用する様々な情報を含んだヘッダが存在します。ヘッダ部分を壊すことで、IDA Proのような解析ツールを使った分析を妨害することができます。
メソッド名の難読化
Unreal Engine基盤で製作されたアプリで使用されるゲーム関連の関数は、すべてlibUE4.soファイルに含まれています。libUE4.soは、関数と変数が少なくとも10万個以上含まれています。(そのため容量も非常に大きいです。)
ハッカーがゲームアプリを改ざんする際、必要な関数を探すために、IDA proのような分析ツールに依存して関数名を検索します。名前を検索するときは、Attack、Defence、Speedなど該当ゲームで使われそうな単語を使用します。(FPSではbullet、spreadなどの単語を、RPGではmonster、questのような単語を使用するといったイメージ)
AppGuard レベル2 / レベル3を適用すると、libUE4.soファイルに存在する関数のうち、変更してはいけない関数を除き、名前を識別できないように変更します。関数を難読化することにより、ハッカーが改ざんしようとするターゲット関数を見つけにくくします。