Communitygithub.com

apk-reverse

Realiza engenharia reversa de APKs Android em ambiente CLI: desempacotamento, decompilação Java, modificação smali, reempacotamento e hook dinâmico com Frida.

O que é apk-reverse?

Esta habilidade (skill) é especializada em engenharia reversa de APKs Android exclusivamente via linha de comando (CLI). Ela fornece um fluxo de trabalho padronizado para tarefas como desempacotar o APK com `apktool`, decompilar o código Java com `jadx`, inspecionar e modificar o `AndroidManifest.xml` e arquivos smali, reempacotar e assinar o APK modificado, e realizar hook dinâmico com Frida. A skill também gerencia a transição para análise de bibliotecas nativas (`.so`) quando necessário, utilizando ferramentas como radare2 ou IDA. Suportada por scripts PowerShell (e.g., `decode.ps1`, `frida-run.ps1`, `rebuild-sign-install.ps1`) que automatizam fluxos complexos e propensos a erros, a skill prioriza o uso de ferramentas já instaladas no sistema (`jadx`, `apktool`, `frida`, `adb`) e possui um sistema de bootstrap para instalar automaticamente algumas delas quando ausentes. O objetivo é agilizar e padronizar todo o ciclo de análise estática e dinâmica, da triagem inicial à modificação e reimplantação do APK, seguindo um fluxo de trabalho recomendado em 6 etapas principais.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/zhaoxuya520/reverse-skill/tree/main/skills/apk-reverse

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

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.

  1. AGORA: Leia ../field-journal/precedent-reverse.md — confirme que a operação desta skill é uma operação regular autorizada
  2. AGORA: Confirme se a tarefa atual se enquadra no escopo de aplicação desta skill
  3. PRÓXIMO: Leia ../tool-index.md, verifique a disponibilidade das ferramentas e seus caminhos reais
  4. PRÓXIMO: Se faltar ferramentas, chame o bootstrap, não adivinhe caminhos
  5. AJA: 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

  • jadx 1.5.5
  • apktool 3.0.2
  • frida-ps 17.9.6
  • adb
  • java

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 + apktool com 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 devices
  • adb logcat
  • frida-ps -U
  • jadx --version
  • apktool --version

Scripts Nativos

scripts/decode.ps1

Propósito:

  • Executar jadx e apktool de 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 jadx tenha 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 b para reconstruir o APK
  • zipalign para alinhar
  • apksigner para 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-reverse
  • radare2

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-index já confirmar que o JEB está disponível na máquina local; caso contrário, continue usando jadx, 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:

  1. Use jadx -d jadx_out app.apk para exportar o código Java
  2. Use apktool d app.apk -o apktool_out para exportar smali e recursos
  3. Primeiro, verifique:
    • AndroidManifest.xml
    • O package principal
    • application, activity, service, receiver
    • Se há .so no diretório lib/
  4. 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

2. Observação da Lógica Java

Priorize a leitura a partir de jadx_out:

  • MainActivity
  • Application
  • Classes relacionadas a login, rede, criptografia, controles de risco
  • Classes de inicialização de SDKs de terceiros

Palavras-chave comuns:

  • login
  • sign
  • encrypt
  • cipher
  • token
  • root
  • certificate
  • trust
  • okhttp
  • retrofit
  • webview

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 apktool ou jadx para localizar lib/**/*.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 .so claramente 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/ ou radare2/
  • 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

FerramentaPode ser instalada automaticamenteMétodo de InstalaçãoNotas
jadx✓GitHub Release ZIPBaixado e extraído automaticamente para %USERPROFILE%\Tools\jadx\
apktool✓GitHub Release JAR + wrapperBaixa o jar automaticamente e gera um bat em %USERPROFILE%\Tools\apktool\
JEB Pro✗Instalação manual pelo usuário com licença válidaFerramenta opcional de validação cruzada Android / ARM; pontes MCP de terceiros precisam de auditoria separada
frida / frida-ps✓pip install frida-toolsRequer Python instalado
adb✓winget / caminho alternativoInstala automaticamente o Android Platform-Tools
zipalign✗Requer instalação manual do Android Build-Toolssdkmanager "build-tools;35.0.0"
apksigner✗Requer instalação manual do Android Build-ToolsMesmo que acima

