El 8 de octubre de 2026, un repositorio del que nadie había escuchado hablar tres meses antes llegó al número uno en las tendencias de GitHub.
Se llama REA, Reverse Engineer Anything (Haz ingeniería inversa de cualquier cosa), y le da a tu agente un desensamblador real.
**Guarda esto en favoritos: si quieres la versión larga, el curso completo de 20 lecciones sobre este tema ya está disponible en**
Te lleva de una terminal en blanco a una reconstrucción que pasa sus propias pruebas de paridad, con cada comando y prompt escritos paso a paso. EMPIEZA POR AQUÍ.
La reacción fue la misma en todas partes esa semana.
Matthew Berman lo resumió en tres palabras, y 3.6 millones de personas lo vieron.
https://x.com/MatthewBerman/status/2108245653843509415
REA es un servidor MCP de código abierto más una CLI que se conecta con Claude Code, Codex, Cursor y Gemini CLI.
Licencia MIT, creado por morluto, primer lanzamiento el 12 de julio de 2026 y, tres meses después, más de 100,000 estrellas en GitHub.
Todo se ejecuta localmente, y cada conclusión viene etiquetada como observación, inferencia o incógnita, junto con la dirección o el sitio de llamada que la respalda.
Este es el camino completo desde un binario sellado hasta una reconstrucción que te pertenece, en ocho pasos.

Antes de los pasos: lo que la gente ya lanzó con esto
La herramienta no es la historia, sino lo que se logró en cuatro semanas.
ArtCraft reconstruyó siete aplicaciones de Adobe como alternativas gratuitas y de código abierto, y luego fue por Office con WordCraft, GridCraft y DeckCraft.
Ya son doce apps, todas escritas desde cero en Rust, nativas en tres plataformas, y todas menos una también funcionan en una pestaña del navegador gracias a WebAssembly.
En el lado de los videojuegos, las pruebas son aún más concretas:
- Super Mario Sunshine tuvo un port nativo para PC: unas 365 horas de agente y 17.3 mil millones de tokens, usando Claude y Codex juntos
- Un juego de Touhou reconstruido con agentes en el blog oficial de REA: 697 funciones, 696 coincidencias exactas, jugable en unos 12 días
- El autenticador Aegis (3,077 clases) desarmado y reconstruido, pasando los 133 casos de prueba
- La función de paneo de sonido de DX-Ball reconstruida en C, superando 3,205 casos de prueba originales en x86 y reproduciendo los 63 bytes compilados
Fíjate en lo que esa lista no es.
Nadie crackeó una verificación de licencia, nadie publicó el código fuente de otra persona.
Cada uno de esos logros es un comportamiento recuperado, documentado y reconstruido en código nuevo.
01. Analiza el objetivo antes de abrir nada
La razón por la que esto se viralizó no es que lea bien una sola cosa. Lee casi todo, y muestra la evidencia de cada afirmación que hace.
https://x.com/RoundtableSpace/status/2109165852578992582
Esa lista también es la primera decisión que tomas. La forma más común de perder una tarde es buscar un desensamblador cuando el objetivo es una app de Electron cuyo JavaScript está ahí mismo, a simple vista.
Apunta REA hacia Electron y obtienes módulos, importaciones y límites IPC en segundos sin ningún motor, mientras que un Mach-O o ELF nativo abre una base de datos de Hopper, que es el camino más profundo y más lento.
Saber en cuál estás te ahorra horas, así que haz que sea la tarea de tu primer prompt.
1Quiero entender cómo funciona [FUNCIÓN] en [APP], que está en [RUTA ABSOLUTA].2 Primero dime qué tipo de objetivo es (nativo, Electron/JS, .NET, Go, APK, WASM)3 y elige la herramienta REA correcta para abrirlo. No empieces el análisis profundo todavía.4 Luego descríbelo en un párrafo: con qué está construido, qué tan grande es, dónde buscarías5 primero [FUNCIÓN]. Mantén separadas las observaciones, inferencias e incógnitas.

