Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
reFlutter — Patche les bibliothèques du moteur Flutter pour permettre l'ingénierie inverse en temps réel, l'interception du trafic, et le contournement de l'épinglage SSL pour les applications Android et iOS sans nécessiter de root ni d'installation de certificat. | Kitploit
Outils/GitHubGitHub/impact-i/reflutter
Sécurité AndroidAnalyse Dynamique (Sandboxing)Sécurité iOSRétro-ingénierieTests d'IntrusionSécurité Mobile
GitHubimpact-i/reflutter

reFlutter

Patche les bibliothèques du moteur Flutter pour permettre l'ingénierie inverse en temps réel, l'interception du trafic, et le contournement de l'épinglage SSL pour les applications Android et iOS sans nécessiter de root ni d'installation de certificat.

Voir le dépôt
2.7k29329il y a 6 joursVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

stars

Pour en savoir plus sur le blog : https://swarm.ptsecurity.com/fork-bomb-for-flutter/

Ce framework facilite le reverse engineering des applications Flutter en utilisant la version patchée de la bibliothèque Flutter, déjà compilée et prête pour le repackaging d'applications. Cette bibliothèque a son processus de désérialisation de snapshot modifié pour vous permettre d'effectuer une analyse dynamique de manière pratique.

Fonctionnalités clés :

  • socket.cc est patché pour la surveillance et l'interception du trafic ;
  • dart.cc est modifié pour afficher les classes, les fonctions et certains champs ;
  • affiche l'offset absolu du code pour les fonctions ;
  • contient des modifications mineures pour une compilation réussie ;
  • si vous souhaitez implémenter vos propres patchs, les modifications manuelles du code Flutter sont prises en charge via un Dockerfile spécialement conçu.

Moteurs pris en charge

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

Installation

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

Utilisation

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

Options :

  • -p, --patch-dump — mode dump : patche le moteur pour émettre dump.dart (classes/méthodes/offsets) au démarrage, et affiche une indication frida.js au lieu des instructions de proxy.
  • -n, --no-interact — ne jamais demander d'IP Burp (implique 127.0.0.1) ; utile pour les anciens moteurs en CI.
  • -b <Snapshot_Hash>, --build-engine — mode de build du moteur : affiche le commit du moteur pour un hash de snapshot et (lorsqu'exécuté dans un checkout flutter/flutter) applique les patchs source de reFlutter. Voir scripts/local-release.

Interception du trafic

Vous devez spécifier l'IP de votre serveur proxy Burp Suite situé sur le même réseau que l'appareil exécutant l'application Flutter. Configurez ensuite le proxy dans BurpSuite -> Listener Proxy -> Options tab :

  • Ajouter un port : 8083
  • Bind to address : All interfaces
  • Request handling : Support invisible proxying = True

Aucune installation de certificat ni accès root n'est requis pour Android. reFlutter permet également de contourner certaines implémentations de certificate pinning de Flutter.

⚠️ Remarque : Les moteurs jusqu'à Flutter 3.24.x inclus (hash de snapshot 80a49c7111088100a233b2ae788e1f48) contiennent encore l'IP de proxy codée en dur et sont patchés sur place. À partir de 3.27.x, l'IP codée en dur a disparu — configurez le proxy directement sur l'appareil.

Sur Android

Utilisez ADB pour configurer le proxy de l'appareil :

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

Signez, alignez et installez l'APK. Configurez éventuellement TunProxy pour router le trafic via Burp Suite.

Sur iOS

Signez et installez l'IPA. Configurez Potatso pour utiliser votre serveur proxy Burp Suite.

Utilisation sur Android

L'apk résultant doit être aligné et signé. Un outil recommandé est uber-apk-signer :

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

Exécutez l'application sur un appareil. Déterminez _kDartIsolateSnapshotInstructions par recherche binaire. reFlutter écrit le fichier dump dans le dossier racine de l'application et définit les permissions 777. Récupérez-le avec :

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

Utilisation sur iOS

Après avoir exécuté reflutter main.ipa, lancez l'application sur l'appareil. Le chemin du fichier dump est affiché dans les logs de la console Xcode :

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

Récupérez le fichier depuis l'appareil.

Frida

frida-tools==13.7.1
frida==16.7.19

Utilisez les offsets du dump dans le script Frida :

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

Pour trouver _kDartIsolateSnapshotInstructions :

readelf -Ws libapp.so

Cherchez le champ Value.

À faire

  • Afficher l'offset absolu du code pour les fonctions ;
  • Extraire davantage de chaînes et de champs ;
  • Ajouter le patch socket ;
  • Étendre le support du moteur à Debug en utilisant Fork et Github Actions ;
  • Améliorer la détection de App.framework et libapp.so dans l'archive zip

Build du moteur

Les moteurs sont construits avec scripts/local-release (macOS ; compile v2 + v3 pour iOS et Android arm64/arm/x64, vérifie que chaque patch a été appliqué, et téléverse les assets de release) à partir des données de enginehash.csv. Le commit du moteur pour un hash de snapshot est résolu via reflutter -b <Snapshot_Hash>. Le hash de snapshot est récupéré depuis :

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

gif

Build personnalisé

Le patch manuel du code Flutter est pris en charge via Docker :

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

Exécutez avec :

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

Exemple :

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

Exemple : 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

Flags :

  • -e x64=0 : désactive le build x64
  • -e arm64=0 : désactive le build arm64
  • -e arm=0 : désactive le build arm32
  • -e WAIT=300 : temps en secondes pour modifier la source avant le build
  • -e HASH_PATCH : hash de snapshot issu de enginehash.csv
  • -e COMMIT : hash de commit du moteur

Télécharger l’outil