
Praktische Aufgaben zum Erlernen des Reverse Engineerings von Flutter-Anwendungen.
Dieses Repository enthält eine Reihe aufeinander aufbauender Herausforderungen, die in das Reverse Engineering von Flutter-Anwendungen einführen sollen. Da es nicht viele Blogbeiträge oder Tutorials gibt, die das Reversing von Flutter im Detail erklären, habe ich dieses Repository als praktischen Weg geschaffen, diese Lücke zu füllen.
Das Ziel ist es, eine solide Grundlage für das Verständnis der besonderen Merkmale des Flutter-Frameworks und der dabei üblicherweise verwendeten Analysetechniken zu schaffen.
Die Herausforderungen sind inkrementell aufgebaut, beginnend mit grundlegenden Konzepten und fortschreitend zu mittleren und fortgeschritteneren Techniken wie dem Abfangen von Netzwerkverkehr und der Umgehung von Schutzmechanismen.
Statt eines traditionellen Writeups enthält jede Herausforderung eine detaillierte Lösung im Blog-Post-Stil, die dich Schritt für Schritt durch den Reversing-Prozess führt und praktisches Problemlösen mit relevanter Theorie verbindet, sodass die Konzepte direkt durch Übung gelernt werden.
Wenn du das Gefühl hast, dass dir Voraussetzungen fehlen, sind die folgenden Ressourcen sehr zu empfehlen:
Jedes Herausforderungsverzeichnis enthält:
chall<X>.apk: die kompilierte APK für die Herausforderung;solution/_images/: Bilder, auf die in der Lösung verwiesen wird;solution/solution.md: eine detaillierte Schritt-für-Schritt-Lösung;source/: die Anwendungsquelldateien und die Build-Anweisungen für alle, die die App modifizieren und weiter experimentieren möchten;$ tree
.
├── chall<X>.apk
├── solution
│ ├── _images
│ │ ├── chall<X_Y>.png
│ └── solution.md
└── src
├── how_to_build.md
└── main.dart
Einige dieser Werkzeuge erfordern spezifische Konfigurationen. Um die Einrichtung zu vereinfachen und die Reproduzierbarkeit zu gewährleisten, werden für einige dieser Werkzeuge Dockerfiles bereitgestellt, die im Verzeichnis /tools zu finden sind.
Werkzeuge:
apktool - Werkzeug zum Dekompilieren und Neuerstellen von APKs (link)Blutter - Dekompiler für Flutter-Anwendungen (link, Dockerfile in diesem Repository enthalten)Frida - Toolkit für dynamische Instrumentierung (link)jadx - Android-Dekompiler (link)reFlutter - Framework für Flutter-Reverse-Engineering (link)Burp Suite - Proxy zum Abfangen von Verkehr (link)Dieses Projekt wird unter der MIT-Lizenz vertrieben. Weitere Details findest du in der Datei LICENSE.
Dieses Repository wurde ausschließlich zu Bildungszwecken erstellt. Die beschriebenen Techniken sollten nur auf Anwendungen angewendet werden, die du analysieren darfst, oder in kontrollierten Testumgebungen. Der Autor übernimmt keine Verantwortung für den Missbrauch der in diesem Repository enthaltenen Informationen.