Обфускация кода во Flutter (Android)

Dec 15 2022
История начинается, когда мы собирались опубликовать наше флаттер-приложение в рабочей среде. Но перед этим приложение прошло процесс VAPT (оценка уязвимостей и тестирование на проникновение).
Фото FLY:D на Unsplash

История начинается, когда мы собирались опубликовать наше флаттер-приложение в рабочей среде. Но перед этим приложение прошло процесс VAPT ( оценка уязвимостей и тестирование на проникновение ).

Что такое обфускация кода?

Обфускация кода — это процесс, который делает код программы трудным для понимания, обычно с целью затруднить реинжиниринг или модификацию. Это можно сделать с помощью различных методов, таких как создание нечитаемых имен переменных и функций или добавление в код дополнительных уровней косвенности или сложности. Обфускация часто используется для защиты интеллектуальной собственности или предотвращения злонамеренного вмешательства в программу. (Спасибо ChatGPT ).

Почему обфускация кода?

Если вы разрабатываете приложение, в котором безопасность пользовательских данных превыше всего, вы не можете скомпрометировать его. Хотя защита от дурака — это миф. Но мы можем максимизировать его до некоторой степени, используя следующие методы:

  1. Сократите свой код (или встряхните дерево) : он обнаруживает и безопасно удаляет неиспользуемые классы, поля, методы и атрибуты из вашего приложения.

3. Включить proguard: используйте правила proguard, чтобы определить, какие файлы вы не хотите изменять в процессе минимизации и сжатия.

Давайте перейдем к части «Как»

Обфускация с помощью команды флаттера

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. Храните proguard-rules.pro в папке приложения, чтобы вы могли определить свои правила внутри него. Прочитайте здесь, как определить правила proguard.
  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.**
    

Теперь пришло время для профессионального совета

Если вы дошли до сюда, то вот вам подарок. Ваше приложение продолжает падать после enbaling proguard?

Попробуйте этот хак, чтобы отладить его:

Замените выпуск на отладку и запустите приложение в режиме отладки.

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

Это все на сегодня. Спасибо, что остались до конца. Предложения приветствуются.

Давайте подключимся сейчас в Twitter , Instagram или LinkedIn .