REA: cómo la IA puede ayudar a desensamblar código cerrado y qué esperar

Reverse Engineer Anything (REA) es un servidor MCP open source que coordina agentes de IA para analizar binarios, apps Electron, APKs y ensamblados .NET desde instrucciones en lenguaje natural. En este artículo revisamos su arquitectura, instalación, un experimento real con Obsidian y las precauciones legales y técnicas que deben considerar los equipos.

Por Redaccion TD
REA: cómo la IA puede ayudar a desensamblar código cerrado y qué esperar

¿Qué es REA y por qué importa?

Reverse Engineer Anything (REA) es un servidor MCP de código abierto diseñado para que agentes de programación impulsados por modelos de lenguaje inspeccionen artefactos sin código fuente: binarios nativos, apps Electron, APKs de Android, ensamblados .NET, sitios web, firmware y más. La propuesta no es sustituir a desensambladores clásicos, sino orquestarlos y presentar hallazgos en lenguaje natural junto con evidencia verificable.

Para equipos que enfrentan comportamiento inesperado en producción o necesitan auditar integraciones cerradas, REA promete reducir las horas que antes se dedicaban a Ghidra, IDA o a imaginar hipótesis sin pruebas claras.

Características clave que debe conocer

  • Coordinador, no decompilador puro: REA actúa como intermediario que controla herramientas de análisis (por ejemplo Ghidra, Hopper, IDA) o realiza inspección estática de JavaScript y .NET, pero no reemplaza esas herramientas.
  • Modo local: todo el análisis se ejecuta en su máquina. Sin embargo, los resultados pasan por su agente y, por tanto, el proveedor del modelo verá esos resultados según su política de datos. No es un análisis completamente desconectado del proveedor del modelo.
  • Evidencia junto con la respuesta: los informes incluyen offsets de bytes y ubicaciones de código, lo que facilita la verificación independiente de cualquier afirmación que haga el agente.
  • Transparencia de incertidumbres: los flujos de trabajo empujan al agente a declarar lo que no pudo determinar, evitando la tendencia del modelo a inventar respuestas.
  • Soporte amplio: apps Electron, APKs, ensamblados .NET, binarios Go y Rust, sitios web, capturas HAR, firmware, capturas de paquetes y volcados de Linux.
  • Uso en CLI o a través del MCP: si prefieren evitar agentes, algunas inspecciones estáticas pueden ejecutarse directamente desde la terminal.

Instalación y requisitos básicos

La instalación es sencilla si cumple requisitos mínimos: Node 22 o superior. El comando de inicio es:

npx rea-agents setup

Ese asistente pregunta qué agentes configurar, muestra los cambios propuestos en la configuración, hace respaldos y registra el servidor MCP; luego deben reiniciar el agente. Entre los agentes compatibles listados se encuentran Claude Code, Codex, Cursor, Gemini CLI y Grok Build.

Lo que hace falta adicionalmente depende del objetivo de análisis:

  • JavaScript/Electron: nada más, Node y npm.
  • .NET: inspección estática incluida, no requiere motores externos.
  • Go/Rust: REA lee metadatos del binario.
  • Binarios nativos: requieren Ghidra, Hopper o IDA instalados y licenciados por separado.
  • APKs: necesitan JADX en modo headless y un JDK completo.
  • Firmware y capturas de paquetes: herramientas varias, algunas solo en Linux.

El repositorio advierte sobre clones o nombres parecidos: las fuentes oficiales mencionadas son morluto/rea, rea.tools y el paquete rea-agents en npm. Los desarrolladores comprobaron el publicador: la publicación usa GitHub Actions confiable, tiene 32 versiones liberadas y el campo del repositorio coincide, lo que ayuda a validar la procedencia.

Prueba práctica: adivinando el algoritmo antes de preguntar

