REA: deja que los agentes de IA analicen software sin código fuente

El proyecto de código abierto REA (Reverse Engineer Anything) conecta herramientas de ingeniería inversa con agentes de programación de IA como Claude Code, Codex y Cursor. Si ves una función interesante en la app de otra persona, puedes pedirle a un agente que analice el programa, explique cómo está implementada y aporte pruebas; después, puede escribir algo parecido en tu propio proyecto. La ingeniería inversa consiste en deducir cómo se creó un programa compilado cuando no se tiene acceso a su código fuente.

REA es un servicio MCP. MCP es una interfaz común para que los agentes de IA utilicen herramientas externas. Una vez conectado, el agente puede invocar directamente las funciones de análisis de REA durante la conversación. Para instalarlo, basta con ejecutar el comando npx rea-agents setup. El programa lo registrará en agentes como Claude Code, Codex, Cursor, Gemini CLI y Grok Build, y hará una copia de seguridad y te pedirá confirmación antes de modificar la configuración. Si no usas un agente, también puedes ejecutar los comandos directamente desde el terminal.

Puede analizar muchas cosas. Para los programas nativos (software compilado directamente en código máquina), se pueden usar herramientas de desensamblado como Hopper, Ghidra o IDA para convertir el código máquina en ensamblador y pseudocódigo similar a C. Las aplicaciones Electron (software de escritorio creado con tecnologías web, como Notion) se pueden analizar directamente extrayendo los archivos ASAR del paquete de instalación y aclarando la estructura de los módulos y la comunicación entre procesos, sin necesidad de herramientas adicionales. También es compatible con programas .NET, archivos APK de Android, firmware, sitios web, registros de captura de tráfico, bytecode de contratos de Ethereum y el registro del comportamiento de programas en ejecución en Linux y macOS.

El análisis se realiza localmente y REA no sube el programa objetivo, pero los resultados del análisis se envían al proveedor del modelo que utiliza el agente. El tratamiento de los datos depende de las políticas de cada proveedor.

El proyecto incluye tres casos de ejemplo. El primero es el clásico juego de romper ladrillos DX-Ball: a partir de una llamada que reproduce un efecto de sonido, se rastrea la función que calcula los canales izquierdo y derecho según la posición de la pelota. Se reconstruye en C el pseudocódigo incompleto y los resultados de 3205 pruebas coinciden con los del original; los 63 bytes compilados también son idénticos a los del original. El segundo es la versión de escritorio de Notion: se rastrea todo el recorrido de copiar y pegar, desde la interfaz, pasando por el script de precarga y la comunicación entre procesos, hasta el proceso principal. El tercero es el juego Touhou Fuumaroku (TH04), para el antiguo ordenador japonés PC-98: a partir de instrucciones de 16 bits, se reconstruye el algoritmo que calcula los ángulos de los anillos de balas.

Para investigadores de seguridad y personas que recrean juegos antiguos o preservan software, antes era necesario leer línea por línea las herramientas de desensamblado y rastrear las llamadas capa por capa. Ahora pueden dejar que el agente haga el rastreo primero y luego comprobar las pruebas que presenta. Los desarrolladores que quieran estudiar cómo implementa una función concreta un producto de la competencia también cuentan con una nueva opción.

Según el README, el proyecto ya tiene 50 000 estrellas en GitHub. El paquete npm se publicó por primera vez en julio de este año y la versión más reciente, la 6.3.0, acaba de publicarse hoy.

Antes de usarlo, ten en cuenta dos cosas. El proyecto declara que solo admite investigaciones de ingeniería inversa legales; cada usuario es responsable de contar con la autorización y cumplir la normativa. Analizar el software de otras personas podría infringir las condiciones de uso o las leyes de derechos de autor. El proyecto también afirma que nunca ha lanzado ni respaldado criptomonedas; los tokens que utilizan el nombre REA no tienen relación con él.

https://github.com/morluto/rea