Flutter でのコード難読化 (Android)

Dec 15 2022
話は、フラッター アプリをプロダクションに公開しようとしたところから始まります。しかし、その前に、アプリは VAPT (脆弱性評価と侵入テスト) プロセスに進みました。
UnsplashのFLY:Dによる写真

話は、フラッター アプリをプロダクションに公開しようとしたところから始まります。しかし、その前に、アプリは VAPT (脆弱性評価と侵入テスト) プロセスに進みました。

コード難読化とは

コードの難読化は、プログラムのコードを理解しにくくするプロセスであり、通常はリバース エンジニアリングや変更を困難にすることを目的としています。これは、変数名や関数名を読み取れないようにしたり、コードに間接的または複雑なレイヤーを追加したりするなど、さまざまな手法を使用して実行できます。難読化は、知的財産を保護したり、プログラムの悪意のある改ざんを防止したりするためによく使用されます。(ChatGPT に感謝します )。

コードの難読化はなぜですか?

ユーザー データのセキュリティがすべてに優先するアプリを開発している場合、セキュリティを侵害することはできません。絶対確実なセキュリティは神話ですが。ただし、次の方法を使用することで、ある程度最大化できます。

  1. コードの圧縮 (またはツリー シェーク) : アプリから未使用のクラス、フィールド、メソッド、および属性を検出して安全に削除します。

3. プロガードを有効にする : プロガード ルールを使用して、縮小および縮小のプロセス中に変更しないファイルを定義します。

方法の部分にジャンプしましょう

flutter コマンドを使用した難読化

export version=1.0.0
flutter build apk --release --shrink --obfuscate --split-debug-info=misc/mapping/${version}

buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled true
            useProguard true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

説明 :

  1. リリース モードの署名構成を使用します。.jks ファイルと、署名資格情報を記載できる key.properties を作成する必要があります。
  2. app フォルダー内に proguard-rules.pro を保持して、その中でルールを定義できるようにします。プロガードルールを定義する方法については、こちらをお読みください。
  3. 難読化中にフラッター ファイルを保護するには、proguard-rules ファイル内で次の行を使用します。
  4. #Flutter Wrapper
    -keep class io.flutter.app.** { *; }
    -keep class io.flutter.plugin.**  { *; }
    -keep class io.flutter.util.**  { *; }
    -keep class io.flutter.view.**  { *; }
    -keep class io.flutter.**  { *; }
    -keep class io.flutter.plugins.**  { *; }
    

    -keep class org.xmlpull.v1.** { *;}
     -dontwarn org.xmlpull.v1.**
    

さあ、プロのヒントの時間です

ここまでたどり着いたあなたにプレゼントがあります。プロガードを有効にした後、アプリがクラッシュし続けていますか?

このハックを試してデバッグしてください:

リリースをデバッグに置き換え、アプリをデバッグ モードで実行します。

buildTypes {
        debug {
            signingConfig signingConfigs.release
            minifyEnabled true
            useProguard true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

それが今日のすべてです。最後までお付き合いいただきありがとうございました。提案は大歓迎です。

Twitter、Instagram、LinkedInで今すぐつながりましょう。