
Descompila arquivos Android APK/XAPK/JAR/AAR e extrai APIs HTTP, padrões de autenticação e fluxos de chamada usando jadx, com recuperação de nomes Kotlin resistente a R8 para pesquisa de segurança e testes de penetração.
Uma skill do Claude Code que descompila arquivos Android APK/XAPK/JAR/AAR e extrai as APIs HTTP usadas pelo app — endpoints Retrofit, chamadas OkHttp, URLs hardcoded, padrões de autenticação — para que você possa documentá-los e reproduzi-los sem o código-fonte original.
Suporte de primeira classe a Kotlin: apps Android modernos são Kotlin/KMP, fortemente ofuscados com R8. Esta skill recupera os nomes originais das classes Kotlin a partir dos metadados que o R8 não consegue remover, e extrai APIs de Ktor, Apollo (GraphQL) e Koin — não apenas da stack clássica Retrofit/OkHttp. Veja Recuperação de nomes Kotlin abaixo.
Suporte a Windows / PowerShell (experimental): Os scripts
*.ps1que acompanham os scripts bash são uma contribuição recente da comunidade, ainda em fase de estabilização. Para quaisquer problemas, por favor abra uma issue neste repositório (não nos forks upstream dos contribuidores): os scripts PowerShell são mantidos aqui por @SimoneAvogadro.
| Capacidade | Descrição |
|---|---|
| Fingerprint primeiro (Fase 0) | Faça a triagem de um APK/XAPK em segundos — detecte o framework (Flutter / React Native / Cordova / Xamarin / Kotlin nativo), a stack HTTP, o nível de ofuscação e as libs nativas antes de gastar tempo com uma descompilação completa |
| Descompilar | Arquivos APK, XAPK, JAR e AAR usando jadx e Fernflower/Vineflower (engine única ou comparação lado a lado) |
| Recuperar nomes Kotlin | Reconstrua os nomes originais das classes *Repository / *ViewModel / *UseCase a partir de binários ofuscados pelo R8 usando metadados Kotlin que o R8 não consegue remover |
| Extrair APIs | Retrofit, OkHttp, Volley e stacks modernas Kotlin/KMP: Ktor, Apollo (GraphQL), Koin DI — endpoints, URLs hardcoded, cabeçalhos de autenticação, tokens e esquemas de assinatura de requisição HMAC |
| Rastrear fluxos de chamada | De Activities/Fragments através de ViewModels e repositórios até as chamadas HTTP |
| Analisar estrutura | Manifest, pacotes, padrões de arquitetura |
| Lidar com ofuscação | Extração de caminhos/URLs resistente ao R8, além de estratégias para navegar na saída do ProGuard/R8 |
Obrigatórios:
Opcionais (recomendados):
Consulte plugins/android-reverse-engineering/skills/android-reverse-engineering/references/setup-guide.md para instruções detalhadas de instalação.
Dentro do Claude Code, execute:
/plugin marketplace add SimoneAvogadro/android-reverse-engineering-skill
/plugin install android-reverse-engineering@android-reverse-engineering-skill
A skill ficará permanentemente disponível em todas as sessões futuras.
git clone https://github.com/SimoneAvogadro/android-reverse-engineering-skill.git
Então, no 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
Isso executa o fluxo de trabalho completo: verificação de dependências, descompilação e análise inicial da estrutura.
A skill é ativada por frases como:
Os scripts também podem ser usados de forma autônoma:
# 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
A maioria dos apps Kotlin/KMP do mundo real passa pelo R8, então as classes descompiladas saem como a.b.c. O R8 renomeia os símbolos da JVM, mas não consegue remover as strings de metadados do Kotlin — o runtime do Kotlin (reflexão, corrotinas) precisa dos nomes totalmente qualificados originais em tempo de execução. Esta skill minera essas anotações @DebugMetadata / @Metadata para reconstruir um mapa de nomes de classes ofuscado → real. Em um app típico, ela recupera ~100% das classes *Repository / *ViewModel / *UseCase / *Impl que você realmente quer ler.