🤖 ReaDroid — Toolkit de Ingeniería Inversa de APKs en Termux

Análisis estático y reconstrucción de APKs desde el teléfono, sin root

ReaDroid es una herramienta en Python para Termux que inspecciona APKs (estructura ZIP, hashes, DEX, librerías nativas), parsea el AndroidManifest.xml binario (AXML) sin depender de JADX/Apktool, extrae URLs/dominios/IPs y permite descompilar, editar, reconstruir, alinear y firmar un APK listo para instalar. Pensada para Android 12–16 en ARM64, sin root ni PC.

  • 💻 Repositorio: Mcsd7/ReaDroid
  • 🧰 Stack: Python 3.9+ · Termux · JADX / Apktool / apksigner (opcionales)
  • 🤖 IA opcional: OpenCode + OpenRouter con modelo gratis (Nemotron)
  • 📜 Licencia: MIT

📋 Ficha Técnica

ParámetroDetalle
Repositoriogithub.com/Mcsd7/ReaDroid
Autor@Mcsd7
LicenciaMIT
LenguajePython (stdlib para el núcleo, incluido el parser AXML)
PlataformaTermux ARM64 · Android 12–16 · sin root
AlternativaLinux de escritorio (experimental: Debian/Ubuntu, Fedora, Arch)
RequisitosPython 3.9+ · Java 11+ solo si usas JADX
Tracción~82 ⭐ · 21 forks · 6 issues abiertos (al 2026-10-25)
Creado2026-10-16
Marca de UIOffensiveTec (watermark sutil en la terminal)

🧠 Qué Hace

graph LR
    A["📦 APK de entrada"] --> B["🔍 ReaDroid (Python)"]
    B --> C["Estructura ZIP · SHA-256 · DEX · .so"]
    B --> D["AXML parser nativo (manifest)"]
    B --> E["URLs · dominios · IPv4"]
    B --> F["JADX (opcional) → Java aprox."]
    B --> G["Apktool (opcional) → smali + resources"]
    G --> H["✏️ Edición"]
    H --> I["🔨 apktool b + zipalign + apksigner"]
    I --> J["📱 APK instalable en builds/"]
    B --> K["📄 Reportes JSON locales"]

Capacidades principales

FunciónDetalle
InspecciónEstructura ZIP, hashes SHA-256, archivos DEX y librerías nativas
Manifest sin dependenciasParser AXML en Python puro: package, versión, permisos, componentes y flags de <application> sin JADX/Apktool/aapt2
Extracción de IOCsURLs, dominios validados contra TLDs reales e IPv4 candidatas
Decompilación opcionalJADX para Java aproximado; Apktool para recursos y smali
Rebuild completoapktool b + zipalign + apksigner (fallback jarsigner) en un solo flujo
Ediciones rápidasdebuggable, allowBackup, cleartext traffic, permiso INTERNET
Renombrado de paqueteMueve carpetas smali y actualiza referencias + manifest (best-effort)
ReportesJSON locales, sin telemetría ni servicios externos
UI móvilMenú de terminal adaptado a pantallas pequeñas, salida saneada contra ANSI escapes maliciosos
ExploradorNavega y abre Java, Kotlin, smali, XML, JSON, reportes y APKs reconstruidos

🚀 Instalación en Termux

Setup completo

# 1. Actualizar e instalar dependencias
pkg update && pkg upgrade
pkg install python openjdk-21 jadx apktool aapt unzip git
pkg install apksigner        # recomendado para firma v2/v3
 
# 2. Acceso a Descargas (para elegir APKs desde ahí)
termux-setup-storage
 
# 3. Clonar y ejecutar
git clone https://github.com/Mcsd7/ReaDroid.git
cd ReaDroid
python readroid.py

Si ya tienes los archivos descargados: bash install.sh y luego python readroid.py.

Linux de escritorio (experimental)

Debian / Ubuntu / Fedora / Arch

bash install-linux.sh
python3 readroid.py

El script prepara carpetas e instala solo la base (python3, Java, unzip, git); JADX, Apktool, aapt/zipalign y apksigner quedan a cargo de los paquetes de tu distro. Al final reporta qué está presente y qué falta. Probado en Debian con apktool/jadx del sistema.


🕹️ Flujo de Uso

  1. Ejecutar python readroid.py.
  2. Elegir la acción en el menú.
  3. Pegar la ruta del APK (absoluta o relativa) o seleccionar uno detectado en Download/.
  4. Revisar reportes en reports/ y archivos exportados en output/.
  5. Usar la opción 9 — Explore and open generated files para navegar y abrir lo generado.

Flujo de reconstrucción (opciones 5, 10, 11, 12)

PasoAcción
5Decodifica el APK con Apktool → output/<app>_apktool/
10Ediciones rápidas del manifest + renombrado de applicationId
11Rebuild + zipalign + firma → APK final en builds/ (y copia a Downloads/ReaDroid/ si hay storage)
12Inspecciona o recrea la clave de firma generada en el primer rebuild

Firma y targetSdk

Sin apksigner, ReaDroid usa jarsigner (solo v1/JAR). Las apps con targetSdkVersion 24+ pueden ser rechazadas por el instalador en Android 7+ sin firma v2. Instala apksigner para firma v1+v2+v3.


🤖 Asistente IA (Opcional)

ReaDroid funciona completo sin IA. El asistente vive en readroid/ai.py; si no lo quieres, ignora la opción 13 o borra ese archivo y la opción desaparece.

Configuración en un paso: opción 13 → pegar API key de OpenRouter.

Qué hace:

  • Guarda la key en ~/.readroid/openrouter.key con permisos 600 y fuera del proyecto (no se puede commitear).
  • Genera un opencode.json apuntando a OpenRouter con un modelo gratis (por defecto nvidia/nemotron-3.5-lightning:free). Si ese modelo desaparece, cambia solo a otro :free, nunca a uno de pago.
  • Prueba key/modelo contra la API y luego prueba OpenCode.
  • Arranca OpenCode dentro de la carpeta del APK decodificado (output/<app>_apktool), pasando config y key por variables de entorno. Se niega a abrirse en el home.

Loop editar → reconstruir (opción 4)

  1. Se hace backup de la carpeta decodificada (builds/_backup_*).
  2. La IA edita solo dentro de esa carpeta.
  3. ReaDroid reconstruye/alinea/firma.
  4. Si falla, con tu confirmación (hasta 3 intentos), el error vuelve a la IA.
  5. ReaDroid lista qué archivos cambió la IA.

Privacidad del asistente

Los modelos gratuitos pueden registrar prompts, y todo lo que la IA lee (código, strings, manifest) sale a internet vía OpenRouter. Úsalo solo con APKs propios o con autorización explícita. La IA está apagada hasta que configures la key.


⚠️ Límites

  • Solo análisis estático: no ejecuta el APK ni monitoriza comportamiento en runtime.
  • El parser AXML cubre package, versión, permisos, componentes y flags de <application>; para manifests raros intenta JADX/Apktool/aapt2 como fallback.
  • JADX no reconstruye el código original: identificadores ofuscados, comentarios y nombres de variables se pierden.
  • URLs, dominios, IPs y permisos son pistas para revisión manual, no prueba definitiva de malicia.
  • El escáner de strings aplica límites de tamaño/cantidad; el reporte marca truncated_categories si una lista puede estar incompleta.
  • El rebuild depende de apktool/zipalign/apksigner (o jarsigner); si faltan, indica exactamente qué falta.
  • Nunca modifica ni firma el APK original: cada rebuild genera un archivo nuevo en builds/.
  • Renombrar paquete es best-effort: código que construye nombres por reflexión o en runtime puede no cubrirse.

🛡️ Uso Responsable

Solo APKs propios o autorizados

Analiza únicamente tus propias apps, apps de prueba o aquellas para las que tengas permiso explícito. Los APKs son archivos no confiables: evita ejecutarlos. ReaDroid invoca JADX/Apktool/zipalign/apksigner con argumentos separados (sin interpretación de shell) y no transmite APKs a internet; solo el asistente IA opcional envía lo que le pides leer a OpenRouter.

Re-firmar cambia la identidad del desarrollador original: el APK resultante no reemplaza la versión de la tienda y redistribuir un APK modificado sin permiso puede violar su licencia.


🔗 Enlaces

📚 Referencias