Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
reFlutter — Applica patch alle librerie del motore Flutter per consentire il reverse engineering in runtime, l'intercettazione del traffico e il bypass del SSL pinning per app Android e iOS senza root o installazione di certificati. | Kitploit
Strumenti/GitHubGitHub/impact-i/reflutter
Sicurezza AndroidAnalisi Dinamica (Sandboxing)Sicurezza iOSReverse EngineeringPenetration TestingSicurezza Mobile
GitHubimpact-i/reflutter

reFlutter

Applica patch alle librerie del motore Flutter per consentire il reverse engineering in runtime, l'intercettazione del traffico e il bypass del SSL pinning per app Android e iOS senza root o installazione di certificati.

Vedi Repository
2.7k293296 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

stars

Leggi di più sul blog: https://swarm.ptsecurity.com/fork-bomb-for-flutter/

Questo framework aiuta nel reverse engineering delle app Flutter utilizzando la versione patchata della libreria Flutter, già compilata e pronta per il repacking dell'app. Questa libreria ha il processo di deserializzazione dello snapshot modificato per consentirti di eseguire analisi dinamiche in modo comodo.

Caratteristiche principali:

  • socket.cc è patchato per il monitoraggio e l'intercettazione del traffico;
  • dart.cc è modificato per stampare classi, funzioni e alcuni campi;
  • visualizza l'offset assoluto del codice per le funzioni;
  • contiene modifiche minori per una compilazione riuscita;
  • se desideri implementare le tue patch, le modifiche manuali al codice Flutter sono supportate tramite un Dockerfile appositamente creato.

Engine supportati

  • Android: arm64, arm32;
  • iOS: arm64;
  • Release: Stable, Beta

Installazione

# Linux, Windows, MacOS
pip3 install reflutter==0.8.6

Utilizzo

impact@f:~$ reflutter main.apk

Please enter your Burp Suite IP: <input_ip>

SnapshotHash: 8ee4ef7a67df9845fba331734198a953
The resulting apk file: ./release.RE.apk
Please sign the apk file

impact@f:~$ reflutter main.ipa

Opzioni:

  • -p, --patch-dump — modalità dump: patcha l'engine per emettere dump.dart (classi/metodi/offset) all'avvio, e stampa un suggerimento frida.js invece delle istruzioni del proxy.
  • -n, --no-interact — non chiede mai l'IP di Burp (implica 127.0.0.1); utile per engine vecchi in CI.
  • -b <Snapshot_Hash>, --build-engine — modalità build engine: stampa il commit dell'engine per un hash di snapshot e (quando eseguito all'interno di un checkout flutter/flutter) applica le patch sorgente di reFlutter. Vedi scripts/local-release.

Intercettazione del traffico

Devi specificare l'IP del tuo Burp Suite Proxy Server situato nella stessa rete del dispositivo con l'applicazione Flutter. Poi configura il Proxy in BurpSuite -> Listener Proxy -> Options tab:

  • Aggiungi porta: 8083
  • Bind to address: All interfaces
  • Request handling: Support invisible proxying = True

Non è richiesta l'installazione di certificati né l'accesso root per Android. reFlutter consente anche di bypassare alcune implementazioni di certificate pinning di Flutter.

⚠️ Nota: Gli engine fino a Flutter 3.24.x incluso (snapshot hash 80a49c7111088100a233b2ae788e1f48) portano ancora l'IP del proxy hardcoded e vengono patchati sul posto. A partire da 3.27.x l'IP hardcoded non c'è più — configura il proxy direttamente sul dispositivo.

Su Android

Usa ADB per configurare il proxy del dispositivo:

adb -s <device> shell "settings put global http_proxy <proxy_ip:port>"

Firma, allinea e installa l'APK. Opzionalmente configura TunProxy per instradare il traffico attraverso Burp Suite.

Su iOS

Firma e installa l'IPA. Configura Potatso per usare il tuo Burp Suite proxy server.

Utilizzo su Android

L'apk risultante deve essere allineato e firmato. Uno strumento consigliato è uber-apk-signer:

java -jar uber-apk-signer.jar --allowResign -a release.RE.apk

Esegui l'app su un dispositivo. Determina _kDartIsolateSnapshotInstructions tramite ricerca binaria. reFlutter scrive il file dump nella cartella root dell'app e imposta i permessi 777. Recuperalo usando:

adb -d shell "cat /data/data/<PACKAGE_NAME>/dump.dart" > dump.dart
contenuto del file
Library:'package:anyapp/navigation/DeepLinkImpl.dart' Class: Navigation extends Object {
String* DeepUrl = anyapp://evil.com/ ;
...

Utilizzo su iOS

Dopo aver eseguito reflutter main.ipa, esegui l'app sul dispositivo. Il percorso del file dump viene stampato nei log della console di Xcode:

Current working dir: /private/var/mobile/Containers/Data/Application/<UUID>/dump.dart

Recupera il file dal dispositivo.

Frida

frida-tools==13.7.1
frida==16.7.19

Usa gli offset del dump nello script Frida:

frida -U -f <package> -l frida.js

Per trovare _kDartIsolateSnapshotInstructions:

readelf -Ws libapp.so

Cerca il campo Value.

Da fare

  • Visualizza l'offset assoluto del codice per le funzioni;
  • Estrarre più stringhe e campi;
  • Aggiungere la patch socket;
  • Estendere il supporto dell'engine a Debug usando Fork e Github Actions;
  • Migliorare il rilevamento di App.framework e libapp.so all'interno dell'archivio zip

Build Engine

Gli engine vengono compilati con scripts/local-release (macOS; compila v2 + v3 per iOS e Android arm64/arm/x64, verifica che ogni patch sia stata applicata e carica gli asset della release) in base ai dati in enginehash.csv. Il commit dell'engine per un hash di snapshot viene risolto tramite reflutter -b <Snapshot_Hash>. L'hash dello snapshot viene recuperato da:

https://storage.googleapis.com/flutter_infra_release/flutter/<hash>/android-arm64-release/linux-x64.zip
release

gif

Build Personalizzata

Il patching manuale del codice Flutter è supportato usando Docker:

git clone https://github.com/Impact-I/reFlutter && cd reFlutter
docker build -t reflutter -f Dockerfile .

Esegui con:

docker run -it -v "$(pwd):/t" -e HASH_PATCH=<Snapshot_Hash> -e COMMIT=<Engine_commit> reflutter

Esempio:

docker run -it -v "$(pwd):/t" -e HASH_PATCH=aa64af18e7d086041ac127cc4bc50c5e -e COMMIT=d44b5a94c976fbb65815374f61ab5392a220b084 reflutter

Esempio: Build Android ARM64 (Linux/Windows)

docker run -e WAIT=300 -e x64=0 -e arm=0 -e HASH_PATCH=<Snapshot_Hash> -e COMMIT=<Engine_commit> --rm -iv${PWD}:/t reflutter

Flag:

  • -e x64=0: disabilita la build x64
  • -e arm64=0: disabilita la build arm64
  • -e arm=0: disabilita la build arm32
  • -e WAIT=300: tempo in secondi per modificare il sorgente prima della build
  • -e HASH_PATCH: hash dello snapshot da enginehash.csv
  • -e COMMIT: hash del commit dell'engine

Scarica lo strumento