Was macht Mobile Reverse Engineering?
AKTION ERFORDERLICH (nach dem Lesen sofort ausführen)
NOW: Lese../field-journal/precedent-reverse.md– Bestätige, dass die Operation dieser Skill-Richtlinie autorisiert und regulär ist.NOW: Bestätige, ob die aktuelle Aufgabe in den Anwendungsbereich dieses Skills fällt.NEXT: Lese../tool-index.md, überprüfe die Verfügbarkeit der Tools und die tatsächlichen Pfade.NEXT: Wenn Tools fehlen, rufe Bootstrap auf; rate keine Pfade.ACT: Springe zum ersten Schritt des "Workflows" und führe ihn aus; bleibe nicht im Bestätigungsstatus hängen.
Einheitliche Reverse-Engineering-Methodik für Android + iOS Frida / Objection / OWASP MSTG / SSL Pinning Bypass
Anwendungsbereiche
- Android APK Reverse Engineering und Sicherheitstests
- iOS IPA Reverse Engineering und Sicherheitstests
- Laufzeit-Dynamische Instrumentierung mobiler Apps
- Umgehung von SSL Pinning / Root-Erkennung / Jailbreak-Erkennung
- Extraktion mobiler Verschlüsselungsalgorithmen (AES/RSA/HMAC-Schlüssel)
- Mobile Penetrationstests (OWASP MASTG)
- App-Tests in Nicht-Root-/Nicht-Jailbreak-Umgebungen
Vier-Phasen-Workflow
Phase 1: Informationssammlung
Android:
□ APK-Beschaffung (Google Play / APKMirror / adb pull)
□ Manifest-Analyse: Berechtigungen, exportierte Komponenten, Intent-Filter, Backup-Flag
□ androguard: androguard analyze APK → Komponenten/Berechtigungen/Signaturen
□ APKLeaks: Scan nach hartcodierten API-Keys / Token / Secrets
□ Schutz-Erkennung: ob gepackt (360/Tencent/Bangbang/Aijiami)
iOS:
□ IPA-Beschaffung (App Store / ipatool / Apple Configurator)
□ Entschlüsselung von App Store-Binaries: frida-ios-dump / Clutch
□ Info.plist-Analyse: ATS-Konfiguration, URL-Schemes, Queries Schemes
□ class-dump: Export von ObjC-Klassenstrukturen
□ Schutz-Erkennung: ob Swift/ObjC-Verschleierung verwendet wird
Phase 2: Statische Analyse
Plattformübergreifend:
□ JADX-GUI: APK → Java-Quellcode (Android)
□ Ghidra / Hopper: .so / Mach-O Dekompilierung
□ radare2 / Cutter: CLI-Schnellrecon
Android spezifisch:
□ apktool d app.apk → smali-Code + Ressourcen
□ dex2jar: DEX → JAR → JD-GUI
□ smali/baksmali: Dalvik-Bytecode-Modifikation
iOS spezifisch:
□ class-dump: Export von ObjC-Header-Dateien
□ Swift-Symbol-Wiederherstellung: swift-demangle
□ dsymutil: Debug-Symbol-Extraktion
□ otool -L: Anzeige dynamischer Bibliotheksabhängigkeiten
□ jtool2: Mach-O-Analyse
Phase 3: Dynamische Analyse
Frida — Universelle dynamische Instrumentierung:
□ frida-ps -U: Liste der Geräteprozesse
□ frida-trace -U -i "open*" com.app: Verfolgung von Funktionsaufrufen
□ Benutzerdefinierte Hook-Skripte: Parameter-/Rückgabewertänderung, Aufruf privater Methoden
Objection — Frida-Erweiterungsschicht (ohne Skriptschreiben):
□ objection -g "com.app" explore
□ android root disable / ios jailbreak disable
□ android sslpinning disable / ios sslpinning disable
□ android keystore list / ios keychain dump
□ env / ls / sqlite connect
Frida Gadget (Root-/Jailbreak-frei):
□ Injiziere frida-gadget.so / FridaGadget.dylib in APK/IPA
□ Neu signieren → installieren → Hook ohne Geräteberechtigungen möglich
□ objection patchapk --source app.apk (vollautomatisch)
Phase 4: Netzwerkanalyse
□ Burp Suite: HTTP/HTTPS abfangen, Anfragen/Antworten modifizieren
□ mitmproxy: Skriptbasierter Proxy (Python API)
□ Wireshark: PCAP-Paketanalyse
□ Zertifikatsinstallation: Android Benutzerzertifikat → Systemzertifikat (Magisk + MoveCert)
□ SSL Pinning Umgehung: Frida/Objection/Xposed/SSL Kill Switch 2
□ WebSocket / gRPC Traffic-Analyse
Kurzreferenz gängiger Umgehungen
SSL Pinning
# Objection (am einfachsten)
objection -g "com.app" explore
android sslpinning disable
# Frida Universal-Skript
frida -U -l ssl_pinning_bypass.js -f com.app
# Xposed (Android)
TrustMeAlready Modul → globale Deaktivierung der Zertifikatsprüfung
Root / Jailbreak Erkennung
# Objection
android root disable
ios jailbreak disable
# Frida benutzerdefiniert (mehrschichtige Erkennung)
Java.perform(function() {
var RootBeer = Java.use("com.scottyab.rootbeer.RootBeer");
RootBeer.isRooted.implementation = function() { return false; };
// Zusätzliche Umgehungen: Magisk su-Erkennung, frida-server-Erkennung, /proc/self/maps-Erkennung
});
Anti-Debugging
# Android
frida -U -l anti_debug_bypass.js -f com.app
# Umgehungen: ptrace(TracerPid), /proc/self/status, isDebuggerConnected()
# iOS
# Umgehungen: PT_DENY_ATTACH, sysctl CTL_KERN/KERN_PROC/KERN_PROC_PID
frida -U -l ios_anti_debug.js -f com.app
Mobile Verschlüsselungsextraktion
// Android — Hook Cipher.getInstance um Schlüssel+Algorithmus zu erhalten
Java.perform(function() {
var Cipher = Java.use("javax.crypto.Cipher");
Cipher.getInstance.overload('java.lang.String').implementation = function(algo) {
console.log("[Cipher] Algorithm: " + algo);
return this.getInstance(algo);
};
Cipher.init.overload('int', 'java.security.Key').implementation = function(mode, key) {
console.log("[Cipher] Key: " + bytesToHex(key.getEncoded()));
return this.init(mode, key);
};
});
// iOS — Hook CCCrypt
Interceptor.attach(Module.findExportByName("libcommonCrypto.dylib", "CCCrypt"), {
onEnter: function(args) {
console.log("CCCrypt op: " + args[0] + " alg: " + args[1]);
console.log("Key: " + hexdump(args[3], { length: args[4].toInt32() }));
}
});
Tool-Kette
| Tool | Plattform | Verwendung |
|---|---|---|
| JADX-GUI | A | Java-Dekompilierung |
| apktool | A | APK Entpacken/Wiederaufbau |
| Ghidra | A+I | Multi-Architektur-Dekompilierung |
| Hopper | I | iOS-spezifische Disassemblierung |
| Frida | A+I | Dynamische Instrumentierung |
| Objection | A+I | Frida REPL-Erweiterung |
| MobSF | A+I | Automatisierte SAST+DAST |
| class-dump | I | ObjC-Klassenexport |
| frida-ios-dump | I | IPA-Entschlüsselung |
| jtool2 | I | Mach-O-Analyse |
| Burp Suite | A+I | HTTP-Abfangen |
| mitmproxy | A+I | Skriptbasierter Proxy |
A=Android, I=iOS
Referenzen
references/frida-objection-deep.md— Frida + Objection Tiefenwissenreferences/ios-reverse-guide.md— iOS Reverse Engineering Spezialreferences/anti-detection-bypass.md— Root/Jailbreak/Anti-Debugging/SSL Pinning Umgehung
Aufgabenabschluss-Checkliste (MUSS vor der Behauptung der Fertigstellung durchgeführt sein)
- Habe ich jeden Schritt des Workflows ausgeführt (nicht nur gelesen)?
- Habe ich basierend auf
tool-indexdie tatsächlichen Tool-Pfade verwendet? - Habe ich reproduzierbare Beweise erzeugt (Befehle/Skripte/Screenshots/Berichte)?
- Habe ich die von den RULES geforderten Checklisten-Punkte abgeschlossen und zurückgeschrieben?