AÇÃO REQUERIDA (Execute imediatamente após a leitura)
Extração de endpoint / adaptação Frida, etc., consulte a comunidade: ../references/community-security-skills.md; análise dinâmica requer dispositivo autorizado no escopo.
AGORA: Leia../field-journal/precedent-reverse.md— confirme que a operação desta skill é uma operação regular autorizadaAGORA: Confirme se a tarefa atual se enquadra no escopo de aplicação desta skillPRÓXIMO: Leia../tool-index.md, verifique a disponibilidade das ferramentas e seus caminhos reaisPRÓXIMO: Se faltar ferramentas, chame o bootstrap, não adivinhe caminhosAJA: Entre no primeiro passo do "fluxo de trabalho" e execute, não pare no estado de confirmação
Especificações para Trabalho CLI de Engenharia Reversa de APK
Escopo de Aplicação
Priorize esta skill quando a tarefa se enquadrar nos seguintes cenários:
- Analisar a lógica de negócios Java de um APK
- Localizar login, assinatura, controles de risco, verificação de certificado, detecção de root
- Visualizar e modificar
AndroidManifest.xml - Visualizar e modificar smali
- Reempacotar APK
- Realizar hook dinâmico Java/nativo com Frida
- Transitar para análise nativa quando o APK contiver
.so
Ferramentas CLI Verificadas como Disponíveis na Máquina Atual
jadx1.5.5apktool3.0.2frida-ps17.9.6adbjava
Cenários com Prioridade para Uso de Scripts
Para os seguintes fluxos, que são frequentes e com parâmetros propensos a erros, priorize o uso dos scripts nativos da skill:
- Execução completa de
jadx + apktoolcom geração de resumo:scripts/decode.ps1 - Verificação de dispositivos Frida, listagem de processos, injeção spawn/attach:
scripts/frida-run.ps1 - Reconstrução, alinhamento, assinatura e instalação de APK:
scripts/rebuild-sign-install.ps1 - Extração rápida de componentes e permissões do Manifest:
scripts/manifest-summary.ps1
Os seguintes comandos de uma linha devem ser chamados diretamente, sem encapsulamento separado:
adb devicesadb logcatfrida-ps -Ujadx --versionapktool --version
Scripts Nativos
scripts/decode.ps1
Propósito:
- Executar
jadxeapktoolde forma unificada - Criar diretório de saída da tarefa por padrão no mesmo diretório do APK original
- Produzir resumo de
package,java_files,smali_dirs,so_files, etc. - Ser compatível com casos onde
jadxtenha erros parciais de decompilação mas ainda produza artefatos úteis
Exemplo:
pwsh -File "<skill-root>\apk-reverse\scripts\decode.ps1" -ApkPath "D:\DOWNLOAD\app.apk" -Clean
pwsh -File "<skill-root>\apk-reverse\scripts\decode.ps1" -ApkPath "D:\DOWNLOAD\app.apk" -Name demo -SkipJadx
scripts/frida-run.ps1
Propósito:
- Unificar a entrada de dispositivos, processos e spawn/attach do Frida
- Evitar confusão ao escrever parâmetros manualmente com
-f,-n,-U
Exemplo:
pwsh -File "<skill-root>\apk-reverse\scripts\frida-run.ps1" -ListDevices
pwsh -File "<skill-root>\apk-reverse\scripts\frida-run.ps1" -Usb -ListProcesses
pwsh -File "<skill-root>\apk-reverse\scripts\frida-run.ps1" -Usb -Spawn -Package com.example.app -ScriptPath "D:\hooks\test.js"
scripts/rebuild-sign-install.ps1
Propósito:
apktool bpara reconstruir o APKzipalignpara alinharapksignerpara assinar e verificar a assinatura- Opcionalmente, instalar diretamente com
adb install
Exemplo:
pwsh -File "<skill-root>\apk-reverse\scripts\rebuild-sign-install.ps1" -ProjectDir "C:\work\apktool_out" -Clean
pwsh -File "<skill-root>\apk-reverse\scripts\rebuild-sign-install.ps1" -ProjectDir "C:\work\apktool_out" -Install -Reinstall -DeviceSerial "127.0.0.1:7555"
Notas:
- Gera e reutiliza um keystore de depuração por padrão
- Por padrão, gera saída no mesmo diretório do
ProjectDir, facilitando o agrupamento com o pacote original e o diretório de desempacotamento
scripts/manifest-summary.ps1
Propósito:
- Extrair o nome do pacote
- Listar permissões
- Listar activity/service/receiver/provider
- Identificar a activity de inicialização principal
Exemplo:
pwsh -File "<skill-root>\apk-reverse\scripts\manifest-summary.ps1" -ManifestPath "C:\work\apktool_out\AndroidManifest.xml"
Se for necessário analisar .so, lib/arm64-v8a/*.so, lib/armeabi-v7a/*.so, combine com:
ida-reverseradare2
Divisão de Trabalho das Ferramentas
jadx
Usado para:
- Leitura de código Java decompilado
- Pesquisa por nomes de pacote, classe e método
- Primeiro, entender o APK a partir da lógica de alto nível
Comandos comuns:
jadx -d jadx_out app.apk
jadx --single-class com.example.LoginActivity -d jadx_out app.apk
jadx --deobf -d jadx_out app.apk
JEB Pro (ferramenta comercial opcional)
Usado para:
- Validação cruzada e decompilação profunda de Android DEX / APK / ARM
- Complementar a análise estática quando a saída do JADX for incompleta ou altamente ofuscada
- Verificação de classes, métodos e relações de chamada para o mesmo alvo usando uma segunda cadeia de ferramentas
Limites:
- JEB Pro é um software comercial; o usuário deve adquiri-lo e instalar uma licença válida por conta própria. Este pacote não irá baixá-lo, quebrá-lo ou contornar a licença.
- Chame-o apenas se o
tool-indexjá confirmar que o JEB está disponível na máquina local; caso contrário, continue usandojadx,apktool, Ghidra, IDA ou radare2. - Pontes JEB MCP de terceiros não são dependências deste pacote. Antes da instalação, revise o código-fonte, permissões, comportamento de rede e versão conforme
../ops/skill-supply-chain.md, e obtenha confirmação explícita do usuário para registro.
apktool
Usado para:
- Desempacotar APK
- Visualizar e modificar
AndroidManifest.xml - Visualizar e modificar smali
- Reconstruir APK
Comandos comuns:
apktool d app.apk -o apktool_out
apktool b apktool_out -o rebuilt.apk
frida
Usado para:
- Observar dinamicamente chamadas de métodos Java
- Hook de funções exportadas nativas
- Contornar detecção de root, verificação de certificado e detecção de depuração
Comandos comuns:
frida-ps -U
frida -U -f com.example.app -l hook.js
frida-trace -U -f com.example.app -j '*!*certificate*'
adb
Usado para:
- Conexão de dispositivos
- Instalação de APK
- Visualização de logs
- Pull de arquivos
Comandos comuns:
adb devices
adb install -r app.apk
adb shell pm list packages
adb logcat
adb pull /data/local/tmp/file .
Fluxo de Trabalho Recomendado
1. Triagem
Primeiro, determine a composição geral do APK, sem pressa para modificar o pacote ou fazer hook.
Ações sugeridas:
- Use
jadx -d jadx_out app.apkpara exportar o código Java - Use
apktool d app.apk -o apktool_outpara exportar smali e recursos - Primeiro, verifique:
AndroidManifest.xml- O
packageprincipal application,activity,service,receiver- Se há
.sono diretóriolib/
- Consulta rápida de padrões de ameaça do Issue #65 (amostras/dispositivos autorizados; consulte
../reverse-engineering/references/nonpe-format-cookbook.md§7–8):- Ícone transparente/oculto (AU):
aapt dump badging+ manifest theme/label/icon →E-android-hidden-icon-manifest - Características de Magisk/script de brick e curl|sh remoto (AR/AS) → Características e URL como evidência, não execute comandos destrutivos
- Caminhos de persistência (AT):
service.d/priv-app, etc. →E-android-persistence
- Ícone transparente/oculto (AU):
2. Observação da Lógica Java
Priorize a leitura a partir de jadx_out:
MainActivityApplication- Classes relacionadas a login, rede, criptografia, controles de risco
- Classes de inicialização de SDKs de terceiros
Palavras-chave comuns:
loginsignencryptciphertokenrootcertificatetrustokhttpretrofitwebview
Se o código Java for legível, localize a lógica de negócios aqui primeiro.
3. Confirmação da Camada Smali e Recursos
Quando o resultado do jadx for incompleto, altamente ofuscado ou for necessário um patch real, mude para apktool_out:
- Veja
smali*/ - Veja
res/values/strings.xml - Veja
AndroidManifest.xml
Priorize patches em:
android:exported- sinalizadores de depuração
- valores de retorno de detecção de root
- lógica de verificação de login
- ramos de verificação de certificado
4. Reconstrução e Instalação
Após a modificação:
apktool b apktool_out -o rebuilt.apk
Ou use o script para fechar o ciclo:
pwsh -File "<skill-root>\apk-reverse\scripts\rebuild-sign-install.ps1" -ProjectDir "apktool_out" -Install -Reinstall -DeviceSerial "127.0.0.1:7555"
Notas:
- Esta skill garante apenas a cadeia de reconstrução com
apktool - Se a instalação formal no dispositivo for necessária posteriormente, geralmente é necessário o processo de assinatura
- Se a tarefa envolver assinatura/alinhamento, complemente com
apksigner/zipalign
5. Hook Dinâmico
Quando a análise estática for insuficiente, use Frida:
- Hook na função de login
- Hook em pontos-chave do
OkHttp/Retrofit/WebView - Hook em
javax.crypto,MessageDigest - Hook na função de detecção de root
- Hook na lógica de SSL pinning
Princípios:
- Primeiro, faça hook na camada Java; depois, veja se é necessário hook nativo
- Primeiro, imprima parâmetros e valores de retorno; depois, decida se deve modificar ativamente o valor de retorno
Sugestões:
- Para comandos simples e únicos, use diretamente
frida-* - Para fluxos de injeção que precisam ser reutilizados de forma estável, priorize o uso de
scripts/frida-run.ps1
6. Redirecionamento para Análise Nativa (.so)
Se o APK contiver .so crítico:
- Use
apktooloujadxpara localizarlib/**/*.so - Se for apenas para exportar símbolos, strings ou triagem rápida, use
radare2 - Se for para análise aprofundada de longo prazo, decompilação, renomeação, recuperação de tipos, use
ida-reverse
Mude para análise nativa o mais rápido possível ao encontrar estes sinais:
- A camada Java é apenas um wrapper JNI
- A lógica central de assinatura não está em Java
- A lógica chave desaparece após
System.loadLibrary() - Verificação de certificado/controles de risco estão no
.so
Requisitos de Saída
No final, informe pelo menos:
- Componentes de entrada e classes-chave
- Se a lógica chave está em Java, smali ou
.so - Pontos sensíveis confirmados: login, assinatura, root, SSL, WebView, JNI
- Se foi feito patch, explique o que foi alterado
- Se foi feito hook, explique qual classe/método/função exportada foi hookada
Itens Proibidos
- Não comece modificando smali cegamente
- Não escreva hooks antes de ver o manifest e a entrada principal
- Não considere a decompilação Java incompleta como equivalente a "lógica não analisável"
- Não insista na camada Java quando o
.soclaramente carrega a lógica central
Memorando de Comandos Rápidos
# Decompilar Java
jadx -d jadx_out app.apk
# Desempacotar APK
apktool d app.apk -o apktool_out
# Reconstruir APK
apktool b apktool_out -o rebuilt.apk
# Dispositivos e processos
adb devices
frida-ps -U
# Iniciar e injetar
frida -U -f com.example.app -l hook.js
Contexto de Roteamento
Entrada upstream: skills/SKILL.md (controle mestre), routing.md
Saída downstream:
- Lógica central em
.so→ida-reverse/ouradare2/ - Necessário hook/verificação dinâmica →
reverse-engineering/tools-dynamic.md(seção Frida) - Metodologia geral de engenharia reversa →
reverse-engineering/SKILL.md
Módulos associados no mesmo nível: reverse-engineering/ (análise de .so e uso avançado de Frida)
Bootstrap Sob Demanda (On-Demand Bootstrap)
Os scripts de entrada desta skill estão integrados a um sistema de bootstrap unificado. Quando faltar ferramentas, eles não irão falhar diretamente, mas tentarão instalá-las automaticamente.
Limites de Automação
| Ferramenta | Pode ser instalada automaticamente | Método de Instalação | Notas |
|---|---|---|---|
| jadx | ✓ | GitHub Release ZIP | Baixado e extraído automaticamente para %USERPROFILE%\Tools\jadx\ |
| apktool | ✓ | GitHub Release JAR + wrapper | Baixa o jar automaticamente e gera um bat em %USERPROFILE%\Tools\apktool\ |
| JEB Pro | ✗ | Instalação manual pelo usuário com licença válida | Ferramenta opcional de validação cruzada Android / ARM; pontes MCP de terceiros precisam de auditoria separada |
| frida / frida-ps | ✓ | pip install frida-tools | Requer Python instalado |
| adb | ✓ | winget / caminho alternativo | Instala automaticamente o Android Platform-Tools |
| zipalign | ✗ | Requer instalação manual do Android Build-Tools | sdkmanager "build-tools;35.0.0" |
| apksigner | ✗ | Requer instalação manual do Android Build-Tools | Mesmo que acima |
Pontos de Ativação do Bootstrap
scripts/decode.ps1: Quando faltar jadx ou apktool, chama automaticamentebootstrap-reverse.ps1scripts/rebuild-sign-install.ps1: Quando faltar adb ou apktool, chama automaticamente o bootstrapscripts/frida-run.ps1: Atualmente ainda requer verificação manual (frida geralmente já está instalado via pip)
Quando o Bootstrap Falha
Se a instalação automática falhar, o script lançará um erro claro com links de instalação manual. Causas comuns:
- Rede indisponível (GitHub API / PyPI inacessível)
- winget indisponível (versão do Windows muito antiga)
- Java não instalado (apktool depende do JDK)
Auto-verificação de Conclusão (DEVE ser aprovada antes de declarar conclusão)
- Eu executei cada passo do fluxo de trabalho (e não apenas o li)?
- Eu usei caminhos de ferramentas reais baseados no
tool-index? - Eu produzi evidências reproduzíveis (comandos/scripts/capturas de tela/relatórios)?
- Eu completei e registrei os itens da Checklist exigidos pelas REGRAS?
- Se houver pistas de ícone oculto/brick/persistência: registrei evidências E-android-* conforme o cookbook U–AV (dentro do escopo autorizado)?