
Dekompiliert Android-APK/XAPK/JAR/AAR-Dateien und extrahiert HTTP-APIs, Authentifizierungsmuster und Aufrufabläufe mithilfe von jadx, mit R8-resistenter Kotlin-Namenswiederherstellung für Sicherheitsforschung und Penetrationstests.
Ein Claude-Code-Skill, das Android-APK/XAPK/JAR/AAR-Dateien dekompiliert und die HTTP-APIs extrahiert, die von der App verwendet werden — Retrofit-Endpunkte, OkHttp-Aufrufe, hartkodierte URLs, Authentifizierungsmuster — sodass du sie ohne den ursprünglichen Quellcode dokumentieren und reproduzieren kannst.
Kotlin-Unterstützung erster Klasse: Moderne Android-Apps sind Kotlin/KMP und werden mit R8 stark verschleiert. Dieses Skill stellt die ursprünglichen Kotlin-Klassennamen aus Metadaten wieder her, die R8 nicht entfernen kann, und extrahiert APIs aus Ktor, Apollo (GraphQL) und Koin — nicht nur aus dem klassischen Retrofit/OkHttp-Stack. Siehe Kotlin-Namenswiederherstellung unten.
Windows-/PowerShell-Unterstützung (experimentell): Die
*.ps1-Skripte neben den Bash-Skripten sind ein neuerer Community-Beitrag und werden noch stabilisiert. Bei Problemen öffne bitte ein Issue in diesem Repository (nicht in den Upstream-Forks der Mitwirkenden): Die PowerShell-Skripte werden hier von @SimoneAvogadro gepflegt.
Erforderlich:
Optional (empfohlen):
Ausführliche Installationsanweisungen findest du in plugins/android-reverse-engineering/skills/android-reverse-engineering/references/setup-guide.md.
Führe in Claude Code Folgendes aus:
/plugin marketplace add SimoneAvogadro/android-reverse-engineering-skill
/plugin install android-reverse-engineering@android-reverse-engineering-skill
Das Skill ist dauerhaft in allen zukünftigen Sitzungen verfügbar.
git clone https://github.com/SimoneAvogadro/android-reverse-engineering-skill.git
Dann in Claude Code:
/plugin marketplace add /path/to/android-reverse-engineering-skill
/plugin install android-reverse-engineering@android-reverse-engineering-skill
/decompile path/to/app.apk
Dies führt den vollständigen Workflow aus: Abhängigkeitsprüfung, Dekompilierung und erste Strukturanalyse.
Das Skill aktiviert sich bei Formulierungen wie:
Die Skripte können auch eigenständig verwendet werden:
# Check dependencies
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/check-deps.sh
# Install a missing dependency (auto-detects OS and package manager)
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/install-dep.sh jadx
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/install-dep.sh vineflower
# Fingerprint an APK/XAPK BEFORE decompiling (Phase 0 triage):
# framework, HTTP stack, obfuscation level, native libs, notable SDKs
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/fingerprint.sh app.apk
# Decompile APK with jadx (default)
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh app.apk
# Decompile XAPK (auto-extracts and decompiles each APK inside)
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh app-bundle.xapk
# Decompile with Fernflower
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh --engine fernflower library.jar
# Run both engines and compare
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh --engine both --deobf app.apk
# Find API calls — defaults to a full scan across every supported stack
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --retrofit
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --urls
# Modern Kotlin/KMP stacks and obfuscation-resistant extraction
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --ktor # Ktor client
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --apollo # Apollo / GraphQL
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --paths # quoted path literals that survive R8 inlining
Die meisten realen Kotlin/KMP-Apps werden über R8 ausgeliefert, daher erscheinen die dekompilierten Klassen als a.b.c. R8 benennt die JVM-Symbole um, kann aber die Kotlin-Metadaten-Strings nicht entfernen — die Kotlin-Laufzeit (Reflection, Coroutines) benötigt die ursprünglichen vollqualifizierten Namen zur Laufzeit. Dieses Skill durchsucht diese @DebugMetadata- / @Metadata-Annotationen, um eine obfuscated → real-Klassennamen-Zuordnung zu erstellen. Bei einer typischen App stellt es ~100 % der *Repository- / *ViewModel- / *UseCase- / *Impl-Klassen wieder her, die du tatsächlich lesen möchtest.
# 1. Build the mapping from the decompiled sources
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/recover-kotlin-names.sh output/sources/ output/names/
# → output/names/mapping.tsv, mapping.json, by_package/
# 2. Query it: resolve an obfuscated name, search by real name, or grep
# the sources with each hit annotated with its recovered class name
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/lookup-name.sh output/names/ LoginRepository
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/lookup-name.sh output/names/ -o a.b.c
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/lookup-name.sh output/names/ --grep 'login' output/sources/
android-reverse-engineering-skill/
├── .claude-plugin/
│ └── marketplace.json # Marketplace catalog
├── plugins/
│ └── android-reverse-engineering/
│ ├── .claude-plugin/
│ │ └── plugin.json # Plugin manifest
│ ├── skills/
│ │ └── android-reverse-engineering/
│ │ ├── SKILL.md # Core workflow (Phase 0–5)
│ │ ├── references/
│ │ │ ├── setup-guide.md
│ │ │ ├── jadx-usage.md
│ │ │ ├── fernflower-usage.md
│ │ │ ├── api-extraction-patterns.md
│ │ │ ├── kotlin-name-recovery.md
│ │ │ ├── third_party_hosts.txt # denylist for first/third-party bucketing
│ │ │ └── call-flow-analysis.md
│ │ └── scripts/
│ │ ├── check-deps.sh # Bash
│ │ ├── check-deps.ps1 # PowerShell
│ │ ├── install-dep.sh
│ │ ├── install-dep.ps1
│ │ ├── decompile.sh
│ │ ├── decompile.ps1
│ │ ├── fingerprint.sh # Phase 0 — pre-decompile triage
│ │ ├── recover-kotlin-names.sh # R8 → real Kotlin class names
│ │ ├── lookup-name.sh # query the recovered name map
│ │ ├── find-api-calls.sh
│ │ └── find-api-calls.ps1
│ └── commands/
│ └── decompile.md # /decompile slash command
├── LICENSE
└── README.md
Dank an die Mitwirkenden, die dieses Skill geprägt haben:
recover-kotlin-names.sh, lookup-name.sh) und Ktor-/Apollo-/Koin-/HMAC-Extraktionsmuster (#16)check-deps.ps1, install-dep.ps1, decompile.ps1, find-api-calls.ps1) und Erkennung von Split-/gebündelten APKs in decompile.sh (#8)ThexXTURBOXx/dex2jar-Fork (#12)SKILL.md-Suchschlüsselwörter) (#4)Dieses Plugin wird ausschließlich für rechtmäßige Zwecke bereitgestellt, einschließlich, aber nicht beschränkt auf:
Du bist allein dafür verantwortlich, sicherzustellen, dass deine Nutzung dieses Tools allen geltenden Gesetzen, Vorschriften und Nutzungsbedingungen entspricht. Nicht autorisiertes Reverse Engineering von Software, die du nicht besitzt oder für deren Analyse du keine Berechtigung hast, kann gegen Gesetze zum Schutz geistigen Eigentums und Computerbetrugsgesetze in deiner Rechtsordnung verstoßen.
Die Autoren lehnen jegliche Haftung für den Missbrauch dieses Tools ab.
Apache 2.0 — siehe LICENSE
| Fähigkeit | Beschreibung |
|---|
| Zuerst Fingerprint (Phase 0) | APK/XAPK in Sekunden bewerten — das Framework (Flutter / React Native / Cordova / Xamarin / natives Kotlin), den HTTP-Stack, den Verschleierungsgrad und native Bibliotheken erkennen, bevor du Zeit in eine vollständige Dekompilierung investierst |
| Dekompilieren | APK-, XAPK-, JAR- und AAR-Dateien mit jadx und Fernflower/Vineflower (einzelne Engine oder Side-by-Side-Vergleich) |
| Kotlin-Namen wiederherstellen | Ursprüngliche *Repository- / *ViewModel- / *UseCase-Klassennamen aus R8-verschleierten Binärdateien mithilfe von Kotlin-Metadaten rekonstruieren, die R8 nicht entfernen kann |
| APIs extrahieren | Retrofit, OkHttp, Volley und moderne Kotlin/KMP-Stacks: Ktor, Apollo (GraphQL), Koin DI — Endpunkte, hartkodierte URLs, Auth-Header, Tokens und HMAC-Anfragesignaturschemata |
| Aufrufabläufe verfolgen | Von Activities/Fragments über ViewModels und Repositories bis hin zu HTTP-Aufrufen |
| Struktur analysieren | Manifest, Pakete, Architekturmuster |
| Verschleierung handhaben | R8-resistente Pfad-/URL-Extraktion sowie Strategien zur Navigation durch ProGuard/R8-Ausgaben |