Offuscamento del codice in Flutter (Android)

Dec 15 2022
La storia inizia quando stavamo per pubblicare la nostra app flutter per la produzione. Ma prima, l'app è passata al processo VAPT (Vulnerability Assessment and Penetration Testing).
Foto di FLY:D su Unsplash

La storia inizia quando stavamo per pubblicare la nostra app flutter per la produzione. Ma prima, l'app è passata al processo VAPT ( Vulnerability Assessment and Penetration Testing ).

Cos'è l'offuscamento del codice?

L'offuscamento del codice è il processo che rende difficile la comprensione del codice di un programma, solitamente allo scopo di rendere più difficile il reverse engineering o la modifica. Questo può essere fatto attraverso varie tecniche, come rendere illeggibili i nomi delle variabili e delle funzioni, o aggiungendo ulteriori strati di indirizzi o complessità al codice. L'offuscamento viene spesso utilizzato per proteggere la proprietà intellettuale o per impedire manomissioni dannose di un programma. (Grazie a ChatGPT ).

Perché l'offuscamento del codice?

Se stai sviluppando un'app in cui la sicurezza dei dati dell'utente è al di sopra di tutto, non puoi comprometterla. Anche se la sicurezza infallibile è un mito. Ma possiamo massimizzarlo in una certa misura usando questi metodi:

  1. Shrink your code (o tree shaking) : rileva e rimuove in modo sicuro classi, campi, metodi e attributi inutilizzati dalla tua app.

3. Abilita proguard: usa le regole di proguard per definire quali file non vuoi modificare durante il processo di minimizzazione e riduzione.

Passiamo alla parte Come

Offuscamento usando il comando 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'
        }
    }

Spiegazione :

  1. Utilizzerà le configurazioni di firma della modalità di rilascio. Dovrai creare un file .jks e un key.properties in cui puoi menzionare le tue credenziali di firma.
  2. Mantieni proguard-rules.pro all'interno della cartella dell'app, in modo da poter definire le tue regole al suo interno. Leggi qui come definire le regole di proguard.
  3. Per proteggere i file flutter durante l'offuscamento, utilizzare queste righe all'interno del file 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.**
    

Ora è il momento per un consiglio professionale

Se sei arrivato fino a qui, allora ecco un regalo per te. La tua app continua a bloccarsi dopo aver abilitato proguard?

Prova questo trucco per eseguire il debug:

Sostituisci la versione per eseguire il debug ed eseguire l'app in modalità di debug.

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

È tutto per oggi. Grazie per essere rimasto fino alla fine. I suggerimenti sono i benvenuti.

Connettiamoci ora su Twitter , Instagram o LinkedIn .