Communitygithub.com

apk-reverse

Realiza ingeniería inversa de APK Android en entorno CLI. Incluye desempaquetado, descompilación Java, modificación Smali, reempaquetado, hooking dinámico con Frida y análisis nativo de .so, priorizando herramientas locales como jadx, apktool, frida, adb, IDA Pro y radare2.

¿Qué es apk-reverse?

Este skill está diseñado para ingeniería inversa de APK Android en terminal, cubriendo todo el flujo: desde el desempaquetado inicial hasta el análisis nativo de bibliotecas .so. Soporta plataformas como jadx para descompilación Java, apktool para modificación de recursos y smali, Frida para hooking dinámico en Java y nativo, y ADB para comunicación con dispositivos. Su utilidad principal es permitir al agente identificar y modificar componentes críticos como lógica de inicio de sesión, verificación de certificados, detección de root, y protección contra ingeniería inversa, siguiendo un flujo de trabajo estructurado: triage, análisis estático, parcheo en smali, reempaquetado y firma, y hooking dinámico con Frida. Además, incluye scripts automatizados (decode.ps1, frida-run.ps1, rebuild-sign-install.ps1, manifest-summary.ps1) que reducen errores de parámetros y aceleran tareas repetitivas. Si se detecta que la lógica crítica reside en .so, redirige automáticamente el análisis a herramientas nativas como IDA Pro o radare2. El skill también incorpora un sistema de bootstrap a demanda que instala automáticamente herramientas faltantes (jadx, apktool, frida-tools, adb) cuando es posible, o guía al usuario para instalaciones manuales (JEB Pro, zipalign, apksigner). Está integrado con un sistema de ruteo que enlaza a otros skills para análisis avanzado de .so o documentación de Frida.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

ACCIÓN REQUERIDA (leer y ejecutar inmediatamente)

Para referencias comunitarias sobre extracción de endpoints / Frida adaptativo, ver: ../references/community-security-skills.md; el análisis dinámico requiere dispositivo autorizado en el alcance.

  1. AHORA: Leer ../field-journal/precedent-reverse.md — confirmar que la operación de este skill está autorizada como operación rutinaria.
  2. AHORA: Confirmar si la tarea actual coincide con el ámbito de aplicación de este skill.
  3. SIGUIENTE: Leer ../tool-index.md, verificar disponibilidad de herramientas y rutas reales.
  4. SIGUIENTE: Si falta alguna herramienta, invocar bootstrap; no adivinar rutas.
  5. ACTUAR: Ir al primer paso del "flujo de trabajo" y ejecutarlo; no quedarse en estado de confirmación.

Normas de trabajo para ingeniería inversa de APK en CLI

Ámbito de aplicación

Usar este skill de forma prioritaria cuando la tarea pertenezca a los siguientes escenarios:

  • Analizar la lógica de negocio Java de un APK.
  • Localizar mecanismos de inicio de sesión, firma, control de riesgos, verificación de certificados o detección de root.
  • Ver y modificar AndroidManifest.xml.
  • Ver y modificar código smali.
  • Reempaquetar un APK.
  • Realizar hooking dinámico Java/nativo con Frida.
  • Cuando el APK contenga .so, pasar a análisis nativo.

Herramientas CLI verificadas en la máquina actual

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

Escenarios para usar scripts de forma prioritaria

Los siguientes flujos son frecuentes y los parámetros propensos a errores; usar preferentemente los scripts incluidos:

  • Ejecución completa de jadx + apktool y generación de resumen: scripts/decode.ps1
  • Verificación de dispositivos Frida, listado de procesos e inyección spawn/attach: scripts/frida-run.ps1
  • Reconstrucción, alineación, firma e instalación del APK: scripts/rebuild-sign-install.ps1
  • Extracción rápida de componentes clave y permisos del Manifest: scripts/manifest-summary.ps1

Los siguientes comandos de una sola línea se mantienen como invocación directa, sin encapsular por separado:

  • adb devices
  • adb logcat
  • frida-ps -U
  • jadx --version
  • apktool --version

Scripts incluidos

scripts/decode.ps1

