
Décompile les fichiers Android APK/XAPK/JAR/AAR et extrait les API HTTP, les schémas d'authentification et les flux d'appels en utilisant jadx, avec la récupération de noms Kotlin résistante à R8 pour la recherche en sécurité et les tests d'intrusion.
Une compétence Claude Code qui décompile des fichiers APK/XAPK/JAR/AAR Android et extrait les API HTTP utilisées par l'application — points d'accès Retrofit, appels OkHttp, URLs codées en dur, schémas d'authentification — afin que vous puissiez les documenter et les reproduire sans le code source original.
Prise en charge de première classe pour Kotlin : les applications Android modernes sont en Kotlin/KMP, fortement obscurcies avec R8. Cette compétence récupère les noms de classes Kotlin originaux à partir des métadonnées que R8 ne peut pas supprimer, et extrait les API de Ktor, Apollo (GraphQL) et Koin — pas seulement la pile classique Retrofit/OkHttp. Voir Récupération des noms Kotlin ci-dessous.
Prise en charge Windows / PowerShell (expérimentale) : Les scripts
*.ps1aux côtés des scripts bash sont une contribution récente de la communauté, encore en cours de stabilisation. Pour tout problème, veuillez ouvrir une issue sur ce dépôt (pas sur les forks en amont des contributeurs) : les scripts PowerShell sont maintenus ici par @SimoneAvogadro.
Requis :
Facultatif (recommandé) :
Voir plugins/android-reverse-engineering/skills/android-reverse-engineering/references/setup-guide.md pour des instructions d'installation détaillées.
Dans Claude Code, exécutez :
/plugin marketplace add SimoneAvogadro/android-reverse-engineering-skill
/plugin install android-reverse-engineering@android-reverse-engineering-skill
La compétence sera disponible en permanence dans toutes les sessions futures.
git clone https://github.com/SimoneAvogadro/android-reverse-engineering-skill.git
Puis dans 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
Ceci exécute le flux de travail complet : vérification des dépendances, décompilation et analyse structurelle initiale.
La compétence s'active sur des phrases comme :
Les scripts peuvent également être utilisés de manière autonome :
# Vérifier les dépendances
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/check-deps.sh
# Installer une dépendance manquante (détection automatique du système d'exploitation et du gestionnaire de paquets)
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
# Empreinte d'un APK/XAPK AVANT la décompilation (triage Phase 0) :
# framework, pile HTTP, niveau d'obscurcissement, bibliothèques natives, SDKs notables
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/fingerprint.sh app.apk
# Décompiler un APK avec jadx (par défaut)
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh app.apk
# Décompiler un XAPK (extraction automatique et décompilation de chaque APK à l'intérieur)
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh app-bundle.xapk
# Décompiler avec Fernflower
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh --engine fernflower library.jar
# Exécuter les deux moteurs et comparer
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh --engine both --deobf app.apk
# Trouver les appels API — par défaut une analyse complète sur toutes les piles prises en charge
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
# Piles modernes Kotlin/KMP et extraction résistante à l'obscurcissement
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --ktor # client Ktor
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 # littéraux de chemins entre guillemets qui survivent à l'inlining de R8
La plupart des applications Kotlin/KMP réelles sont livrées via R8, donc les classes décompilées apparaissent
comme a.b.c. R8 renomme les symboles JVM mais ne peut pas supprimer les chaînes de métadonnées
Kotlin — l'exécution Kotlin (réflexion, coroutines) a besoin des noms
complets qualifiés originaux à l'exécution. Cette compétence exploite ces
annotations @DebugMetadata / @Metadata pour reconstruire une correspondance obfusquée → réelle
des noms de classes. Sur une application typique, elle récupère ~100 % des
classes *Repository / *ViewModel / *UseCase / *Impl que vous souhaitez réellement lire.
# 1. Construire la correspondance à partir des sources décompilées
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. Interroger : résoudre un nom obfusqué, chercher par nom réel, ou grep
# les sources chaque occurrence annotée avec son nom de classe récupéré
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 # Catalogue Marketplace
├── plugins/
│ └── android-reverse-engineering/
│ ├── .claude-plugin/
│ │ └── plugin.json # Manifeste du plugin
│ ├── skills/
│ │ └── android-reverse-engineering/
│ │ ├── SKILL.md # Flux de travail principal (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 # Liste de blocage pour le regroupement première/tiere partie
│ │ │ └── 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 — triage avant décompilation
│ │ ├── recover-kotlin-names.sh # R8 → noms de classes Kotlin réels
│ │ ├── lookup-name.sh # interroger la correspondance des noms récupérés
│ │ ├── find-api-calls.sh
│ │ └── find-api-calls.ps1
│ └── commands/
│ └── decompile.md # Commande slash /decompile
├── LICENSE
└── README.md
Merci aux contributeurs qui ont façonné cette compétence :
recover-kotlin-names.sh, lookup-name.sh), et motifs d'extraction Ktor / Apollo / Koin / HMAC (#16)check-deps.ps1, install-dep.ps1, decompile.ps1, find-api-calls.ps1) et détection d'APK divisés/groupés dans decompile.sh (#8)ThexXTURBOXx/dex2jar (#12)SKILL.md) (#4)Ce plugin est fourni strictement à des fins légitimes, y compris mais sans s'y limiter :
Vous êtes seul responsable de vous assurer que votre utilisation de cet outil est conforme à toutes les lois, réglementations et conditions d'utilisation applicables. L'ingénierie inverse non autorisée de logiciels que vous ne possédez pas ou pour lesquels vous n'avez pas l'autorisation d'analyser peut violer les lois sur la propriété intellectuelle et les lois sur la fraude informatique dans votre juridiction.
Les auteurs déclinent toute responsabilité en cas d'utilisation abusive de cet outil.
Apache 2.0 — voir LICENSE
| Capacité | Description |
|---|
| Empreinte d'abord (Phase 0) | Trier un APK/XAPK en quelques secondes — détecter le framework (Flutter / React Native / Cordova / Xamarin / natif-Kotlin), la pile HTTP, le niveau d'obscurcissement et les bibliothèques natives avant de consacrer du temps à une décompilation complète |
| Décompiler | Fichiers APK, XAPK, JAR et AAR avec jadx et Fernflower/Vineflower (moteur unique ou comparaison côte à côte) |
| Récupérer les noms Kotlin | Reconstruire les noms de classes *Repository / *ViewModel / *UseCase originaux à partir de binaires obscurcis par R8 en utilisant les métadonnées Kotlin que R8 ne peut pas supprimer |
| Extraire les API | Retrofit, OkHttp, Volley et les piles modernes Kotlin/KMP : Ktor, Apollo (GraphQL), Koin DI — points d'accès, URLs codées en dur, en-têtes d'authentification, jetons et schémas de signature de requêtes HMAC |
| Tracer les flux d'appels | Des Activities/Fragments à travers les ViewModels et les dépôts jusqu'aux appels HTTP |
| Analyser la structure | Manifeste, paquets, motifs architecturaux |
| Gérer l'obscurcissement | Extraction de chemins/URL résistante à R8 ainsi que des stratégies pour naviguer dans les résultats ProGuard/R8 |