La parte que casi nadie menciona: muchos juegos de Unity distribuyen su lógica como .NET, y REA lee .NET sin necesidad de un motor adicional.
Esa es la única razón por la que un juego comprado en Steam pasa de ser un binario a código C# editable en menos de media hora.
Y cada aplicación de Electron en tu máquina se puede leer ahora mismo, sin siquiera abrirla:
1# dónde está el JavaScript2macOS: /Applications/<App>.app/Contents/Resources/app.asar3Windows: C:\Users\<you>\AppData\Local\Programs\<App>\resources\app.asar4 npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
02. Instálalo en cinco minutos, luego agrega un motor
Lo que hace que esto funcione no es un prompt ingenioso. Es un motor de desensamblaje real conectado al agente, que es exactamente como lo describió un desarrollador.
https://x.com/techNmak/status/2108431092462338178
La configuración registra el servidor MCP con tu agente e instala la habilidad de flujo de trabajo correspondiente.
Muestra cada cambio antes de escribir algo y hace una copia de seguridad de lo que modifica.
node -v # Node 22.19+, 24.11+ o 26+. Las versiones 23 y 25 no son compatibles
1npx rea-agents@latest setup # registra el servidor MCP, pregunta antes de escribir2npm install --global rea-agents # el comando corto rea, para siempre3rea --help4# reinicia el agente y luego verifica. doctor solo comprueba, nunca cambia nada5npx -y rea-agents@latest doctor --client claude_code --json
El reinicio importa más de lo que parece: una sesión de terminal tiene que iniciarse desde cero, y las aplicaciones de escritorio necesitan cerrarse por completo, porque cerrar la ventana no es suficiente.
Luego agrega un motor solo para lo que realmente quieras leer:
Hay un archivo que vale la pena escribir antes de tu primer objetivo real: las reglas de la casa en claude-md.
Analiza solo lo que te pertenece, etiqueta cada afirmación como observación, inferencia o incógnita, cita la dirección que la respalda y nunca permitas que un comportamiento recuperado se considere terminado sin pasar una prueba.
1# programas y juegos nativos: Ghidra 12.1.x y JDK 21 o superior2 export GHIDRA_INSTALL_DIR=/ruta/absoluta/a/ghidra_12.1.4_PUBLIC3 export JAVA_HOME=/ruta/absoluta/a/jdk-214 npx -y rea-agents@latest doctor --provider ghidra --json56 # aplicaciones Android: JDK 17+ y jadx-headless-mcp 0.7.17 export REA_JADX_MCP_JAR=/ruta/absoluta/jadx-headless-mcp-0.7.1-all.jar8 rea inspect-android-package /ruta/App.apk910 # bytecode de contratos inteligentes, Linux x64 por ahora11 rea inspect-evm-interface ./runtime.hex hex --json
03. Reconocimiento: el mapa va antes que el código
No abras ni una sola función todavía.
Un solo comando te dice en qué máquina corre el binario, cuántas funciones hay dentro y todo el texto legible enterrado en él.
Ese texto es la pista más rápida que vas a tener en todo el día: endpoints, cadenas de error y nombres de funciones describen la app antes de que leas cualquier lógica.
1rea.open_binary { path: "/Applications/Target.app/Contents/MacOS/Target" }2rea.binary_overview {}3 arch: arm644 functions: 1,284 identificadas5 entry: _main @ 0x1000051c067rea.search { query: "http" }8 0x10004a2c0 "https://api.target.app/v3/sync"9 0x10004a300 "Authorization: Bearer "1011rea.xrefs { address: "0x100012ab0" }12 147 referencias -> cargador de configuración principal, llamado en todas partes

