
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 habilidade do Claude Code que descompila arquivos APK/XAPK/JAR/AAR do Android e extrai as APIs HTTP usadas pelo aplicativo — endpoints Retrofit, chamadas OkHttp, URLs codificadas, padrões de autenticação — para que você possa documentá-las e reproduzi-las sem o código-fonte original.
Suporte de primeira classe para Kotlin: aplicativos Android modernos são Kotlin/KMP, fortemente ofuscados com R8. Esta habilidade recupera os nomes originais de classes Kotlin a partir de metadados que o R8 não pode remover, e extrai APIs de Ktor, Apollo (GraphQL) e Koin — não apenas da pilha clássica Retrofit/OkHttp. Veja Recuperação de nomes Kotlin abaixo.
Suporte para Windows / PowerShell (experimental): Os scripts
*.ps1que acompanham os bash são uma contribuição recente da comunidade, ainda em 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.
Obrigatório:
Opcional (recomendado):
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 habilidade estará permanentemente disponível em todas as sessões futuras.
git clone https://github.com/SimoneAvogadro/android-reverse-engineering-skill.git
Em seguida, no Claude Code:
/plugin marketplace add /caminho/para/android-reverse-engineering-skill
/plugin install android-reverse-engineering@android-reverse-engineering-skill
/decompile caminho/para/app.apk
Isso executa o fluxo de trabalho completo: verificação de dependências, descompilação e análise de estrutura inicial.
A habilidade ativa com frases como:
Os scripts também podem ser usados de forma independente:
# Verificar dependências
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/check-deps.sh
# Instalar uma dependência ausente (detecta automaticamente o SO e gerenciador de pacotes)
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
# Impressão digital de um APK/XAPK ANTES de descompilar (triagem Fase 0):
# framework, pilha HTTP, nível de ofuscação, bibliotecas nativas, SDKs notáveis
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/fingerprint.sh app.apk
# Descompilar APK com jadx (padrão)
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh app.apk
# Descompilar XAPK (extrai e descompila automaticamente cada APK interno)
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh app-bundle.xapk
# Descompilar com Fernflower
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh --engine fernflower library.jar
# Executar ambos os motores e comparar
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh --engine both --deobf app.apk
# Encontrar chamadas de API — padrão para uma varredura completa em todas as pilhas suportadas
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
# Pilhas modernas Kotlin/KMP e extração resistente a ofuscação
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --ktor # Cliente 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 # literais de caminho entre aspas que sobrevivem à inlining do R8
A maioria dos aplicativos Kotlin/KMP do mundo real é distribuída através do R8, então as classes descompiladas aparecem como a.b.c. O R8 renomeia os símbolos JVM, mas não pode remover as strings de metadados Kotlin — o runtime Kotlin (reflexão, corrotinas) precisa dos nomes totalmente qualificados originais em tempo de execução. Esta habilidade extrai essas anotações @DebugMetadata / @Metadata para reconstruir um mapa de nomes de classe ofuscado → real. Em um aplicativo típico, recupera ~100% das classes *Repository / *ViewModel / *UseCase / *Impl que você realmente deseja ler.
# 1. Construir o mapeamento a partir das fontes descompiladas
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. Consultá-lo: resolver um nome ofuscado, pesquisar por nome real, ou usar grep
# nas fontes com cada ocorrência anotada com seu nome de classe recuperado
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 # Catálogo do Marketplace
├── plugins/
│ └── android-reverse-engineering/
│ ├── .claude-plugin/
│ │ └── plugin.json # Manifesto do plugin
│ ├── skills/
│ │ └── android-reverse-engineering/
│ │ ├── SKILL.md # Fluxo de trabalho principal (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 de exclusão para categorização primeiro/terceiro
│ │ │ └── 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 — triagem pré-descompilação
│ │ ├── recover-kotlin-names.sh # R8 → nomes reais de classes Kotlin
│ │ ├── lookup-name.sh # consultar o mapa de nomes recuperados
│ │ ├── find-api-calls.sh
│ │ └── find-api-calls.ps1
│ └── commands/
│ └── decompile.md # Comando de barra /decompile
├── LICENSE
└── README.md
Agradecimentos aos contribuidores que moldaram esta habilidade:
recover-kotlin-names.sh, lookup-name.sh), e padrões de extração Ktor / Apollo / Koin / HMAC (#16)check-deps.ps1, install-dep.ps1, decompile.ps1, find-api-calls.ps1) e detecção de APK dividido/empacotado em decompile.sh (#8)ThexXTURBOXx/dex2jar (#12)SKILL.md) (#4)Este plugin é fornecido estritamente para fins legais, incluindo, mas não se limitando a:
Você é o único responsável por garantir que seu uso desta ferramenta esteja em conformidade com todas as leis, regulamentos e termos de serviço aplicáveis. A engenharia reversa não autorizada de software que você não possui ou não tem permissão para analisar pode violar leis de propriedade intelectual e leis de fraude computacional em sua jurisdição.
Os autores se isentam de qualquer responsabilidade pelo uso indevido desta ferramenta.
Apache 2.0 — veja LICENSE
| Capacidade | Descrição |
|---|
| Impressão digital primeiro (Fase 0) | Triagem de um APK/XAPK em segundos — detecta o framework (Flutter / React Native / Cordova / Xamarin / Kotlin nativo), pilha HTTP, nível de ofuscação e bibliotecas nativas antes de gastar tempo numa descompilação completa |
| Descompilar | Arquivos APK, XAPK, JAR e AAR usando jadx e Fernflower/Vineflower (motor único ou comparação lado a lado) |
| Recuperar nomes Kotlin | Reconstruir nomes de classes originais *Repository / *ViewModel / *UseCase a partir de binários ofuscados por R8 usando metadados Kotlin que o R8 não pode remover |
| Extrair APIs | Retrofit, OkHttp, Volley e pilhas modernas Kotlin/KMP: Ktor, Apollo (GraphQL), Koin DI — endpoints, URLs codificadas, 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é chamadas HTTP |
| Analisar estrutura | Manifesto, 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 |