¿Pueden los agentes de IA hacer ingeniería inversa de tu app?

REA — Reverse Engineer Anything — es un servidor MCP y una herramienta de línea de comandos de código abierto que permite a un agente de programación operar software profesional de ingeniería inversa: apuntas el agente a una app o un binario publicado e inspecciona el código con descompiladores reales, escribe cómo funciona una característica en forma de especificación, reconstruye la característica y comprueba la reconstrucción frente al original. Se convirtió en uno de los proyectos de GitHub de crecimiento más rápido en octubre de 2026, y cambia la economía de un hecho antiguo: todo lo que se ejecuta en la máquina de un usuario puede ser leído por ese usuario. Este artículo explica qué es realmente REA, la pila de herramientas que controla, el flujo de trabajo que hace fiable su resultado y qué debería hacer al respecto un desarrollador que publica software.

Qué es REA

REA (el repositorio es morluto/rea, con licencia MIT, instalado desde npm como rea-agents) no es un descompilador. No descompila nada por sí mismo. Es una capa de orquestación que habla el Model Context Protocol — la misma interfaz con la que trabaja el trabajo de preparación para agentes de este sitio desde el lado del sitio web — y expone las operaciones de ingeniería inversa como herramientas que un agente de programación como Claude Code, Codex o Cursor puede invocar: desensambla este binario, descompila esta función, enumera las cadenas, sigue las referencias cruzadas, muestra la evidencia. El trabajo pesado lo hacen los motores que están debajo, que el agente controla como lo haría un analista humano, salvo que puede permitirse ser exhaustivo.

Esa división del trabajo es la clave. La salida de un descompilador es enorme y en su mayor parte aburrida; la habilidad escasa en ingeniería inversa nunca fue ejecutar la herramienta, sino decidir qué mirar a continuación y saber cuándo una respuesta está probada. REA combina los motores con instrucciones de flujo de trabajo — investigar en un orden fijo, registrar evidencia para cada afirmación, declarar lo que no pudo resolverse — de modo que la salida del agente no es una pila de pseudocódigo sino un conjunto de hallazgos con recibos. Para binarios nativos controla Ghidra, IDA Pro o Hopper; para paquetes de Android controla JADX; para el comportamiento en vivo puede leer capturas HAR y de mitmproxy. Una interfaz, muchos motores, y el agente aporta la resistencia.

La pila en un solo mapa

El núcleo de análisis. Ghidra es el descompilador gratuito de la NSA, con licencia Apache-2.0, y el motor predeterminado para la mayoría; IDA Pro es el veterano comercial que muchos profesionales aún prefieren. Lo nuevo no es ninguna de las dos herramientas sino sus puentes: GhidraMCP y ida-pro-mcp exponen una sesión en ejecución de Ghidra o IDA a un agente a través de MCP, de modo que el agente puede consultar directamente la base de datos de desensamblado en lugar de leer capturas de pantalla. REA se sitúa un nivel por encima de ellos, eligiendo motores y secuenciando el trabajo.

Móvil y aplicaciones. jadx descompila los APK de Android de vuelta a Java legible; Apktool desempaqueta los recursos y el smali de un APK y puede reconstruirlo; Frida instrumenta una app en ejecución, enganchando funciones a medida que se ejecutan — la mitad dinámica que la descompilación estática no puede ver; e ILSpy hace para los ensamblados .NET lo que jadx hace para los APK. (Para un primer vistazo sin instalación a las declaraciones de un APK en lugar de a su código, el APK Analyzer de este sitio lee el manifiesto, los permisos y los certificados de firma en tu navegador.)

Binario y bajo nivel. radare2 y su bifurcación más amigable rizin son marcos de ingeniería inversa programables y centrados en la terminal; x64dbg es el depurador de Windows al que recurre la mayoría de los analistas; ImHex es un editor hexadecimal con un lenguaje de patrones para describir formatos de archivo; y angr es un motor de ejecución simbólica que puede razonar sobre cada ruta a través de una función en lugar de una sola ejecución. Estas son las herramientas para las preguntas que los descompiladores responden mal: binarios empaquetados, formatos de archivo extraños, «¿puede esta entrada llegar a esa rama en absoluto?».

