NHN Cloud NHN Cloud Meetup!

AppGuardのUnreal Engine保護機能

モバイルアプリのセキュリティソリューションである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ファイルに存在する関数のうち、変更してはいけない関数を除き、名前を識別できないように変更します。関数を難読化することにより、ハッカーが改ざんしようとするターゲット関数を見つけにくくします。

 

NHN Cloud Meetup 編集部

NHN Cloudの技術ナレッジやお得なイベント情報を発信していきます
pagetop