REA cuenta cuántas veces se llama a cada función, y ese conteo es el número de referencias cruzadas.
Una función llamada 147 veces es la arquitectura de la app; una llamada dos veces es un auxiliar que puede esperar.
Ordena por ese número y ve bajando, nunca por orden de archivo, porque el orden de archivo es la forma en que la gente pierde un fin de semana dentro de un binario que solo tenía cuatro funciones interesantes.
04. Descompila una función, luego haz que Opus nombre todo en ella
Un descompilador convierte instrucciones de máquina crudas en algo parecido a C.
Sale tosco: nombres como var_28, conversiones de tipo por todos lados, ramas enredadas, y eso está bien, porque lo único que necesita el modelo es que sea legible.
1# una función por dirección, como JSON que puedes guardar y reutilizar2rea decompile /ruta/al/Objetivo 0x100012ab0 --provider hopper --json > fn_config.json34# o búscala por nombre y sigue sus referencias5rea function /ruta/al/Objetivo parseConfig --provider hopper --json6rea xrefs /ruta/al/Objetivo 0x100012ab0 --provider hopper --json
Luego entrégale ese resultado a Opus 5.5 y haz que haga la parte que el desensamblador no puede:
1Aquí tienes el pseudocódigo descompilado de una función con 147 referencias cruzadas.231. Renombra cada variable según cómo se usa y explica su propósito en una oración.42. Enumera las estructuras de datos que lee y escribe, y nombra el patrón que sigue.53. Reescríbelo como código limpio e idiomático en el lenguaje que implican las convenciones de llamada.64. Señala cualquier manejo de errores, validación de entrada o comprobación de seguridad faltante.78Piensa con esfuerzo xhigh antes de responder. Marca cualquier cosa de la que no estés seguro.

Opus 5.5 incluye cinco niveles de esfuerzo: low, medium, high, xhigh y max.
Medium inspecciona y navega, high anota funciones comunes, max es para código ofuscado y cálculos pesados con punteros.
El esfuerzo es el control de calidad más importante en este proceso, y la mayoría de la gente lo deja en el valor predeterminado y luego culpa al modelo.
La descompilación te da lo que hace el código, el modelo te da el porqué y los nombres para reconstruirlo.
05. Ofuscación: rompe lo que vale la pena romper, presupuesta el resto
Algunas aplicaciones están diseñadas para resistir exactamente lo que estás haciendo: lógica revuelta, cadenas cifradas, ramas falsas añadidas únicamente para desperdiciar tu atención.
Este es el único punto donde incluso el mejor modelo batalla, y hay números que lo demuestran.
Elastic Security Labs puso a Claude Opus frente al ofuscador Tigress en 20 tareas, y dos lecciones salieron a la luz de inmediato.
Un intento fallido cuesta aproximadamente el doble que uno exitoso, porque el modelo sigue insistiendo antes de rendirse, y la ofuscación multicapa regresó con un cero, así que machacar contra ella es la forma más cara de no aprender nada.

La regla práctica es un presupuesto por función, no por sesión.
Elimina el relleno primero, porque una herramienta gratuita llamada Caveman quita alrededor del 75% de la basura descompilada y así el modelo concentra su atención en la lógica real.
1Esta función parece ofuscada. Trabaja con esfuerzo max.231. Identifica las técnicas presentes (aplanamiento de flujo de control, predicados opacos,4 código muerto, cifrado de cadenas, división de funciones) y señala cada una aquí.52. Resuélvelas: elimina ramas muertas, evalúa predicados opacos, desaplana el6 dispatch, descifra cadenas en línea si la clave es recuperable. Muestra lo que queda.73. Califica tu confianza del 1 al 10. Por debajo de 6, nombra las partes dudosas y qué contexto8 las resolvería. No adivines en silencio.
06. El enjambre: un controlador, muchos trabajadores
Un solo chat no puede leer bien 500 funciones.
Olvida lo que vio cuarenta funciones atrás, nombra la misma estructura de tres formas distintas y empieza a contradecirse silenciosamente.
La solución no es más contexto, sino dividir roles: un controlador que reparte el trabajo y trabajadores que toman una función cada uno y se detienen.

