REA (Reverse Engineer Anything) es un servidor MCP que le permite realizar ingeniería inversa de aplicaciones de software, archivos binarios y comportamiento en tiempo real. La herramienta cubre el camino desde el comportamiento de la aplicación hasta el código de máquina, y es conveniente utilizar OpenCode como agente que lo gestiona.
OpenCode es un agente de programación abierto que vive en la terminal. Lee archivos de proyecto, edita código, ejecuta comandos y pruebas y, lo más importante, es compatible con MCP desde el primer momento, por lo que REA se conecta a él directamente.
Qué hace que REA sea único
REA se destaca en el campo de la ingeniería inversa con soporte integral para varias plataformas y tipos de análisis:
- Binarios nativos: Hopper, Ghidra, IDA o Kuna para desensamblaje y descompilación
- Aplicaciones JavaScript y Electron: análisis estático de módulos, importaciones y límites de Electron
- Código administrado: análisis de ensamblados .NET
- Análisis en tiempo real: seguimiento del comportamiento del proceso
- Tráfico de red: captura y análisis de solicitudes y respuestas HTTP/S
- Aplicaciones móviles: análisis de archivos APK e IPA para Android e iOS
- Software integrado: análisis de sistemas integrados y dispositivos IoT
- Archivos de modelo: extracción de metadatos de GGUF y tensores de seguridad
- Objetos de código GPU: análisis de kernels CUDA y HIP
- Guardar juegos: restaurar la lógica del juego y los archivos ejecutables
Arquitectura y filosofía básica
REA sigue un proceso de investigación de tres pasos que hace que la ingeniería inversa sea accesible para los desarrolladores:
- Inspección: REA se conecta a herramientas de análisis y examina objetivos (binarios, aplicaciones, sitios web)
- Análisis: rastrea el código, determinando reglas y comportamiento
- Recuperación: el agente utiliza los resultados para explicar el comportamiento y crear o probar una implementación
Este proceso permite al agente de IA responder preguntas complejas, como: “Comprender cómo funciona la búsqueda en la aplicación Notas, mostrarme la evidencia y crear una función similar para mi proyecto”.
Ejemplos prácticos de uso
1. Análisis de aplicaciones móviles
REA puede analizar archivos APK de Android para su recuperación:
- declaraciones y permisos en el manifiesto;
- métodos de clase y dependencias;
- enlaces a bibliotecas nativas;
- puntos finales de red y flujos de datos.
Por ejemplo, un análisis de Aegis Authenticator mostró cómo los códigos de autorización de seis dígitos cambian cada 30 segundos: examinó cómo funciona la generación de código basada en el tiempo (TOTP).
2. Extracción de funciones de aplicaciones de escritorio
El análisis del botón % en la Calculadora de Windows demuestra las capacidades de REA:
- definir comportamiento diferente según el contexto (después de + o ×);
- analizar instrucciones de ensamblaje para comprender la lógica;
- extraer y explicar operaciones matemáticas;
- restaurar las reglas: “Después de +: 10% del primer número” y “Después de ×: convertir 10% a 0,1”.
3. Restaurando la API de la aplicación web
REA puede registrar una sesión del navegador y reconstruirla como un entorno RL donde el agente de IA realiza tareas como trabajar con carpetas sin ejecutar la aplicación original.
4. Restaurando la lógica del juego
El caso DX-Ball mostró cómo REA restauró el cálculo del paisaje sonoro del juego de Windows de 1996 mediante ingeniería inversa de código C que se ejecuta en 3205 casos de prueba y coincide con el código compilado original.
Capacidades técnicas
Análisis nativo
- Funciona con Hopper, Ghidra, IDA o Kuna para un análisis profundo de archivos binarios
- Admite ELF, PE, Mach-O y otros formatos de archivos ejecutables
- Extrae pseudocódigo, ensamblador, símbolos y llamadas
- Realiza análisis fuera de línea sin tener que iniciar las herramientas originales
Análisis de JavaScript
- Analiza aplicaciones Node.js y Electron
- Seguimiento de importaciones y dependencias de módulos
- Captura el comportamiento en tiempo real a través de una conexión de navegador
- Извлекает source maps и минифицированный код
Seguridad
- Análisis estático de certificados PE (Authenticode)
- Análisis de mecanismos de defensa (PIE, NX, RELRO, CFG)
- Importaciones de mapas y archivos DLL
- Análisis de informes de fallos (Apple IPS)
Qué devuelve REA
REA no le da al agente conclusiones ya preparadas sin motivo alguno. El resultado de cada consulta son los hallazgos junto con la evidencia en la que se basan. Dependiendo del propósito, la respuesta incluye:
- Enlaces al código: archivos y líneas específicos donde se implementa la función en estudio.
- Pseudocódigo y ensamblador – para binarios nativos: funciones descompiladas, instrucciones y conexiones entre llamadas.
- Estructura de la aplicación – para JavaScript y Electron: módulos, importaciones, rutas, IPC y conexiones con complementos nativos.
- Metadatos y hechos: manifiestos, certificados, firmas, encabezados de formato y otros datos estáticos.
- Restricciones: lugares que no se pudieron seleccionar, con una nota sobre lo que se desconoce exactamente.
El agente utiliza estos datos para explicar el comportamiento, responder preguntas aclaratorias o ensamblar y probar su implementación. Es la presencia de evidencia y limitaciones explícitas lo que distingue un resultado REA de una simple suposición del modelo.
Antes de comenzar
Se supone que OpenCode ya está instalado y el modelo está conectado a él. REA necesita Node.js 22.23.4+, 24.22.1+ o 26.12.1+, así que verifique la versión:
node -v
Paso 1: Conecte REA a OpenCode
REA se registra con OpenCode como servidor MCP. Ejecutar en la terminal:
npx rea-agents@latest setup
Para especificar OpenCode directamente, utilice su identificador opencode:
npx rea-agents@latest setup --client opencode
Qué hace la configuración:
- registra REA como servidor MCP;
- agrega instrucciones de flujo de trabajo;
- realiza una copia de seguridad de la configuración existente;
- solicita confirmación antes de aplicar los cambios.
Punto importante:
Para el primer experimento, puede omitir la instalación opcional de Hopper. Una vez completada la configuración, reinicie OpenCode: salga de la sesión y ejecute opencode nuevamente.
Verifique la conexión:
npx -y rea-agents@latest doctor --client opencode --json
Resultado exitoso: "healthy": true.
Luego pregúntale al agente:
“Comprueba que REA esté conectado y muéstrame qué herramientas REA puedes usar.”
Paso 2: Primera investigación
REA puede analizar aplicaciones sin iniciarlas.
- Descargar el ejemplo:
Download https://rea.tools/examples/notes-example.zipDesempaquete el archivo en la carpeta
notes-example. - Dale una tarea al agente:
“Utilice REA para inspeccionar la aplicación en
/absolute/path/to/notes-example. Descubra qué sucede cuando hago clic en Exportar notas. Muestra dónde está escrito notes.csv, qué campos contiene y los archivos y líneas relevantes”.
Respuesta esperada:
“El botón envía un mensaje
notes:export. El proceso principal formatea las notas como CSV y escribenotes.csven la carpeta de Descargas del usuario. Las columnas sonidytitle“.
Paso 3: instalación de Ghidra y análisis nativo
Para analizar binarios nativos (ejecutables y bibliotecas), REA utiliza un proveedor de análisis. La opción gratuita más asequible es Ghidra de la NSA. La herramienta se instala una vez en la computadora donde se ejecuta REA.
Lo que necesitas
- JDK 21 de 64 bits o posterior, incluido el compilador de Java (
javac). - Archivo de Ghidra desde la página de lanzamientos.
Instalación
- Instale JDK 21 de 64 bits o posterior. Seleccione un paquete para la arquitectura de su computadora.
- Descargue Ghidra de la lista de Activos en la página de lanzamientos y descomprima el archivo
ghidra_…_PUBLIC_….zip. Tome el archivo de lanzamiento, no el “código fuente”. - Busque la carpeta descomprimida que contiene
ghidraRunoghidraRun.bat. Esta ruta será necesaria para la variableGHIDRA_INSTALL_DIR.
Consulte Java. El primer comando imprime java.home; esta ruta es necesaria para JAVA_HOME. El segundo confirma que el compilador está instalado:
java -XshowSettings:properties -version
javac -version
Conexión Ghidra
Windows (PowerShell):
$env:GHIDRA_INSTALL_DIR = "C:/tools/ghidra_12.1.4_PUBLIC"
$env:JAVA_HOME = "C:/tools/jdk-21"
npx -y rea-agents@latest doctor --provider ghidra --json
npx -y rea-agents@latest setup
macOS/Linux:
export GHIDRA_INSTALL_DIR="/absolute/path/to/ghidra_12.1.4_PUBLIC"
export JAVA_HOME="/absolute/path/to/jdk-21"
npx -y rea-agents@latest doctor --provider ghidra --json
npx -y rea-agents@latest setup
Reemplaza los caminos por los tuyos propios. Mantenga los comandos en una sesión de terminal: después de configurar las variables de entorno, vuelva a ejecutar la instalación, confirme la actualización de la configuración y reinicie OpenCode.
La verificación del proveedor debería arrojar un informe exitoso:
npx -y rea-agents@latest doctor --provider ghidra --json
Ejemplo de análisis nativo
Proporcione al agente la ruta completa al archivo ejecutable y especifique el proveedor:
“Utilice REA con un proveedor configurado para explorar
/absolute/path/to/program. Enumere las funciones y líneas, luego explique la parte que maneja la entrada del usuario, con referencias al código.”
O ejecute el comando directamente desde la terminal:
npx -y rea-agents@latest function "/absolute/path/to/program" main --provider ghidra --json
Reemplace main con el nombre de la función o la dirección de la lista de funciones del programa de destino. El resultado contiene pseudocódigo, ensamblador y referencias entre llamadas.
Análisis de otro tipo de software
Seleccione la categoría de software de destino:
- JavaScript/Electron: requiere Node.js y npm. Guía.
- Sitios web: requiere el navegador Chrome, Chromium o Edge. Guía.
- APK de Android: requiere JADX y JDK 17+. Manual.
- Ejecutables nativos: requiere Hopper, Ghidra o IDA. Guía.
- ensamblados .NET: requiere Node.js y npm. Manual.
Usando REA desde el terminal
Análisis estático de la aplicación JavaScript/Electron
npx -y rea-agents@latest analyze-javascript-application "/absolute/path/to/app" --json
Reemplace la ruta con la carpeta con la aplicación o el archivo .asar.
Dónde encontrar el archivo .asar de la aplicación Electron:
- Windows:
C:\Users\<you>\AppData\Local\Programs\<App>\resources\app.asar - macOS:
/Applications/<App>.app/Contents/Resources/app.asar - Linux:
/opt/<App>/resources/app.asar
Instalación global del comando rea
npm install --global rea-agents
Después de esto, el comando rea --help está disponible.
Instalación mediante curl (macOS/Linux)
curl -fsSL https://raw.githubusercontent.com/morluto/rea/main/install.sh | bash
Después de la instalación, siga las instrucciones para configurar el agente. Si el menú de configuración no aparece, ejecute rea setup.
Actualizar y eliminar
Actualización de REA
npx rea-agents@latest setup
Para instalación global: actualización real
Eliminando REA
npx rea-agents@latest uninstall
Obtener ayuda
- Preguntas frecuentes: rea.tools/faq/: respuestas rápidas sobre actualizaciones, agentes y análisis
- Guías: rea.tools/guides/ – ejemplos de análisis binario, electrónico y de navegador
- Problemas de GitHub: github.com/morluto/rea/issues – informar un problema
- Discord: discord.gg/GkcryMnJDM – preguntas, investigaciones y trabajo en progreso
Problemas típicos
OpenCode no ve REA
Reinicie OpenCode después de la configuración. Utilice el comando doctor para probar la conexión:
npx -y rea-agents@latest doctor --client opencode --json
El proveedor requiere configuración
Para ejecutar Ghidra:
npx -y rea-agents@latest doctor --provider ghidra --json
El informe mostrará la prueba fallida y el siguiente paso sugerido.
Windows, WSL y rutas con espacios
- Usar PowerShell para clientes Windows
- Si el agente se ejecuta dentro de WSL, instale Node.js y REA dentro de ese sistema Linux y use las rutas de Linux
- En la terminal, incluya las rutas con espacios entre comillas
Configuración de Hopper en macOS
Si macOS le solicita que permita la automatización, permita la aplicación que ejecuta REA en Preferencias del sistema: Preferencias del sistema → Privacidad y seguridad → Automatización, luego inténtelo nuevamente.
Enlaces
https://github.com/morluto/rea
https://rea.tools/
https://rea.tools/get-started/
https://rea.tools/guides/
https://opencode.ai/
https://opencode.ai/docs/
https://opencode.ai/docs/mcp-servers/
Leave a Reply