0
1

More than 1 year has passed since last update.

Kotlinプロジェクトでどこまでキーを隠蔽化できるか(その3:ProGuardの利用)

Posted at

Kotlinを使ってAndroidアプリを作った際に、NCMBのアプリケーションキーとクライアントキーをどこまで隠蔽化できるのか試しています。前回はC++を使ってコンパイル、隠蔽化する方法を試しました。今回は難読化を実現するProGuardを使ったらどうなるのか試しています。

ProGuardについて

ProGuardはAndroid Studio標準で使えるコードの圧縮、最適化、難読化を行うライブラリです。今回は特にオプションを指定せず使ってみました。

デバッグ環境でも適用する

デフォルトではリリースビルドでのみProGuardが適用されるので、デバッグ環境でも使えるようにします。app/build.gradleを編集します。

android {
    // 省略
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        // 追加
        debug {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

proguard-rules.pro は特に編集していません。

Android SDKを導入する

次にNCMBのAndroid SDKを導入します。これはイントロダクション (Android) : クイックスタート | ニフクラ mobile backendに沿って進めてもらえば問題ありません。具体的には次の手順を行います。

  1. GitHubのリリースページからSDKをダウンロードして展開
  2. NCMB.jarをapp/libsディレクトリに入れる
  3. app/build.gradle の編集
  4. app/src/main/AndroidManifest.xml の編集

コードを修正する

MainActivity.kt を修正します。まずSDKを読み込みます。

import com.nifcloud.mbaas.core.NCMB;

そしてNCMBを初期化します。 YOUR_APPLICATION_KEYYOUR_CLIENT_KEY はそれぞれ書き換えてください。

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    NCMB.initialize(this.getApplicationContext(),"YOUR_APPLICATION_KEY","YOUR_CLIENT_KEY");
    // 省略
}

これで完了です。

ビルドする

後は普段通りAndroidアプリをビルドします。

jadx-guiで見る

jadx-guiで見た内容です。

ScreenShot__2021-11-05_14_41_17.jpg

難読化される際にメソッド名は書き換わっています。しかしキー自体は文字列なので、そのまま出力されています。 NCMB.initialize が本来のメソッドなので、それを探しても見つからないという点がちょっとしたメリットですが、キー自体は露呈してしまうので、多少面倒くらいにしかならなそうです。

まとめ

ProGuardはコードの難読化、最適化ツールなので、キーの隠蔽化という目的には適していません。隠蔽化するのであればC++を使った方法が良さそうです。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1