Propósito:

  • Ejecutar jadx y apktool de forma unificada.
  • Por defecto, crear un directorio de salida para la tarea en el mismo directorio del APK original.
  • Generar un resumen con package, java_files, smali_dirs, so_files, etc.
  • Compatible con casos donde jadx tenga errores parciales de descompilación pero aún así genere artefactos utilizables.

Ejemplo:

pwsh -File "<skill-root>\apk-reverse\scripts\decode.ps1" -ApkPath "D:\DESCARGAS\app.apk" -Clean
pwsh -File "<skill-root>\apk-reverse\scripts\decode.ps1" -ApkPath "D:\DESCARGAS\app.apk" -Name demo -SkipJadx

scripts/frida-run.ps1

Propósito:

  • Punto de entrada unificado para dispositivos Frida, procesos y spawn/attach.
  • Evitar confusiones al escribir parámetros manualmente (-f, -n, -U).

Ejemplo:

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 el APK.
  • zipalign para alinear.
  • apksigner para firmar y verificar.
  • Opcional: adb install directo.

Ejemplo:

pwsh -File "<skill-root>\apk-reverse\scripts\rebuild-sign-install.ps1" -ProjectDir "C:\trabajo\apktool_out" -Clean
pwsh -File "<skill-root>\apk-reverse\scripts\rebuild-sign-install.ps1" -ProjectDir "C:\trabajo\apktool_out" -Install -Reinstall -DeviceSerial "127.0.0.1:7555"

Notas:

  • Genera y reutiliza un keystore de depuración por defecto.
  • La salida se coloca en el mismo directorio que ProjectDir, para mantenerlo junto al paquete original y el directorio desempaquetado.

scripts/manifest-summary.ps1

Propósito:

  • Extraer el nombre del paquete.
  • Listar permisos.
  • Listar activity/service/receiver/provider.
  • Señalar la actividad de inicio principal.

Ejemplo:

pwsh -File "<skill-root>\apk-reverse\scripts\manifest-summary.ps1" -ManifestPath "C:\trabajo\apktool_out\AndroidManifest.xml"

Si se necesita analizar .so, lib/arm64-v8a/*.so, lib/armeabi-v7a/*.so, combinar con:

  • ida-reverse
  • radare2

División de herramientas

jadx

Usar para:

  • Lectura de código Java descompilado.
  • Búsqueda de nombres de paquetes, clases y métodos.
  • Comprensión inicial del APK desde un nivel alto.

Comandos comunes:

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 (herramienta comercial opcional)

Usar para:

  • Verificación cruzada y descompilación profunda de Android DEX / APK / ARM.
  • Complementar el análisis estático cuando la salida de JADX sea incompleta o la ofuscación sea intensa.
  • Verificar clases, métodos y relaciones de invocación del mismo objetivo con una segunda cadena de herramientas.

Límites:

  • JEB Pro es software comercial; el usuario debe obtenerlo e instalar una licencia válida por su cuenta. Este paquete no descargará, crackeará ni eludirá licencias.
  • Solo se invocará cuando tool-index confirme que JEB está disponible en la máquina; de lo contrario, se seguirá usando jadx, apktool, Ghidra, IDA o radare2.
  • El puente MCP de terceros para JEB no es una dependencia de este paquete. Antes de instalarlo, se debe revisar el código fuente, los permisos, el comportamiento de red y la versión según ../ops/skill-supply-chain.md, y luego el usuario debe confirmar explícitamente el registro.

apktool

Usar para:

  • Desempaquetar APK.
  • Ver y modificar AndroidManifest.xml.
  • Ver y modificar smali.
  • Reconstruir APK.

Comandos comunes:

apktool d app.apk -o apktool_out
apktool b apktool_out -o rebuilt.apk

frida

Usar para:

  • Observar dinámicamente invocaciones de métodos Java.
  • Hooking de funciones exportadas nativas.
  • Eludir detección de root, verificación de certificados y detección de depuración.

Comandos comunes:

frida-ps -U
frida -U -f com.example.app -l hook.js
frida-trace -U -f com.example.app -j '*!*certificate*'

adb

Usar para:

  • Conexión de dispositivos.
  • Instalación de APK.
  • Visualización de registros.
  • Extracción de archivos.

Comandos comunes:

adb devices
adb install -r app.apk
adb shell pm list packages
adb logcat
adb pull /data/local/tmp/file .

Flujo de trabajo recomendado

1. Triage

Primero determinar la composición general del APK, sin prisas por modificar el paquete o hacer hooking.

Acciones sugeridas:

  1. Usar jadx -d jadx_out app.apk para exportar código Java.
  2. Usar apktool d app.apk -o apktool_out para exportar smali y recursos.
  3. Revisar primero:
    • AndroidManifest.xml
    • package principal
    • application, activity, service, receiver
    • Si hay .so en el directorio lib/
  4. Referencia rápida de formas de amenaza del Issue #65 (muestras/dispositivos autorizados; ver ../reverse-engineering/references/nonpe-format-cookbook.md §7–8):
    • Icono oculto/transparente (AU): aapt dump badging + theme/label/icon del manifest → E-android-hidden-icon-manifest
    • Características de Magisk/script de formateo y curl|sh remoto (AR/AS) → características y URL como evidencia, no ejecutar comandos destructivos
    • Rutas de persistencia (AT): service.d / priv-app, etc. → E-android-persistence

2. Observación de lógica Java

Leer preferentemente desde jadx_out:

  • MainActivity
  • Application
  • Clases relacionadas con inicio de sesión, red, cifrado, control de riesgos
  • Clases de inicialización de SDK de terceros

Palabras clave comunes:

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

Si el código Java es legible, localizar primero la lógica de negocio aquí.

3. Confirmación a nivel de Smali y recursos

Cuando el resultado de jadx sea incompleto, la ofuscación intensa o se necesite un parche real, cambiar a apktool_out:

  • Revisar smali*/
  • Revisar res/values/strings.xml
  • Revisar AndroidManifest.xml