Para evaluar la precisión y el valor real de REA, se hizo una prueba con Obsidian 1.14.4 en macOS. Antes de dejar que el agente inspeccionara el código, se intentó predecir cómo el quick-switcher de Obsidian ordena resultados de búsqueda.

Se construyó una lista de archivos diseñada para competir en distintos criterios (coincidencia contigua, coincidencia en inicio de palabra, coincidencias dispersas, etc.) y se registraron los rankings resultantes al buscar términos como “graph” y “gq”. Ese registro con fecha convierte el ejercicio en una prueba reproducible.

Observaciones relevantes:

  • Una coincidencia contigua suele vencer a una subsecuencia dispersa.
  • Coincidencias que empiezan en el límite de palabra se priorizan sobre coincidencias que aparecen a mitad de palabra, incluso si esta última aparece más temprano en el nombre.
  • Las subsecuencias dispersas (letras apareciendo en distintos puntos) existen y se colocan por debajo de las coincidencias contiguas.

Estos patrones permitieron formular un modelo heurístico simple para el ranking: 1) coincidencia contigua > coincidencia dispersa; 2) coincidencia en límite de palabra > dentro de palabra; 3) dentro de límites iguales, posición más temprana gana; 4) si la posición es igual, nombres más cortos se priorizan.

Sin embargo, consultas más crípticas como “gq” mostraron resultados que rompieron partes del modelo, lo que indicó que el algoritmo real tiene matices adicionales y que la verificación automática por parte de un agente tendría valor real para confirmar o refutar hipótesis humanas.

Limitaciones y puntos de atención

  • REA no sustituye el conocimiento experto: coordina herramientas y presenta evidencia, pero interpretar desensamblados complejos o resolver ambigüedades aún requiere experiencia humana.
  • Dependencia de herramientas externas: para binarios nativos necesitarán instalar y, en algunos casos, comprar licencias de Ghidra/Hopper/IDA.
  • No totalmente offline: aunque el análisis se ejecuta localmente, los resultados pueden quedar expuestos al proveedor del modelo vía el agente.
  • Verificación obligatoria: la fuerza de REA está en proporcionar offsets y ubicaciones verificables; no confíen ciegamente en resúmenes sin revisar la evidencia.

Dónde encaja REA en equipos y empresas en América Latina

Para áreas de seguridad, producto y operaciones, REA puede acelerar investigaciones sobre integraciones externas, bibliotecas compiladas o comportamientos inexplicables en producción. Su facilidad de instalación para objetivos como JavaScript o .NET hace que equipos sin inversión en licencias puedan experimentar y obtener valor inmediato.

En regiones con restricciones presupuestarias, como muchas organizaciones en Latinoamérica, la posibilidad de reproducir análisis sin herramientas de pago (cuando se trabaja en la parte superior de la tabla: JS, .NET, Go, Rust) es un punto a favor para adoptar REA en pruebas de concepto.

Usar herramientas de ingeniería inversa puede tener implicaciones legales y contractuales. Antes de analizar productos de terceros o distribuir hallazgos, consulten a su área legal y revisen acuerdos de licencia. La disponibilidad técnica no exime de obligaciones contractuales o de propiedad intelectual.

Conclusión

REA no es una bala de plata que automáticamente descompila y explica cualquier binario. Es, más bien, un orquestador que permite a agentes de IA aprovechar herramientas tradicionales y presentar resultados con evidencia verificable. Para equipos técnicos y gerenciales en Latinoamérica, REA ofrece una vía práctica y local para investigar artefactos cerrados sin depender exclusivamente de suposiciones. Eso sí: la herramienta funciona mejor cuando se combina con revisión humana, herramientas externas cuando hacen falta, y una evaluación legal previa.

Si su organización necesita auditar componentes cerrados, REA merece una prueba controlada: pueden empezar con JavaScript o .NET para validar procesos antes de incorporar análisis nativo que requieran herramientas licenciadas.

Fuente original: Analytics Vidhya