1Eres un controlador de ingeniería inversa. El mapa de funciones está en functions.json2(dirección, nombre, tamaño, xref_count).341. Agrupa las funciones por cercanía en el grafo de llamadas; ordena los grupos por cantidad de referencias cruzadas.52. Asigna cada grupo a un trabajador. Nunca analices una función tú mismo.63. Inyecta las estructuras ya resueltas en cada instrucción para que los nombres se mantengan consistentes.74. Una confianza menor a 6 recibe un segundo pase con contexto de los vecinos resueltos.85. Rastrea el gasto acumulado de tokens y repórtalo después de cada grupo.910Eres un trabajador. Recibes una función descompilada y las estructuras resueltas hasta ahora.11Devuelve exactamente: dirección, propósito, confianza (1-10), structs_used, structs_new,12clean_source, flags. Reutiliza los nombres de estructuras existentes, nunca inventes un segundo nombre para13una estructura que el controlador ya te dio. Solo una función. Detente cuando termines.
REA también incluye flujos de trabajo guiados integrados en el servidor MCP que la mayoría de la gente nunca abre:
- - investigate_feature - rastrea una función desde su descubrimiento hasta las funciones exactas
- - compare_application_versions - compara dos versiones y ve qué cambió realmente
- - verify_reconstruction - verifica tu reconstrucción contra la evidencia guardada
- - audit_residual_unknowns - enumera lo que aún no está comprobado
07. Sala limpia: el muro entre dos contextos es el producto
Una reconstrucción en sala limpia significa que copias lo que hace la app y nunca el código que hay dentro.
Si lo haces bien, lo que lanzas es completamente tuyo; si lo haces mal, estarás cargando los derechos de autor de alguien más dentro de tu propio repositorio.
Este es un método de hace 40 años, no un invento de 2026.
A principios de los 80, Compaq reconstruyó el BIOS de IBM de esta manera por cerca de $1 millón, y esa es la única razón por la que existen las PC de otras marcas.
En 1992, el tribunal en Sega v. Accolade dictaminó que desarmar código puede ser uso legítimo cuando es la única forma de entender cómo funciona, y en 2000 Sony perdió Sony v. Connectix 3-0 porque el emulador terminado no contenía nada del código de Sony.
El otro lado de la línea es igual de claro: en 2011 George Hotz llegó a un acuerdo con Sony y aceptó detenerse después de que la clave raíz de PS3 se hiciera pública.

