REA: el CLI que da ingeniería inversa a Claude Code y Cursor
@programacionLo esencial
- REA conecta agentes de código con binarios reales para hacer ingeniería inversa asistida.
- Se instala con un solo comando: npx rea-agents@latest setup, sin configuración manual.
- En la Calculadora de Windows, REA explica por qué 200 + 10% da 220 y no 210.
- En el juego del dinosaurio de Chrome, la velocidad sube de 6.0 a 13.0 en pasos de 0.001.
- Funciona tanto con binarios x64 compilados como con scripts JavaScript en ejecución.
Qué es REA
La calculadora de Windows suma 200 más 10% y entrega 220, no 210. Esa diferencia, oculta dentro de un binario compilado, es justo el tipo de pregunta que REA ayuda a resolver. Es una herramienta de línea de comandos que le da a agentes de código como Claude Code, Cursor o Codex acceso directo a las instrucciones de un programa en ejecución.
En lugar de adivinar el comportamiento a partir de nombres de función o documentación desactualizada, el agente inspecciona el código real: instrucciones de ensamblador, funciones decompiladas y las llamadas entre ellas. El objetivo declarado por el proyecto es entender una función lo suficiente para explicarla, modificarla o reconstruirla desde cero.
Cómo funciona: del binario a la explicación en español
REA actúa como una capa de datos entre el programa inspeccionado y el agente. Cuando el agente pide analizar una función, REA le entrega las instrucciones del handler, el código ya decompilado y el listado de llamadas que ese handler hace a otras partes del programa.
El agente usa esa información para razonar en tres pasos: identificar qué rama del código se ejecuta, rastrear qué hacen las funciones llamadas y nombrar la regla final con palabras simples. Todo ese trabajo, que antes exigía horas con un desensamblador, se reduce a una pregunta en lenguaje natural.
Instalación: el mismo comando en Windows, macOS y Linux
Como REA corre sobre Node.js, el comando de instalación es idéntico en los tres sistemas operativos. Solo cambia la terminal que uses: PowerShell en Windows, Terminal en macOS o tu shell preferida en Linux.
npx rea-agents@latest setupEl instalador propone un plan de configuración que el agente debe mostrarte antes de aplicarlo. Después de aprobarlo, reiniciás tu agente de código y queda conectado a REA para la sesión siguiente.
Ejemplo 1: por qué 200 + 10% da 220 en la Calculadora
El caso de referencia del proyecto es la Calculadora de Windows. Al desensamblar el manejador del botón porcentaje aparecen dos saltos condicionales hacia la misma dirección, uno para el código de operador 0x5b y otro para 0x5c:
CMP EAX, 0x5c
JZ 0x180124aba ; multiplicar
CMP EAX, 0x5b
JZ 0x180124aba ; dividir
MOV EDX, 0x64 ; carga el valor 100
CALL 0x180122650 ; función de divisiónSiguiendo esas llamadas, el agente confirma que el operador suma multiplica por el otro operando y divide entre 100. Con los valores reales (200 y 10) la cuenta es 200 por 10 dividido 100, que da 20. Sumado a los 200 originales, el resultado es 220. Ningún número fue inventado: salió de trazar instrucciones reales con REA.
Ejemplo 2: la aceleración del dinosaurio de Chrome
El segundo caso usa el juego del dinosaurio de Chrome, que corre como JavaScript en el navegador. REA le entrega al agente el archivo index.js cargado por la página, incluida la función de actualización de velocidad:
if (this.currentSpeed < this.config.MAX_SPEED) {
this.currentSpeed += this.config.ACCELERATION;
}
// ACCELERATION: 0.001, MAX_SPEED: 13, SPEED inicial: 6Al llamar esa función en un entorno controlado, sin obstáculos ni colisiones, la velocidad llega a 10.0 tras 4.000 actualizaciones y a 13.0 tras 10.000. Con esa regla confirmada, se puede reconstruir una versión mínima en JavaScript con un control de velocidad propio:
function actualizarVelocidad(estado) {
if (estado.velocidad < estado.velocidadMax) {
estado.velocidad += estado.aceleracion;
}
return estado.velocidad;
}Esa función reproduce la curva original del juego y además permite exponer un slider para que el usuario elija su propia velocidad, algo que el juego original nunca ofreció.
Para qué sirve en el trabajo diario
El uso más directo es entender código heredado sin fuente disponible: una librería de terceros, un binario legado o un driver sin documentación. También sirve para investigación de seguridad, donde explicar el comportamiento real de un programa importa más que su documentación oficial.
Para quien está aprendiendo, REA convierte la ingeniería inversa en un diálogo guiado en vez de un proceso manual con desensamblador. El agente explica cada paso, lo que acorta la curva de aprendizaje frente a herramientas clásicas como IDA Pro o Ghidra usadas sin asistencia.
Límites y cuándo no conviene usarlo
REA no es un desempacador de software protegido. Binarios con ofuscación agresiva o protecciones anti-depuración siguen exigiendo trabajo manual especializado; el agente puede quedarse sin instrucciones útiles que interpretar.
Analizar binarios ajenos sin autorización puede violar términos de licencia o leyes locales, así que el uso debe limitarse a software propio o a objetivos donde tengas permiso explícito. En binarios grandes, además, el volumen de instrucciones y llamadas puede consumir buena parte del contexto del agente antes de llegar a una conclusión útil.
Conclusión
REA no reemplaza el criterio de quien revisa el resultado, pero cambia el punto de partida: en vez de leer ensamblador línea por línea, el desarrollador formula una pregunta concreta y revisa una explicación respaldada por instrucciones reales. Para programas propios sin documentación o para aprender el oficio, ese cambio vale la prueba.
📖 Versión extendida con más detalle: https://elsolitario.org/2026/10/10/rea-ingenieria-inversa-para-agentes-de-codigo/?utm_source=telegraph&utm_medium=instant_view&utm_campaign=programacion