Red y tiempo de ejecución. mitmproxy se sitúa entre una app y sus servidores y registra la conversación — para muchas apps el tráfico de la API explica más que el código, y es el formato de captura que REA lee de forma nativa. dnSpy depura y edita aplicaciones .NET en vivo, y raddebugger es el moderno depurador gráfico de Epic para Windows. Alrededor de todo ello están los mapas: dos listas seleccionadas, awesome-ai-reverse-engineering (122 repositorios de la era de los agentes, cada uno leído y puntuado) y la propia del autor de REA, awesome-reverse-engineering, están enlazadas en las fuentes siguientes.

El bucle de sala limpia: especificar, reconstruir, verificar

El flujo de trabajo que REA fomenta es más antiguo que la IA: es la ingeniería de sala limpia, la disciplina que una vez se usó para clonar una BIOS sin copiarla. El agente investiga el objetivo y escribe SPEC.md — una especificación de lo que hace el software, en lenguaje sencillo, con la evidencia de cada comportamiento adjunta. Solo entonces comienza la reconstrucción, a partir de la especificación y no del código descompilado, y la reconstrucción se juzga según criterios de aceptación: mismas entradas, mismas salidas, mismos casos límite. Cuando el juez dice que no, el bucle vuelve a la evidencia — no a una conjetura — e investiga de nuevo.

Por eso el artefacto interesante es la especificación, no el pseudocódigo. Una especificación con evidencia puede ser comprobada por un segundo agente, por una suite de pruebas o por un humano; una descompilación en bruto no es ninguna de esas cosas. También es el paso legalmente significativo: una reconstrucción a partir de una especificación de comportamiento es un acto distinto de copiar una implementación, razón por la cual el bucle insiste en evidencia y criterios en lugar de impresiones. Cualquiera que evalúe herramientas de agentes — para ingeniería inversa o para cualquier otra cosa — debería robar este patrón: el entregable es una afirmación verificada, no una respuesta segura de sí misma.

Qué significa esto si publicas software

Nada de esto hace secreto el código del lado del cliente; nunca lo fue. Hace que leerlo sea barato. Un analista experto con Ghidra siempre pudo extraer de tu app los endpoints de la API, los interruptores de características y la lógica de licencias — las herramientas de la clase de REA significan que un junior con una suscripción a un agente puede hacer la primera pasada en una tarde. Las consecuencias prácticas son las de siempre, ahora con plazos más cortos: un secreto incrustado en un binario publicado — una clave de API, un endpoint privado, la única y verdadera regla de descuento — está en la práctica publicado; la ofuscación eleva el coste de leer pero es una demora, no una barrera; y todo aquello de cuyo secreto dependa tu negocio debe vivir en tu servidor, tras autenticación, no en la app.

Las defensas son igual de poco glamurosas y funcionan: mantén los secretos y las decisiones de precios y licencias en el servidor, emite tokens de corta duración y alcance limitado en lugar de claves permanentes, usa la atestación de plataforma (Play Integrity, App Attest) donde el riesgo lo justifique, y asume que el comportamiento de tu cliente es plenamente observable cuando diseñes los controles contra abusos. Esta es la imagen especular de la lección de preparación para agentes de este sitio: allí, la idea era que los agentes leen la superficie orientada a máquinas de tu sitio web tanto si la diseñaste como si no; aquí, los agentes leen el binario de tu app de la misma manera. En ambos casos, la jugada ganadora es decidir deliberadamente qué dice la superficie orientada a máquinas.

Usos legítimos — y los límites

La ingeniería inversa tiene usos honorables y establecidos, y la propia documentación de REA enumera la misma lista: analizar tu propio software (incluida la copia cuyo código fuente perdiste), investigación de seguridad y análisis de vulnerabilidades, investigación de malware e incidentes, interoperabilidad — hacer que tu producto funcione con otro —, competiciones CTF y educación. En muchas jurisdicciones algunos de estos están protegidos incluso frente a una cláusula de licencia que pretenda prohibirlos, en particular la interoperabilidad y la investigación de seguridad de buena fe, aunque los detalles varían y este artículo no es asesoramiento legal.

Los límites son igual de claros. Una licencia MIT sobre las herramientas no es una licencia sobre el objetivo: no autoriza a clonar el producto de un competidor a partir de su binario, a derrotar el DRM o la aplicación de licencias, ni a distribuir lo que extraigas. El bucle de sala limpia de la sección anterior existe precisamente para mantener una reconstrucción en el lado correcto de esa línea — comportamiento y evidencia, no implementación copiada. Las propias herramientas de análisis de este sitio adoptan la misma línea en miniatura: estáticas, locales, de solo lectura, sin ejecución, sin elusión — un primer vistazo, dejando el trabajo pesado y legalmente sensible a las herramientas y personas que pueden asumir su responsabilidad.

Pruébalo tú mismo

REA necesita Node.js 22 o posterior; un solo comando — npx rea-agents setup — registra su servidor MCP en los agentes de programación que encuentra e instala las instrucciones de flujo de trabajo correspondientes, y el propio comando doctor de REA comprueba cada motor (para binarios nativos debe estar instalado un motor nativo como Ghidra; JADX cubre los APK). Apúntalo a software que poseas o a una muestra que tengas permiso para inspeccionar — una pequeña utilidad que hayas escrito es el primer objetivo perfecto — y pregúntale cómo funciona una característica. Lee la especificación que produce antes de leer cualquier pseudocódigo: los enlaces a la evidencia son donde está la verdad.

Si quieres la versión sin instalación del primer paso, para eso está el Binary File Inspector de este sitio: suelta un archivo PE, ELF o Mach-O en la página y lee sus cabeceras, secciones, importaciones y cadenas en tu navegador — sin subida, sin ejecución, sin cadena de herramientas. No descompilará nada, y lo dice claramente; es el triaje de cinco minutos que te dice si merece la pena configurar el tratamiento completo de REA, y con qué motor.

Fuentes y lecturas adicionales

Preguntas frecuentes

¿Recupera REA el código fuente original?

No. Nada recupera el código fuente original a partir de un binario — los nombres de variables, los comentarios y la estructura que escribió el autor desaparecen en tiempo de compilación. Lo que producen los descompiladores es pseudocódigo: una aproximación legible de lo que hace el código máquina. La aportación de REA es trabajar a partir de esa evidencia de forma sistemática y escribir una especificación del comportamiento, que es lo que una reconstrucción fiel realmente necesita.

¿Es legal hacer ingeniería inversa de una app?

Depende de de quién sea la app, de por qué y de dónde. Hacer ingeniería inversa de tu propio software, la investigación de seguridad de buena fe y el trabajo realizado para lograr interoperabilidad son ampliamente aceptados y en algunas jurisdicciones están legalmente protegidos; la licencia de un producto puede restringir más, y eludir el DRM o los controles de acceso está prohibido en muchos lugares independientemente de la intención. La propia documentación de REA lo limita a la investigación autorizada y lícita — y tú también deberías hacerlo. Cuando la respuesta importa comercialmente, es una pregunta para un abogado de tu jurisdicción, no para una herramienta.

¿Sigo necesitando tener Ghidra instalado para usar REA?

Para binarios nativos, sí — REA es una capa de orquestación, no un motor. Controla un motor de análisis instalado (Ghidra, IDA Pro o Hopper) y comprueba cada uno con su comando doctor. Los APK pasan por JADX, y algunos objetivos — aplicaciones JavaScript y Electron, sitios web, capturas de red — no necesitan ningún motor nativo. La instalación es una tarde, una sola vez; la resistencia del agente es la parte que no podrías contratar.