Cuatro reglas te mantienen del lado correcto, y el equipo de ArtCraft verifica las cuatro automáticamente en cada compilación:
- - Observa, nunca copies. Ejecuta el objetivo como caja negra, toma capturas solo de su propia ventana, nunca pegues su código en tu proyecto
- - Especificaciones, no fuentes. Los formatos de archivo vienen de estándares públicos (OOXML es ECMA-376 / ISO 29500, además de las especificaciones publicadas de RTF y ODF), nunca de leer el parser de un competidor
- - Solo recursos originales. Cada ícono, fuente, plantilla y sonido está generado por código, es de dominio público o tiene licencia abierta, con una fila en un archivo de atribuciones
- - Separa los dos trabajos. Un agente recupera el comportamiento y escribe la especificación, un contexto diferente implementa basándose únicamente en esa especificación
Esa última regla es la que la gente se salta, y es el verdadero límite.
Tu agente investigador está contaminado por definición, porque leyó la descompilación, y tu agente constructor no debe estarlo.
1A partir del análisis completado, escribe una especificación de sala limpia para una reimplementación.23Describe SOLO EL COMPORTAMIENTO: cada interfaz pública, el modelo de datos, cada función visible para el usuario4como un requisito comprobable, los formatos de archivo leídos y escritos, el manejo de errores.56NO incluyas direcciones, offsets, nombres de variables descompiladas, ensamblador ni nada7copiado del original. Un desarrollador que nunca vio el binario debe poder8implementar una versión compatible únicamente con este documento.910Secciones: Arquitectura, Modelo de Datos, API Pública, Formatos de Archivo, Casos de Prueba.
Trabajar a partir de una descripción no es solo una protección legal.
Te permite tomar la decisión correcta para tu propio lenguaje en lugar de heredar decisiones que alguien tomó hace dos décadas, y por eso WordCraft es más rápido que Word en algunas partes.
08. Verifica la paridad, luego lánzalo por MCP
Nunca tuviste el código fuente original, así que no puedes comparar línea por línea.
Comparas comportamiento: las mismas entradas en ambas compilaciones, las mismas salidas de vuelta.
1Construye un arnés de pruebas de comportamiento que compare el binario original y mi reconstrucción.23Genera 50 entradas: 30 normales, 10 extremas (vacío, tamaño máximo, unicode), 10 de error4(malformadas, corruptas). Pasa cada una por ambos, compara byte por byte donde sea posible5y semánticamente en los demás casos. Reporta la tasa de coincidencia, divergencias y una gravedad para cada una6(cosmética / de comportamiento / crítica). Guarda en report.md.
"Creo que coincide" no es evidencia, una tasa de coincidencia sí lo es, y ese reporte es lo más convincente que puedes poner al inicio de una publicación de lanzamiento.
Luego lanza la reconstrucción como lo hicieron REA y las apps Craft: como un servidor MCP, para que el agente de la siguiente persona pueda manejar tu herramienta igual que tú manejaste REA.
Dale a cada función un nombre claro y una instalación de una sola línea, y cada acción se convierte en un comando con nombre que un clic, un atajo y un agente activan de forma idéntica.
1claude mcp add wordcraft -- wordcraft-cli mcp23> Abre report.docx, pon todos los encabezados en negritas de 14pt, exporta a PDF4 ok select.all-headings -> 12 seleccionados5 ok format.font-size 14 . format.bold6 ok export report.pdf (texto seleccionable, marcadores conservados)
Los límites y los cinco errores que te hacen perder un fin de semana
REA no puede tocar el servidor, porque lee lo que está en tu máquina y el código que corre en los servidores de una empresa nunca te fue entregado.
El código descompilado es una reconstrucción, no el código fuente original, y esa es la razón por la que existe el paso 08.
Los binarios de C++ sin símbolos siguen siendo mucho más difíciles que los juegos de Unity en .NET, y los motores comerciales todavía requieren licencias reales.
- - Abrir un desensamblador en una app de Electron cuando el JavaScript está ahí mismo
- - Volcar todo el binario antes de leer un resumen, lo que sepulta la lógica y dispara el costo
- - Leer funciones en orden de archivo en lugar de por cantidad de referencias cruzadas
- - Dejar que el modelo copie código en tu reconstrucción, lo que rompe la sala limpia con un solo pegado
- - Lanzar sin un reporte de paridad
La verdad sobre el aspecto legal, ya que la mitad de X pasó una semana gritando sobre piratería: leer una app en tu propia computadora es aprender, reconstruir una función a partir de su comportamiento es cómo ha funcionado la industria desde los 80, y copiar código o crackear funciones de pago es lo que te mete en problemas legales.
Estudia el original, lanza el tuyo.
Cada uno de estos ocho pasos tiene una lección detrás en
reacourse.xyz , con los prompts exactos, los modos de fallo y las partes donde esto deja de funcionar.
El código cerrado solía significar que nunca lo sabrías.
Ahora significa "muéstrame la evidencia".
La mayoría de la gente seguirá pagando mensualidades por una función que podría entender en una tarde y reconstruir en un fin de semana.
Los pocos que aprendan a leer software construirán lo que quieran.
Sígueme y suscríbete a mi canal de Telegram:





