Android Studioの導入(6)~Proguardの設定と難読化の結果の検証方法~

今回は残課題となっていたAndroid Studio上でのProguardを有効にする場合の手順と、Proguardで難読化が行われているかの検証方法についてまとめました。

Proguardを有効にする場合の手順

  • 対象のプロジェクトを開いた状態で、「ファイル > プロジェクト構成」を選択します。
    001
  • 「release」の「Build Types」タブを選択し、「Minify Enabled」を「true」に、Proguard Fileには「proguard-project.txt」の配置パスを設定して、OKを押下します。
    002
  • すると「build.gradle」ファイルに下記のような設定が追加されます。
    buildTypes {
          release {
                minifyEnabled true
                proguardFile 'C:/android/Sakana/proguard-project.txt'
            }
        }
    

    003

  • ちなみに「proguard-project.txt」はEclipseで開発していた時のファイルをそのまま使用しました。
    設定内容は下記の通り。
    </pre><pre>-keep class * extends java.util.ListResourceBundle {
        protected Object getContents();
    }
    -keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
        public static final *** NULL;
    }
    -keepnames @com.google.android.gms.common.annotation.KeepName class *
    -keepclassmembernames class * {
        @com.google.android.gms.common.annotation.KeepName *;
    }
    -keepnames class * implements android.os.Parcelable {
        public static final ** CREATOR;
    }
    -dontwarn com.google.android.gms.*
    -ignorewarnings
    
    004
  • 後は先日お伝えした方法で、署名付きのリリース用apkファイルを作成すればOKです。
    005
  • ビルドが成功しても正しく動作しないことがあるようなので、作成された署名付きのリリース用apkファイルを実機にインストールして動作確認を行うようにしてください。

Proguardで難読化が行われているかの検証方法

  • アプリが正しく動作したら次は、本当に難読化が行われているかの検証を行います。
    まずは作成された署名付きのリリース用apkファイルを作業用フォルダへコピーします。
    今回は、「Sakana-release.apk」ファイルを「C:\Android\work」配下にコピーしましたが場所はどこでもOKです。
    007
  • 続いて配置したapkファイルの拡張子をzipへ変更して、解凍ソフトで解凍します。
    今回の例では、「Sakana-release」というフォルダが生成されましたが、その中のclasses.dexファイルを使用します。
    009
  • 下記のサイトからclasses.dexファイルをclassファイルに変換するためのツールをダウンロードします。
    http://sourceforge.net/projects/dex2jar/files/
    ※「dex2jar-2.0.zip」をダウンロードしました。
  • ダウンロードしたzipファイルを作業用のフォルダへ解凍し、同一フォルダ内に上記の「classes.dex」ファイルを配置します。
    010
  • コマンドプロンプトを起動して、「d2j-dex2jar.bat classes.dex」と実行すると、classes.dexを配置した同じフォルダ配下に「classes-dex2jar.jar」が生成されます。
    012013
  • 生成された「classes-dex2jar.jar」を作業用フォルダへコピーして、拡張子をzipに変更した上で解凍ソフトで解凍します。
    014
  • 「classes-dex2jar」フォルダ配下には、classファイルが多数配置されています。
    その中で自分が作成したパッケージ配下を参照し、「a.class、b.class、c.class・・・」と身に覚えの無いclassファイルが存在してれば、難読化は成功しているはずです。
    015

おまけ~classファイルを逆コンパイルしてjavaファイルに変換する方法~

  • 難読化の確認だけであれば上記までのチェックでOKだと思うのですが、「せっかくなので難読化状態のjavaの中身も見たい!」と言う場合は、classファイルを逆コンパイルしてjavaファイルを生成することができます。
  • 下記サイトから逆コンパイル用のツールを環境に合わせて取得します。
    http://varaneckas.com/jad/
    ※今回は「Jad 1.5.8g for Windows 9x/NT/2000 on Intel platform」をダウンロードしました。
  • ダウンロードしたzipファイルを作業用のフォルダへ解凍し、同一フォルダ内に逆コンパイルしたいclassファイルを配置します。
    ※今回はお試しで「a.class」を配置しました。
    016
  • コマンドプロンプトを起動して、「jad.exe -8 -d output -s .java -r *.class」と実行すると、outputフォルダが生成され配下に逆コンパイルされたjavaファイルが出力されます。
    017018

今回は以上となります。良かったらご参考まで

サブコンテンツ

このページの先頭へ