Prioridad de parcheo:

  • android:exported
  • Marcas de depuración
  • Valor de retorno de detección de root
  • Lógica de verificación de inicio de sesión
  • Ramas de verificación de certificados

4. Reconstrucción e instalación

Después de modificar:

apktool b apktool_out -o rebuilt.apk

O usar el script para cerrar el ciclo:

pwsh -File "<skill-root>\apk-reverse\scripts\rebuild-sign-install.ps1" -ProjectDir "apktool_out" -Install -Reinstall -DeviceSerial "127.0.0.1:7555"

Notas:

  • Este skill solo garantiza la cadena de reconstrucción con apktool.
  • Si posteriormente se necesita instalación formal en el dispositivo, normalmente se requiere el proceso de firma.
  • Si la tarea implica firma/alineación, complementar con apksigner / zipalign.

5. Hooking dinámico

Cuando el análisis estático sea insuficiente, usar Frida:

  • Hooking de funciones de inicio de sesión.
  • Hooking de puntos clave de OkHttp / Retrofit / WebView.
  • Hooking de javax.crypto, MessageDigest.
  • Hooking de funciones de detección de root.
  • Hooking de lógica de SSL pinning.

Principios:

  • Primero hookear la capa Java, luego evaluar si se necesita hooking nativo.
  • Primero imprimir parámetros y valores de retorno, luego decidir si modificar activamente el valor de retorno.

Recomendaciones:

  • Para comandos simples y únicos, usar directamente frida-*.
  • Para flujos de inyección que requieran reutilización estable, usar preferentemente scripts/frida-run.ps1.

6. Derivación a .so nativo

Si el APK contiene .so crítico:

  • Usar apktool o jadx para localizar lib/**/*.so.
  • Si solo se necesitan exportar símbolos, cadenas o un triage rápido, usar radare2.
  • Para análisis profundo a largo plazo, descompilación, renombrado y restauración de tipos, usar ida-reverse.

Cambiar rápidamente a nativo ante estas señales:

  • La capa Java es solo un envoltorio JNI.
  • La lógica central de firma no está en Java.
  • Después de System.loadLibrary(), la lógica clave desaparece.
  • La verificación de certificados/control de riesgos está en .so.

