Code-Verschleierung in Flutter (Android)

Dec 15 2022
Die Geschichte beginnt, als wir gerade dabei waren, unsere Flatter-App für die Produktion zu veröffentlichen. Zuvor durchlief die App jedoch den VAPT-Prozess (Vulnerability Assessment and Penetration Testing).
Foto von FLY:D auf Unsplash

Die Geschichte beginnt, als wir gerade dabei waren, unsere Flatter-App für die Produktion zu veröffentlichen. Zuvor durchlief die App jedoch den VAPT-Prozess ( Vulnerability Assessment and Penetration Testing ).

Was ist Code-Verschleierung?

Code-Verschleierung ist der Prozess, den Code eines Programms schwer verständlich zu machen, normalerweise mit dem Ziel, es schwieriger zu machen, ihn zurückzuentwickeln oder zu modifizieren. Dies kann durch verschiedene Techniken erfolgen, z. B. indem Variablen- und Funktionsnamen unlesbar gemacht werden oder indem dem Code zusätzliche Ebenen der Umleitung oder Komplexität hinzugefügt werden. Verschleierung wird häufig verwendet, um geistiges Eigentum zu schützen oder böswillige Manipulationen an einem Programm zu verhindern. (Dank an ChatGPT ).

Warum ist Code-Verschleierung?

Wenn Sie eine App entwickeln, bei der die Sicherheit der Benutzerdaten an erster Stelle steht, können Sie keine Kompromisse eingehen. Obwohl narrensichere Sicherheit ein Mythos ist. Aber wir können es bis zu einem gewissen Grad maximieren, indem wir diese Methoden anwenden:

  1. Schrumpfen Sie Ihren Code (oder Tree Shaking) : Es erkennt und entfernt unbenutzte Klassen, Felder, Methoden und Attribute sicher aus Ihrer App.

3. Proguard aktivieren: Verwenden Sie Proguard-Regeln, um zu definieren, welche Dateien Sie während des Minifizierungs- und Verkleinerungsprozesses nicht ändern möchten.

Lassen Sie uns zum Wie-Teil springen

Verschleierung mit Flatterbefehl

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'
        }
    }

Erläuterung :

  1. Es verwendet Ihre Signaturkonfigurationen für den Freigabemodus. Sie müssen eine .jks-Datei und eine key.properties-Datei erstellen, in der Sie Ihre Anmeldeinformationen angeben können.
  2. Bewahren Sie proguard-rules.pro im App-Ordner auf, damit Sie Ihre Regeln darin definieren können. Lesen Sie hier , wie Sie Proguard-Regeln definieren.
  3. Um Flatterdateien während der Verschleierung zu schützen, verwenden Sie diese Zeilen in Ihrer proguard-rules-Datei:
  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.**
    

Jetzt ist es Zeit für einen Profi-Tipp

Wenn Sie bis hierher gekommen sind, dann ist hier ein Geschenk für Sie. Stürzt Ihre App nach der Aktivierung von Proguard immer wieder ab?

Versuchen Sie diesen Hack, um ihn zu debuggen:

Release zum Debuggen ersetzen und App im Debugmodus ausführen.

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

Das ist alles für heute. Danke, dass du bis zum Ende geblieben bist. Vorschläge sind willkommen.

Verbinden wir uns jetzt auf Twitter , Instagram oder LinkedIn .