🔍 Skill: REA (Reverse Engineer Anything)
Resumen de la Skill
Integración con el toolkit open-source y servidor MCP morluto/rea. Conecta a los agentes de IA (Claude Code, Cursor, Antigravity, Gemini CLI) con herramientas de inspección estática y dinámica (Ghidra, Hopper, IDA Pro, JADX, AST de JS/Electron, Chromium) para entender y recrear aplicaciones sin disponer del código fuente original.
🧭 Metodología de Investigación
REA opera bajo un modelo estructurado de tres fases respaldado por evidencias verificables:
flowchart LR A["📂 Aplicación / Binario Objetivo"] --> B["1. Decompile / Inspect<br/>(Desensamblado, AST, Strings)"] B --> C["2. Understand<br/>(Grafo de llamadas, APIs, Evidencia)"] C --> D["3. Recreate (Clean-Room)<br/>(Código limpio en tu propio stack)"]
⚡ Instalación y Setup Rápido
1. Configuración del Servidor MCP y Agentes
# Asistente interactivo de detección y configuración
npx rea-agents setupO instalación global mediante npm:
npm install --global rea-agents
rea setup2. Registrar el Skill en el Asistente de IA
npx skills add morluto/rea --skill reverse-engineer-anything3. Diagnóstico del Entorno
# Diagnóstico completo de dependencias y proveedores
npx -y rea-agents@latest doctor --json🛠️ Catálogo de Capacidades y 5 Casos de Uso
1. Aplicaciones Electron y JavaScript (.asar / JS Bundles)
- Capacidad: Mapeo del árbol de módulos, rutas de IPC (Inter-Process Communication), plugins nativos y almacenamiento sin ejecutar el ejecutable.
- Comando CLI:
rea analyze /ruta/al/app.asar --json # O análisis específico de JavaScript: rea analyze-javascript-application /ruta/a/carpeta-o-asar --json - Prompt modelo para el Agente:
“Inspecciona este paquete
app.asar. Rastrea cómo se comunican el proceso principal y el renderizador vía IPC para la persistencia de datos y genera un módulo equivalente en TypeScript.”
2. Binarios Nativos y Formatos Cerrados (C/C++, Rust, Go, Mach-O, ELF, PE)
- Capacidad: Conexión desatendida con Ghidra, Hopper Disassembler o IDA Pro para extraer funciones, pseudocódigo C, desensamblado, referencias cruzadas (xrefs) y estructuras binarias.
- Comando CLI:
export GHIDRA_INSTALL_DIR=/opt/ghidra rea function /ruta/al/binario main --provider ghidra --json - Prompt modelo para el Agente:
“Abre este binario con Ghidra usando REA. Localiza la función que parsea el archivo de configuración propietario y explícame la estructura de bytes para escribir un parser en Python.”
3. Inspección Web y Browser Runtime (SPA, Chunks de Webpack/Vite)
- Capacidad: Captura pasiva mediante navegador Chromium de scripts retenidos, detección de source maps, reconstrucción de módulos (
export_web_scripts,trace-web-source-location) y seguimiento de llamadas de red. - Prompt modelo para el Agente:
“Exporta los scripts cargados en la sesión web activa con REA, localiza el módulo que calcula el checksum de las solicitudes a la API y recrea esa función limpia en JavaScript.”
4. Auditoría Estática de Aplicaciones Android (APKs)
- Capacidad: Inspección mediante JADX headless y JDK sin necesidad de emuladores. Análisis de
AndroidManifest.xml, búsqueda de clases, cadenas hardcodeadas y descompilación bajo demanda de métodos sensibles. - Prompt modelo para el Agente:
“Analiza este archivo APK con REA. Lista los permisos, servicios exportados y descompila los métodos de la clase de autenticación para comprobar si hay secretos expuestos.”
5. Análisis de Firmwares IoT y Código Administrado (.NET / CIL)
- Capacidad: Extracción de particiones y sistemas de archivos embebidos con
binwalk/unbloben Linux, combinada con inspección de metadatos CIL para ensamblados.dll/.exede .NET. - Prompt modelo para el Agente:
“Desempaqueta este firmware binario con REA, extrae el ejecutable del daemon de red y analiza con Ghidra cómo valida las credenciales de administración.”
🔒 Reglas, Límites y Buenas Prácticas
- Ejecución 100% Local: REA no envía binarios ni código a servicios externos en la nube. La inspección ocurre enteramente en tu máquina.
- Diseño de Sala Limpia (Clean-Room Design): El objetivo no es piratear código ofuscado ni copiar blobs ilegibles, sino entender las especificaciones y construir código nuevo, tipado y legible.
- No Clonación Mágica: Los descompiladores producen pseudocódigo y metadatos. Las aplicaciones complejas deben desglosarse en componentes individuales.
- Instantáneas (Snapshots): Guarda resultados exitosos para evitar descompilaciones repetidas usando
--snapshot /ruta/cache.json.
🔗 Relacionado en la Bóveda
- reconstruccion-arquitectura-obsidian: Guía práctica para aplicar REA en la ingeniería inversa de Obsidian.
- obsidian-rust-typescript-tauri: Proyecto para crear una aplicación nativa inspirada en Obsidian con Tauri y Rust.
- diagram-design: Herramienta para visualizar flujos arquitectónicos.