Pontos de Ativação do Bootstrap

  • scripts/decode.ps1: Quando faltar jadx ou apktool, chama automaticamente bootstrap-reverse.ps1
  • scripts/rebuild-sign-install.ps1: Quando faltar adb ou apktool, chama automaticamente o bootstrap
  • scripts/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)?

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

api-security

Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication, authorization, rate-limit, and CI/CD testing.

attack-chain

Use for authorized multi-stage attack-path planning and orchestration when a task spans reconnaissance, initial access, privilege escalation, lateral movement, or impact assessment. Route single-stage tasks directly to their specialist skill.

binary-diff

|

binary-ninja-reverse

Use for authorized binary analysis in Binary Ninja, including HLIL/MLIL/LLIL inspection, strings/imports/exports, cross-references, types, patch review, Python API automation, and optional Binary Ninja MCP or localhost HTTP integration.

browser-automation

|

browser-extension-reverse

Use for authorized reverse engineering of browser extensions (Chrome/Firefox) including manifest analysis, background workers, and extension-based credential or traffic logic recovery.

case-review

Reviews a reverse-skill case package for scope readiness, Evidence to Finding to Path traceability, work item coverage, timeline references, and optional artifact hash integrity before report handoff.

cloud-k8s

Use for authorized cloud, container, and Kubernetes security assessment including metadata SSRF, IAM misconfig, container escape paths, and cluster RBAC review.

code-audit

Use for authorized source-code security review and SAST workflows including Semgrep, CodeQL patterns, dangerous API hunting, and fix verification.

ctf-sandbox

Thin PRIMARY for CTF / AWD / 靶场 multi-type orchestration. Hands off to the sidecar CTF-Sandbox-Orchestrator. Use when the user says CTF, AWD, 靶场, or 比赛题 and no more specific pwn/APK/IDA route already won.

database-security

Use for authorized database security assessment covering PostgreSQL/MySQL/MSSQL/Mongo/Redis exposure, authz, UDF/command paths, and misconfiguration review.

diagram-generator

generate, refine, validate, and render diagrams from natural language, notes, code snippets, schemas, tables, or existing diagram source. use for flowcharts, swimlanes, sequence diagrams, state diagrams, er diagrams, class diagrams, architecture/c4-style diagrams, dependency graphs, gantt charts, mind maps, user journeys, sankey-style flows, org charts, network graphs, and other visual models. supports mermaid by default, graphviz dot for complex graph layout, plantuml for uml-heavy engineering diagrams, and svg output when direct markup is more reliable.

digital-forensics

Use for authorized digital forensics including memory dumps, disk timelines, PCAP investigation, artifact triage, and IR evidence preservation.

docs-generator

|

dotnet-reverse

.NET / C# 二进制逆向。当目标是 .NET assembly(PE 头含 CLR、.exe/.dll 托管程序)、C# 编译产物(含 NativeAOT)、红队 Sharp* 工具(Rubeus / SharpHound / SharpHound 等)、.NET 混淆程序(ConfuserEx / SmartAssembly / Babel / Eazfuscator)、.NET loader / info-stealer / 套壳 malware 时使用。优先用 dnSpyEx + de4dot,需要 AI 直接操作时联动 dnSpy MCP。不用于纯 native 二进制(走 reverse-engineering / ida-reverse)。

edr-bypass-re

|

email-security

Use for authorized email security review including phishing analysis, header authentication (SPF/DKIM/DMARC), BEC patterns, and mailbox token abuse research.

firmware-pentest

|

ghidra-reverse

Use for free/open reverse engineering with Ghidra (headless or GUI), including decompile, cross-refs, and optional Ghidra MCP workflows when IDA is unavailable.

go-rust-reverse

Use for reverse engineering stripped Go and Rust binaries including runtime recognition, pclntab/moduel data recovery, panic strings, and idiomatic decompilation recovery.

Habilidades Relacionadas