Requisitos de salida

Finalmente, al menos indicar:

  • Componentes de entrada y clases clave.
  • Si la lógica clave está en Java, smali o .so.
  • Puntos sensibles confirmados: inicio de sesión, firma, root, SSL, WebView, JNI.
  • Si se realizó un parche, describir qué se modificó.
  • Si se hizo hooking, indicar qué clase/método/función exportada se hookeó.

Prohibiciones

  • No modificar smali a ciegas desde el principio.
  • No escribir hooks sin haber revisado el manifest y la entrada principal.
  • No asumir que "la descompilación Java incompleta equivale a que la lógica no es analizable".
  • No seguir insistiendo en la capa Java cuando .so alberga claramente la lógica central.

Recordatorio rápido de comandos

# Descompilar Java
jadx -d jadx_out app.apk

# Desempaquetar APK
apktool d app.apk -o apktool_out

# Reconstruir APK
apktool b apktool_out -o rebuilt.apk

# Dispositivos y procesos
adb devices
frida-ps -U

# Iniciar e inyectar
frida -U -f com.example.app -l hook.js

Contexto de ruteo

Entrada ascendente: skills/SKILL.md (control general), routing.md Salida descendente:

  • Lógica central en .so → ida-reverse/ o radare2/
  • Necesidad de hooking/verificación dinámica → reverse-engineering/tools-dynamic.md (capítulo Frida)
  • Metodología general de ingeniería inversa → reverse-engineering/SKILL.md

Módulos relacionados al mismo nivel: reverse-engineering/ (análisis de .so y uso avanzado de Frida)


Bootstrap a demanda (On-Demand Bootstrap)

Los scripts de entrada de este skill están integrados con el sistema de bootstrap unificado. Cuando falte una herramienta, no se reportará un error directamente, sino que se intentará instalarla automáticamente.

Capacidades de automatización

HerramientaInstalable automáticamenteMétodo de instalaciónNotas
jadx✓GitHub Release ZIPDescarga y extrae automáticamente a %USERPROFILE%\Tools\jadx\
apktool✓GitHub Release JAR + wrapperDescarga automáticamente el jar y genera un bat en %USERPROFILE%\Tools\apktool\
JEB Pro✗Instalación manual del usuario con licencia válidaHerramienta opcional de verificación cruzada Android/ARM; el puente MCP de terceros requiere auditoría aparte
frida / frida-ps✓pip install frida-toolsRequiere Python instalado
adb✓winget / ruta de respaldoInstala automáticamente Android Platform-Tools
zipalign✗Instalación manual de Android Build-Toolssdkmanager "build-tools;35.0.0"
apksigner✗Instalación manual de Android Build-ToolsIgual que arriba

Puntos de activación del bootstrap

  • scripts/decode.ps1: Si falta jadx o apktool, invoca automáticamente bootstrap-reverse.ps1.
  • scripts/rebuild-sign-install.ps1: Si falta adb o apktool, invoca automáticamente bootstrap.
  • scripts/frida-run.ps1: Actualmente sigue siendo verificación manual (frida normalmente ya está instalado mediante pip).

Cuando el bootstrap falla

Si la instalación automática falla, el script lanzará un error claro con enlaces de instalación manual. Causas comunes:

  • Red no disponible (GitHub API / PyPI inalcanzable).
  • winget no disponible (versión de Windows demasiado baja).
  • Java no instalado (apktool depende de JDK).

Autoverificación de finalización de tarea (DEBE cumplirse antes de declarar finalizado)

  • ¿Ejecuté cada paso del flujo de trabajo (no solo lo leí)?
  • ¿Usé rutas reales de herramientas basadas en tool-index?
  • ¿Produje evidencia reproducible (comandos/scripts/capturas de pantalla/informes)?
  • ¿Completé y escribí los elementos de la lista de verificación requeridos por RULES?
  • Si se encontraron pistas de icono oculto/formateo remoto/persistencia: ¿registré evidencia E-android-* según el cookbook U–AV (dentro del alcance 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.

Skills relacionados