
Decompila file APK/XAPK/JAR/AAR Android ed estrae API HTTP, pattern di autenticazione e flussi di chiamata utilizzando jadx, con recupero dei nomi Kotlin resistenti a R8 per ricerca sulla sicurezza e penetration testing.
Una skill per Claude Code che decompila file APK/XAPK/JAR/AAR di Android e estrae le API HTTP utilizzate dall'app — endpoint Retrofit, chiamate OkHttp, URL hardcoded, pattern di autenticazione — in modo da poterli documentare e riprodurre senza il codice sorgente originale.
Supporto di prima classe per Kotlin: le moderne app Android sono Kotlin/KMP, pesantemente offuscate con R8. Questa skill recupera i nomi originali delle classi Kotlin dai metadati che R8 non può rimuovere ed estrae le API da Ktor, Apollo (GraphQL) e Koin — non solo dal classico stack Retrofit/OkHttp. Vedi Recupero nomi Kotlin più avanti.
Supporto Windows / PowerShell (sperimentale): gli script
*.ps1insieme a quelli bash sono un recente contributo della community, ancora in fase di stabilizzazione. Per qualsiasi problema, apri un issue su questo repository (non sui fork upstream dei contributori): gli script PowerShell sono mantenuti qui da @SimoneAvogadro.
Obbligatorio:
Opzionale (consigliato):
Vedi plugins/android-reverse-engineering/skills/android-reverse-engineering/references/setup-guide.md per istruzioni di installazione dettagliate.
All'interno di Claude Code, esegui:
/plugin marketplace add SimoneAvogadro/android-reverse-engineering-skill
/plugin install android-reverse-engineering@android-reverse-engineering-skill
La skill sarà permanentemente disponibile in tutte le sessioni future.
git clone https://github.com/SimoneAvogadro/android-reverse-engineering-skill.git
Poi 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
Esegue il flusso di lavoro completo: controllo delle dipendenze, decompilazione e analisi iniziale della struttura.
La skill si attiva con frasi come:
Gli script possono essere usati anche in modo autonomo:
# Controlla le dipendenze
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/check-deps.sh
# Installa una dipendenza mancante (rileva automaticamente OS e gestore pacchetti)
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
# Impronta digitale di un APK/XAPK PRIMA della decompilazione (triage Fase 0):
# framework, stack HTTP, livello di offuscamento, librerie native, SDK notevoli
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/fingerprint.sh app.apk
# Decompila APK con jadx (predefinito)
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh app.apk
# Decompila XAPK (estrae automaticamente e decompila ogni APK all'interno)
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh app-bundle.xapk
# Decompila con Fernflower
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh --engine fernflower library.jar
# Esegui entrambi i motori e confronta
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh --engine both --deobf app.apk
# Trova chiamate API — per impostazione predefinita esegue una scansione completa su ogni stack supportato
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
# Stack moderni Kotlin/KMP ed estrazione resistente all'offuscamento
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 # letterali di percorso quotati che sopravvivono all'inlining di R8
La maggior parte delle app Kotlin/KMP reali viene distribuita tramite R8, quindi le classi decompilate risultano come a.b.c. R8 rinomina i simboli JVM ma non può rimuovere le stringhe dei metadati Kotlin — il runtime Kotlin (riflessione, coroutine) necessita dei nomi completi originali a runtime. Questa skill estrae le annotazioni @DebugMetadata / @Metadata per ricostruire una mappa offuscato → reale dei nomi delle classi. Su un'app tipica recupera circa il 100% delle classi *Repository / *ViewModel / *UseCase / *Impl che desideri effettivamente leggere.
# 1. Costruisci la mappa dai sorgenti decompilati
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. Esegui query: risolvi un nome offuscato, cerca per nome reale, o cerca
# nei sorgenti con ogni corrispondenza annotata con il nome di classe recuperato
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 # Catalogo del marketplace
├── plugins/
│ └── android-reverse-engineering/
│ ├── .claude-plugin/
│ │ └── plugin.json # Manifest del plugin
│ ├── skills/
│ │ └── android-reverse-engineering/
│ │ ├── SKILL.md # Flusso di lavoro principale (Fase 0–5)
│ │ ├── references/
│ │ │ ├── setup-guide.md
│ │ │ ├── jadx-usage.md
│ │ │ ├── fernflower-usage.md
│ │ │ ├── api-extraction-patterns.md
│ │ │ ├── kotlin-name-recovery.md
│ │ │ ├── third_party_hosts.txt # lista di blocco per categorizzazione prima/terza parte
│ │ │ └── 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 # Fase 0 — triage pre-decompilazione
│ │ ├── recover-kotlin-names.sh # R8 → nomi reali delle classi Kotlin
│ │ ├── lookup-name.sh # esegui query sulla mappa dei nomi recuperati
│ │ ├── find-api-calls.sh
│ │ └── find-api-calls.ps1
│ └── commands/
│ └── decompile.md # /decompile comando slash
├── LICENSE
└── README.md
Grazie ai contributori che hanno plasmato questa skill:
recover-kotlin-names.sh, lookup-name.sh) e pattern di estrazione Ktor / Apollo / Koin / HMAC (#16)check-deps.ps1, install-dep.ps1, decompile.ps1, find-api-calls.ps1) e rilevamento APK divisi/raggruppati in decompile.sh (#8)ThexXTURBOXx/dex2jar (#12)SKILL.md) (#4)Questo plugin è fornito strettamente per scopi leciti, inclusi ma non limitati a:
Sei l'unico responsabile per garantire che il tuo utilizzo di questo strumento sia conforme a tutte le leggi, normative e termini di servizio applicabili. Il reverse engineering non autorizzato di software di cui non possiedi i diritti o per il quale non hai il permesso di analizzare potrebbe violare le leggi sulla proprietà intellettuale e le normative sul crimine informatico nella tua giurisdizione.
Gli autori declinano ogni responsabilità per l'uso improprio di questo strumento.
Apache 2.0 — vedi LICENSE
| Capacità | Descrizione |
|---|
| Impronta digitale iniziale (Fase 0) | Analizza un APK/XAPK in secondi — rileva il framework (Flutter / React Native / Cordova / Xamarin / nativo-Kotlin), lo stack HTTP, il livello di offuscamento e le librerie native prima di dedicare tempo a una decompilazione completa |
| Decompila | File APK, XAPK, JAR e AAR utilizzando jadx e Fernflower/Vineflower (motore singolo o confronto affiancato) |
| Recupera nomi Kotlin | Ricostruisce i nomi originali delle classi *Repository / *ViewModel / *UseCase da binari offuscati con R8 utilizzando i metadati Kotlin che R8 non può rimuovere |
| Estrae API | Retrofit, OkHttp, Volley e stack moderni Kotlin/KMP: Ktor, Apollo (GraphQL), Koin DI — endpoint, URL hardcoded, header di autenticazione, token e schemi di firma delle richieste HMAC |
| Traccia i flussi di chiamata | Dalle Activity/Fragment attraverso ViewModel e repository fino alle chiamate HTTP |
| Analizza la struttura | Manifest, pacchetti, pattern architetturali |
| Gestisce l'offuscamento | Estrazione di percorsi/URL resistente a R8 più strategie per navigare nell'output di ProGuard/R8 |