Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
reFlutter — Flutter Reverse Engineering Framework | Kitploit
Tools/GitHubGitHub/ptswarm/reflutter
Android SecurityPacket Sniffing & AnalysisDynamic Analysis (Sandboxing)iOS SecurityReverse EngineeringMobile SecurityBinary AnalysisArchived
GitHubptswarm/reflutter

reFlutter

Flutter Reverse Engineering Framework

Repository anzeigen
1.5k188vor 4 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Twitter

stars workflow

Dieses Framework unterstützt das Reverse Engineering von Flutter‑Apps, indem es eine gepatchte Version der Flutter‑Bibliothek verwendet, die bereits kompiliert und für das Repackaging der App bereit ist. Die Bibliothek enthält eine modifizierte Snapshot‑Deserialisierung, die eine dynamische Analyse auf bequeme Weise ermöglicht.

Hauptfunktionen:

  • socket.cc wurde gepatcht, um Datenverkehr zu überwachen und abzufangen;
  • dart.cc wurde modifiziert, um Klassen, Funktionen und einige Felder auszugeben;
  • enthält kleinere Änderungen für eine erfolgreiche Kompilierung;
  • Wenn du eigene Patches implementieren möchtest, wird eine manuelle Änderung des Flutter‑Codes mithilfe eines speziell erstellten Dockerfile unterstützt.

Unterstützte Engines

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

Installation

root@kitploit:~
# Linux, Windows, MacOS
pip3 install reflutter

Verwendung

root@kitploit:~
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

Configure Burp Suite proxy server to listen on *:8083
Proxy Tab -> Options -> Proxy Listeners -> Edit -> Binding Tab

Then enable invisible proxying in Request Handling Tab
Support Invisible Proxying -> true

impact@f:~$ reflutter main.ipa

Verkehrsabfang

Du musst die IP deines Burp‑Suite‑Proxy‑Servers angeben, der sich im selben Netzwerk wie das Gerät mit der Flutter‑App befindet. Als Nächstes solltest du den Proxy in BurpSuite -> Listener Proxy -> Options tab konfigurieren.

  • Port hinzufügen: 8083
  • An Adresse binden: All interfaces
  • Request Handling: Support invisible proxying = True

Du musst keine Zertifikate installieren. Auf einem Android‑Gerät benötigst du auch keinen Root‑Zugriff. reFlutter ermöglicht es außerdem, einige Implementierungen des Flutter‑Zertifikat‑Pinnings zu umgehen.

Verwendung auf Android

Die resultierende APK muss ausgerichtet und signiert werden. Ich verwende uber-apk-signer java -jar uber-apk-signer.jar --allowResign -a release.RE.apk. Um zu sehen, welcher Code über die DartVM geladen wird, musst du die Anwendung auf dem Gerät ausführen. Beachte, dass du manuell ermitteln musst, was _kDartIsolateSnapshotInstructions (z. B. 0xB000) mittels einer binären Suche ergibt. reFlutter schreibt den Dump in das Stammverzeichnis der Anwendung und setzt die Berechtigungen 777 für die Datei und den Ordner. Du kannst die Datei mit dem adb‑Befehl abrufen:

root@kitploit:~
impact@f:~$ adb -d shell "cat /data/data/<PACKAGE_NAME>/dump.dart" > dump.dart
Dateiinhalt
root@kitploit:~
Library:'package:anyapp/navigation/DeepLinkImpl.dart' Class: Navigation extends Object {  

String* DeepUrl = anyapp://evil.com/ ;

 Function 'Navigation.': constructor. (dynamic, dynamic, dynamic, dynamic) => NavigationInteractor { 
  
              Code Offset: _kDartIsolateSnapshotInstructions + 0x0000000000009270
  
                   }
    
 Function 'initDeepLinkHandle':. (dynamic) => Future<void>* { 
  
              Code Offset: _kDartIsolateSnapshotInstructions + 0x0000000000412fe8
  
                   }
    
 Function '_navigateDeepLink@547106886':. (dynamic, dynamic, {dynamic navigator}) => void { 
  
              Code Offset: _kDartIsolateSnapshotInstructions + 0x0000000000002638
  
                   }
 
       }
 
Library:'package:anyapp/auth/navigation/AuthAccount.dart' Class: AuthAccount extends Account {

PlainNotificationToken* _instance = sentinel;
 
 Function 'getAuthToken':. (dynamic, dynamic, dynamic, dynamic) => Future<AccessToken*>* { 
  
               Code Offset: _kDartIsolateSnapshotInstructions + 0x00000000003ee548
  
                   }
  
 Function 'checkEmail':. (dynamic, dynamic) => Future<bool*>* { 
  
               Code Offset: _kDartIsolateSnapshotInstructions + 0x0000000000448a08
   
                   }

 Function 'validateRestoreCode':. (dynamic, dynamic, dynamic) => Future<bool*>* { 
  
               Code Offset: _kDartIsolateSnapshotInstructions + 0x0000000000412c34
   
                   }

 Function 'sendSmsRestorePassword':. (dynamic, dynamic) => Future<bool*>* { 
  
               Code Offset: _kDartIsolateSnapshotInstructions + 0x00000000003efb88
  
                   }
       }

Verwendung auf iOS

Verwende die IPA‑Datei, die nach der Ausführung des Befehls reflutter main.ipa erstellt wurde. Um zu sehen, welcher Code über die DartVM geladen wird, musst du die Anwendung auf dem Gerät ausführen. reFlutter gibt seine Ausgabe in den Konsolenprotokollen in Xcode mit dem Tag reflutter aus.

To Do

  • Absoluten Code‑Offset für Funktionen anzeigen;
  • Weitere Zeichenketten und Felder extrahieren;
  • Socket‑Patch hinzufügen;
  • Engine‑Unterstützung auf Debug erweitern (mit Fork und GitHub Actions);
  • Erkennung von App.framework und libapp.so im ZIP‑Archiv verbessern

Engine bauen

Die Engines werden mit reFlutter in GitHub Actions gebaut. Für die gewünschte Version werden Commits und Snapshot‑Hashes aus dieser Tabelle verwendet. Der Hash des Snapshots wird aus storage.googleapis.com/flutter_infra_release/flutter/<hash>/android-arm64-release/linux-x64.zip extrahiert.

Veröffentlichung

gif

Eigener Build

Wenn du eigene Patches implementieren möchtest, wird eine manuelle Änderung des Flutter‑Codes mithilfe eines speziell erstellten Docker unterstützt.

sudo docker pull ptswarm/reflutter

root@kitploit:~
# Linux, Windows
EXAMPLE BUILD ANDROID ARM64:
    sudo docker run -e WAIT=300 -e x64=0 -e arm=0 -e HASH_PATCH=<Snapshot_Hash> -e COMMIT=<Engine_commit> --rm -iv${PWD}:/t ptswarm/reflutter

FLAGS:
    -e x64=0                         <disables building for x64 archiitechture, use to reduce building time>
    -e arm=0                         <disables building for arm archiitechture, use to reduce building time>
    -e WAIT=300                      <the amount of time in seconds you need to edit source code>
    -e HASH_PATCH=[Snapshot_Hash]    <here you need to specify snapshot hash which matches the engine_commit line of enginehash.csv table best. It is used for proper patch search in reFlutter and for successfull compilation>
    -e COMMIT=[Engine_commit]        <here you specify commit for your engine version, take it from enginehash.csv table or from flutter/engine repo>
Tool herunterladen