El 8 de octubre de 2026, un repositorio del que nadie había oído hablar tres meses antes alcanzó el número uno en las tendencias de GitHub.
Se llama REA, Reverse Engineer Anything (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 supera 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 a 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, con la dirección o el punto 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 ha lanzado 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 a por Office con WordCraft, GridCraft y DeckCraft.
Doce aplicaciones hasta ahora, todas escritas desde cero en Rust, nativas en tres plataformas, y todas menos una también funcionan en una pestaña del navegador mediante WebAssembly.
En el lado de los videojuegos, las pruebas son aún más concretas:
- Super Mario Sunshine recibió un port nativo para PC: unas 365 horas de agente y 17.300 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) desmontado y reconstruido, superando 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 de x86 y reproduciendo los 63 bytes compilados
Fíjate en lo que no es esa lista.
Nadie reventó una comprobación de licencia, nadie publicó el código fuente de otra persona.
Cada uno de esos casos 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 las pruebas de cada afirmación que hace.
https://x.com/RoundtableSpace/status/2109165852578992582
Esa lista es también 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 aplicación Electron cuyo JavaScript está ahí mismo, a la 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 de los dos estás te ahorra horas, así que conviértelo en la tarea de tu primer prompt.
1Quiero entender cómo funciona [FUNCIÓN] en [APLICACIÓN], que se encuentra en [RUTA ABSOLUTA].2 Primero dime qué tipo de objetivo es (nativo, Electron/JS, .NET, Go, APK, WASM)3 y elige la herramienta REA adecuada para abrirlo. No empieces todavía el análisis profundo.4 Luego haz un mapa en un párrafo: con qué está construido, qué tamaño tiene, dónde5 buscarías 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 ningún motor adicional.
Esa es la única razón por la que un juego comprado en Steam pasa de binario a C# editable en media hora.
Y cualquier aplicación Electron en tu máquina se puede leer ahora mismo, sin siquiera ejecutarla:
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 añade un motor
Lo que hace que esto funcione no es un prompt ingenioso. Es un motor de desensamblado 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 nada y hace una copia de seguridad de lo que toca.
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 debe iniciarse desde cero, y las aplicaciones de escritorio necesitan cerrarse por completo, porque cerrar la ventana no es suficiente.
Luego añade 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 una prueba superada.
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 comando te dice en qué máquina se ejecuta 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 conseguir en todo el día: endpoints, cadenas de error y nombres de funciones describen la aplicación antes de que leas ninguna 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 recuento es el número de referencias cruzadas.
Una función llamada 147 veces es la arquitectura de la aplicación; una llamada dos veces es una función 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 lo que hay 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 todas partes, ramificaciones enredadas, y eso está bien, porque legible es todo lo que el modelo necesita.
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 esa salida a Opus 5.5 y haz que haga la parte que el desensamblador no puede:
1Aquí tienes 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 frase.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 que falte.78Piensa con nivel de esfuerzo xhigh antes de responder. Marca cualquier cosa de la que no estés seguro.

Opus 5.5 incluye cinco niveles de esfuerzo: low (bajo), medium (medio), high (alto), xhigh (muy alto) y max (máximo).
Medium inspecciona y navega, high anota funciones normales, max es para código ofuscado y aritmética de punteros pesada.
El esfuerzo es el control de calidad más importante de todo este proceso, y la mayoría de la gente lo deja por defecto 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 barajada, cadenas cifradas, ramas falsas añadidas únicamente para desperdiciar tu atención.
Este es el único punto donde incluso el mejor modelo tiene dificultades, y hay cifras que lo demuestran.
Elastic Security Labs puso a Claude Opus frente al ofuscador Tigress en 20 tareas, y de ahí salen dos lecciones directas.
Un intento fallido cuesta aproximadamente el doble que uno exitoso, porque el modelo sigue insistiendo antes de rendirse, y la ofuscación multicapa volvió con un cero, así que machacarla 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 primero la paja, porque una herramienta gratuita llamada Caveman quita alrededor del 75 % de la basura descompilada y el modelo puede dedicar su atención a la lógica real.
1Esta función parece ofuscada. Trabaja con esfuerzo máximo.231. Identifica las técnicas presentes (aplanamiento del 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. Puntúa la 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 los roles: un controlador que reparte el trabajo y trabajadores que toman una función cada uno y paran.

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 proximidad en el grafo de llamadas; ordena los grupos por recuento 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 encargo para que los nombres sean consistentes.74. Una confianza inferior a 6 recibe una segunda pasada con contexto de los vecinos resueltos.85. Rastrea el gasto acumulado de tokens e infórmalo tras 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 al terminar.
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 mira qué cambió realmente
- - verify_reconstruction: comprueba tu reconstrucción contra las pruebas guardadas
- - audit_residual_unknowns: enumera lo que aún no está demostrado
07. Sala limpia: el muro entre dos contextos es el producto
Una reconstrucción en sala limpia significa que copias lo que hace la aplicación 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 otra persona 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ó la BIOS de IBM de esta manera por cerca de 1 millón de dólares, que es la única razón por la que existen los PC de otras marcas.
En 1992, el tribunal en Sega contra Accolade dictaminó que desmontar código puede ser uso legítimo cuando es la única forma de entender cómo funciona, y en 2000 Sony perdió Sony contra Connectix por 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ó parar después de que la clave raíz de PS3 se hiciera pública.

Cuatro reglas te mantienen en el lado correcto, y el equipo de ArtCraft comprueba las cuatro automáticamente en cada compilación:
- - Observa, nunca copies. Ejecuta el objetivo como caja negra, captura solo su propia ventana, nunca pegues su código en tu proyecto
- - Especificaciones, no fuentes. Los formatos de archivo provienen 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 icono, fuente, plantilla y sonido está dibujado en 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 la verdadera frontera.
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 visible4para el usuario como un requisito comprobable, los formatos de archivo leídos y escritos, el manejo de errores.56NO incluyas direcciones, desplazamientos, nombres de variables descompiladas, ensamblador ni nada7copiado del original. Un desarrollador que nunca haya visto el binario debe poder8implementar una versión compatible solo 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 cobertura 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 entorno de pruebas de comportamiento que compare el binario original y mi reconstrucción.23Genera 50 entradas: 30 normales, 10 extremas (vacías, tamaño máximo, unicode), 10 de error4(malformadas, corruptas). Ejecuta cada una por ambas, compara byte a byte donde sea posible5y semánticamente en el resto. Informa de la tasa de coincidencia, divergencias y gravedad de cada una6(cosmética / de comportamiento / crítica). Guárdalo en report.md.
«Creo que coincide» no es una prueba, una tasa de coincidencia sí lo es, y ese informe es lo más convincente que puedes poner al principio de una publicación de lanzamiento.
Luego lanza la reconstrucción como hicieron REA y las aplicaciones 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 negrita 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 se ejecuta en los servidores de una empresa nunca te fue enviado.
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 aplicación Electron cuando el JavaScript está ahí mismo
- - Volcar el binario entero antes de leer un resumen, lo que entierra la lógica y dispara la factura
- - Leer funciones en orden de archivo en lugar de por recuento 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 informe de paridad
La postura honesta en el lado legal, ya que la mitad de X pasó una semana gritando sobre piratería: leer una aplicación en tu propio ordenador es aprender, reconstruir una función a partir de su comportamiento es cómo ha funcionado la industria desde los años 80, y copiar código o reventar funciones de pago es la parte por la que te demandan.
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 las pruebas».
La mayoría de la gente seguirá pagando una cuota mensual 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:





