ENGLISH

Android/Javaアプリを難読化して強力に保護するには

ブログ記事シリーズ「はじめてのPreEmptive Protection」第4回目では、モバイルアプリの難読化でよく使われているツールを紹介し、AndroidアプリやJavaアプリのセキュリティ強化を図る際に役立つ機能の詳細に迫っていきたいと思います。

ブログ記事シリーズ「はじめてのPreEmptive Protection」とは・・・。

『ソースコードの難読化は本当に必要なの?』
『難読化でよく使われているツールはどれ?』
『有料版と無料版のツールには違いがあるの?』

といった皆様がもつ疑問や不明な点を解消するために、難読化とその専用ツールにまつわる情報を分かりやすくお伝えしていく連載形式のブログ記事になります。

<はじめてのPreEmptive Protectionシリーズの記事一覧>

1)「難読化を正しく行うために必要なことは?」編
2)「JavaScriptと難読化ツール、有料版と無料版の違い」編
3)「.NETやXamarinで難読化を行うことは重要です。」編
4)「Android/Javaアプリを難読化して強力に保護するには」編(→当ページ)

※ 弊社のサイトを初めてご覧になった方は、会社紹介のブログ記事からお読みください。

*目次*

  1. モバイルアプリの難読化でよく使われているツール
  2. 無料版のツールで行うセキュリティ対策には限界がある
  3. 難読化以外にもセキュリティ強化に役立つ機能とは?

モバイルアプリの難読化でよく使われているツール

当ブログ記事シリーズの「.NETやXamarinで難読化を行うことは重要です。」編を読むと、 .NET/Xamarinアプリは逆コンパイルによって難なく解析できてしまうという現状が分かるかと思います。同様にプログラムが解析されやすいため、難読化を行うことは必須だと言えるのが、KotlinやJavaで開発されたモバイルアプリです。

これらのモバイルアプリで難読化を行う際によく使用されるツールには、「ProGuard」もしくは「R8」(※1)という無料版のツールが挙げられます。「ProGuard」はAndroidアプリの開発者向けに提供されているSDKに付属されたツールであり、「R8」はAndroid Studio 3.4やAndroid Gradle プラグイン 3.4.0 以上でデフォルト使用されるコンパイラです。

(※1) Android Gradle プラグイン 3.4.0 以上を使用したプロジェクトのビルドでは、ProGuardによるコードの難読化が行われなくなり、代わりにR8が使用されるようになりました。それ以降も既存のProGuard設定ファイルが参照されることに変わりはなく、事前に設定内容を変更しておく必要もありませんでした。そのためでしょうか、R8は「ProGuard の後継」と呼ばれていますが、実際はGoogle社が開発したR8とは異なり、ProGuardの開発元はベルギーにオフィスを構えるGuardsquare社です。また、現在もオフィシャルサイトにてProGuardが提供されています。

無料版のツールで行うセキュリティ対策には限界がある

ProGuardやR8は無料版のツールでありながら、クラス・メソッド・フィールド名などを短く変えるといった「難読化」の機能以外にも、アプリから未使用の部分を探し出して削除する「圧縮」、コードを検査して書き換える「最適化」といった機能も搭載されているため、大変便利です。

と言っても、高度な難読化を行うには、必要な機能が十分に揃っていません。たとえ名称を変更する機能を使用して難読化を行ったとしても、リバースエンジニアリングなどでクラッキング(=不正な解析や改ざん)を試みるような攻撃者は、いとも簡単にプログラム内のロジックや処理の内容を見破ってしまいます。

そのため、セキュリティレベルを向上させてクラッキングを防ぐには、名称を変更するだけの難読化では事足りず、「文字列の暗号化」や「制御フローの難読化」といった他の機能も必要になってくるのです。(参考:「難読化を正しく行うために必要なことは?」編

難読化以外にもセキュリティ強化に役立つ機能とは?

難読化ツールのパッケージ製品「PreEmptive Protection」の中で、Java, Android, Kotlin, Springなどに対応しているのが「DashO」であり、上記のような機能が必要十分に搭載されています。次の動画では、既存のGradleプロジェクトに当ツールを統合し(※2)、Androidアプリを保護することで、悪意のあるリバースエンジニアリングが困難になるというデモンストレーションをご覧いただけます。

DashO」には、難読化機能以外にも、セキュリティ対策の際に活用できる機能が搭載されています(※3)。例えば、ソースコードにモジュールを埋め込むことでアプリの実行時にパッケージ全体を参照し、オリジナルの署名と相違がある場合は「改ざん発生の恐れあり」という警告メッセージを表示させることができるチェック機能などがあります。

(※2、※3)Android Gradleプラグインを使用したプロジェクトのビルド処理に当ツールを統合することができる「DashO Gradleプラグイン(Android用)」を提供しています。この統合を行った場合、名称の変更やコード除去、および最適化の処理については、上記で紹介した「R8」の機能を使用する設定に切り替わります。

DashO」の難読化機能やチェック機能を利用して、自社のIP(知的財産)を外部から守るという事例の紹介資料は、下記URLからリンクされている製品紹介ページよりダウンロード可能です。主な機能の説明とあわせて、ぜひ一度ご覧ください!

・当ツールの詳細を知るにはこちらから
https://www.agtech.co.jp/preemptive/dash_o/product/
(ページ左端の「DashO メニュー」からは、評価版の申し込みなど他のページにアクセスできます。)

– 製品パンフレットをダウンロードして価格表をチェック!
https://www.agtech.co.jp/preemptive/docs-download-form-introduction_second/

一覧に戻る

Contactお問い合わせ

お気軽にお問い合わせください。

お問い合わせ

    必須会社名

    個人のお客様は「個人」と入力してください。

    必須お名前
    必須メールアドレス
    必須メールアドレス(確認)
    必須ライセンス ありなし
    ダウンロード目的