Una guía práctica y prudente

Cómo hacer ingeniería inversa de una app con Claude Code

Aquí se nombran Claude Code de Anthropic y la herramienta de código abierto REA solo para describirlos con precisión. Nightschool AI es independiente y no está afiliada ni respaldada por Anthropic ni por los creadores de REA.

Hacer ingeniería inversa de un software significa estudiar cómo se comporta sin tener su código fuente original, normalmente para entenderlo, hacer que otra cosa funcione junto a él, mantenerlo utilizable o encontrar un problema de seguridad.

Leer la respuesta completa

REA es un servidor MCP y una CLI de código abierto que permite a un agente como Claude Code leer la estructura de un programa y devolver evidencia concreta (un archivo, una función, una llamada) en lugar de una suposición. Instálalo solo desde su repositorio oficial, úsalo solo en software que te pertenezca o que estés autorizado a examinar, mantén la sesión de construcción separada de la que estudió el original, y consulta con un abogado antes de lanzar algo construido de esta manera.

Publicado

Puntos clave

  • La ingeniería inversa consiste en estudiar un software terminado para entender cómo funciona, por lo general sin tener su código fuente, por razones como investigación de seguridad, interoperabilidad, preservación o simplemente para entender algo que no está documentado.
  • REA es un servidor MCP y una CLI de código abierto, publicado en github.com/morluto/rea bajo licencia MIT, que permite a un agente como Claude Code inspeccionar binarios y aplicaciones y devolver evidencia: un archivo, una función, una llamada.
  • Estudiar cómo funciona un software se trata, legalmente, de forma distinta a copiar su código o sus activos protegidos. Dos decisiones del Noveno Circuito, Sega v. Accolade y Sony v. Connectix, se citan a menudo sobre este punto, pero ninguna constituye una regla general.
  • El propio descargo de responsabilidad de REA descarta ayudar a eludir DRM, verificaciones de licencia o sistemas anti-trampas, y afirma que su resultado no otorga ningún derecho sobre el programa original. Examina solo software que te pertenezca, que hayas escrito o que estés autorizado a estudiar.
  • Un flujo de trabajo de dos sesiones tipo clean-room, una sesión de especificación y una sesión de construcción separada que lee únicamente la especificación resultante, respalda un argumento de clean-room posterior. Es una práctica, no una garantía legal, y no sustituye a un abogado.
Lección gratis · sin crear cuentaConoce a Claude¿Por qué Claude?6 minEmpezar la lección gratis

Copiar y pegar

Prompts que puedes usar hoy

Comprueba la configuración con código que ya conoces

REA ya está instalado y configurado contigo. Abre la pequeña app que escribí yo mismo en la ruta que te indico, y para cada archivo dime qué funciones tiene, a qué llama cada una y cualquier cosa que parezca manejar entradas provenientes de fuera del programa. Informa solo lo que realmente muestra el resultado de REA, y dilo si algo parece incierto.

Ejecutar esto primero en tu propia app pequeña te dice si la configuración realmente funcionó antes de apuntar REA a algo más grande.

Una primera sesión solo de especificación

Estudia esta aplicación usando REA y escribe una especificación en lenguaje llano de lo que hace: sus interfaces, los formatos de datos que lee y escribe, y el comportamiento de cada función principal, completamente con tus propias palabras. No cites ni pegues el código original, pseudocódigo o salida binaria directamente en la especificación. Detente una vez que la especificación esté escrita. No empieces a construir nada todavía.

Esta es la primera mitad del flujo de trabajo de dos sesiones que se describe más abajo. Guarda el resultado en un archivo de texto antes de cerrar la sesión.

Una sesión de construcción que nunca ve el original

Aquí tienes un documento de especificación escrito durante una sesión de ingeniería inversa separada. Construye una implementación nueva e independiente que cumpla todo lo que indica esta especificación. No has visto la aplicación original, su binario ni su código fuente, y no debes pedir verlo. Si algo en la especificación es ambiguo, dímelo en lugar de suponer qué hacía el programa original.

Comienza esto en una sesión nueva con solo el archivo de especificación adjunto, no la transcripción de la primera sesión.

Una verificación legal antes de seguir adelante

Estoy a punto de hacer ingeniería inversa de un software usando REA. Antes de empezar, enumera lo que necesitarías saber para juzgar si esto es algo que realmente estoy autorizado a hacer: quién es el propietario del software, si una licencia o los términos de servicio ya abordan esto, y si hay DRM, una verificación de licencia o software anti-trampas involucrado en algún punto. Señala cualquier cosa que suene a que necesita un abogado real en lugar de tu mejor suposición.

Trata la respuesta como una lista de preguntas por verificar, no como una autorización legal.

Lee el propio descargo de responsabilidad de REA antes de una sesión real

Abre el DISCLAIMER.md de REA desde su propio repositorio y resume, en lenguaje llano, qué tipos de ingeniería inversa dice el proyecto que no ayudará a realizar, y qué dice sobre los derechos que obtiene una persona al usar su resultado. Quiero confirmar que no estoy a punto de pedirte algo que las propias reglas de la herramienta ya descartan.

Vale la pena repetirlo después de cualquier actualización; un descargo de responsabilidad puede cambiar junto con el software.

La guía completa

Toca una sección para abrirla.

Sobre esta guía

Esta semana se ha difundido una publicación sobre una herramienta llamada REA que permite a un agente de IA estudiar software que no escribió, y menciona específicamente a Claude Code de Anthropic como uno de los agentes con los que se conecta. Esta guía está pensada para dos tipos de lectores a la vez: quienes simplemente tienen curiosidad por saber qué es la ingeniería inversa y por qué se hace, y desarrolladores que quieren probar REA con seguridad junto a Claude Code en algo que realmente les pertenece. Recorre qué significa la ingeniería inversa, qué es REA y qué puede leer, el límite legal real entre estudiar software y copiarlo, una lista de verificación de seguridad que conviene revisar antes de instalar algo con tanto alcance, los pasos de instalación y la versión de Node.js que el propio README de REA pide hoy, un flujo de trabajo de dos sesiones tipo clean-room, y los límites honestos de todo el enfoque. Nada de esto es asesoría legal, y tener un proceso cuidadoso no es motivo para dejar de verificar tú mismo el resultado.

Un campo con una larga historia

Qué significa realmente la ingeniería inversa

La ingeniería inversa consiste en estudiar una pieza de software terminada para entender cómo funciona, por lo general sin tener su código fuente original ni ninguno de los documentos de diseño que se usaron para crearla. Observas qué hace, cómo está construida y con qué se comunica, y a partir de eso trabajas hacia atrás para llegar a un modelo de su comportamiento.

La gente lo hace por razones que en su mayoría son poco glamorosas y en su mayoría legítimas. Los investigadores de seguridad hacen ingeniería inversa de programas para encontrar una vulnerabilidad antes de que lo haga alguien con peores intenciones. Los desarrolladores hacen ingeniería inversa de formatos de archivo y protocolos de red para que un programa nuevo pueda interoperar con uno antiguo que nadie les va a documentar. Los archivistas y aficionados hacen ingeniería inversa de software antiguo para mantenerlo funcionando una vez que tanto el hardware original como la empresa que lo creó ya no existen. Y a veces la razón es simplemente que un programa del que dependes hace algo que no está documentado, y necesitas saber qué, antes de poder confiar en él o encontrar una forma de evitarlo.

Nada de esto es nuevo. Los investigadores de seguridad y los archivistas de software lo han hecho durante décadas con desensambladores y depuradores, mucho antes de que existiera ningún agente de IA. Lo que ha cambiado es la velocidad: un agente puede leer un listado de desensamblado o un método descompilado y resumirlo en segundos, un trabajo que antes le tomaba horas a una persona capacitada. Esa es una ganancia real de capacidad, y es precisamente por eso que el límite legal y ético que se trata más adelante en esta guía importa más ahora, no menos, ya que el cuello de botella que antes frenaba a la gente entre la curiosidad y la copia prácticamente ha desaparecido.

El resto de esta guía es específico: recorre una herramienta, llamada REA, que conecta a un agente como Claude Code con este tipo de análisis, y los hábitos que conviene tener establecidos antes de apuntarla hacia algo.

Un nuevo participante

Qué es REA y qué puede leer

REA se describe a sí misma como una forma de hacer ingeniería inversa de software, desde el comportamiento de una app hasta los binarios nativos. Lo que realmente puede ver depende del tipo de objetivo.

Un servidor MCP y una CLI

REA es software de código abierto publicado en github.com/morluto/rea, con el código propio de REA bajo licencia MIT. Funciona como un servidor de Model Context Protocol que un agente como Claude Code puede llamar, y como un comando sencillo que puedes ejecutar tú mismo desde una terminal.

Binarios nativos

Según el propio README de REA, puede extraer pseudocódigo, ensamblador, cadenas, símbolos, llamadas y referencias a partir de un binario compilado, trabajando mediante motores de análisis como Hopper, Ghidra, IDA o Kuna.

Aplicaciones de JavaScript y Electron

Para objetivos de JavaScript y Electron, el README de REA describe la lectura de módulos, importaciones, source maps, rutas, canales IPC y las relaciones entre un programa y cualquier complemento nativo que cargue.

Ensamblados .NET y APK de Android

Para ensamblados .NET, metadatos e instrucciones CIL. Para APK de Android, declaraciones del manifiesto, clases, métodos descompilados y las referencias entre ellos, de nuevo según el propio README del proyecto.

Más allá de las aplicaciones

El mismo README también incluye sitios web, capturas de paquetes, imágenes de firmware, bases de datos SQLite, binarios de Go y Rust, y archivos de modelos entre los objetivos a los que se pueden apuntar las herramientas de análisis de REA.

Evidencia, no una suposición

La intención de diseño, según el README, es que cada hallazgo señale algo concreto (un archivo, una función, una llamada), para que puedas comprobarlo tú mismo en lugar de dar por buena a ciegas la síntesis del agente.

Antes de instalar nada

Instala con seguridad, no solo con rapidez

Una herramienta que puede leer binarios y ejecutar motores de análisis merece la misma cautela que le darías a cualquier software con tanto alcance dentro de tu sistema.

Instala solo desde la fuente oficial

El proyecto vive en github.com/morluto/rea y se publica en npm como el paquete rea-agents. Escribe ese nombre tú mismo en lugar de seguir un enlace en la descripción de un video, una publicación de foro o un mensaje de chat.

Vigila las imitaciones

Un proyecto que recibe atención tan rápido atrae imitadores. Un repositorio o paquete que se llame algo parecido al nombre de REA, alojado en otro lugar, es motivo para detenerte y verificar, nunca un atajo.

Ejecuta binarios desconocidos en una VM

Si apuntas un motor de análisis a un binario que no escribiste y en el que no confías del todo, haz ese trabajo dentro de una máquina virtual u otro entorno desechable, no en el equipo que usas para todo lo demás.

Fija una versión

Instala una versión específica en lugar de tomar siempre la más reciente, y lee qué cambió antes de pasar a una nueva. El registro de npm indicaba la 6.8.0 como la última versión publicada de rea-agents al momento de escribir esto.

Lee el descargo de responsabilidad una vez, de verdad

DISCLAIMER.md es breve. Léelo completo antes de tu primera sesión real con la herramienta, no después de que algo ya haya salido mal.

Poniéndola en marcha

Instalación de REA en Claude Code

La versión de Node.js importa aquí. El propio README de REA indica su requisito exactamente así: Node.js 22.x (>=22.23.4), 24.x (>=24.22.1), o 26.12.1+, además de npm. Verifica esto contra el README vigente antes de instalar, ya que este tipo de requisito cambia entre versiones.

El comando de configuración es npx rea-agents setup. Según el README, te guía para elegir con qué agentes registrar REA, te muestra los cambios que propone hacer antes de que los apruebes, y conserva copias de seguridad de tu configuración existente. Reinicia tu agente después para que detecte el nuevo servidor MCP; las propias instrucciones de REA lo dicen claramente.

Para una instalación persistente de línea de comandos en lugar de una ejecución puntual con npx, el README describe npm install --global rea-agents, seguido de rea --help para ver qué está disponible. A partir de una instalación global, rea update te lleva a una nueva versión según tu propio calendario en lugar de automáticamente, y ejecutar después npx rea-agents@latest setup actualiza el registro del agente para que coincida.

Antes de apuntar REA hacia algo que no te pertenezca por completo, pruébalo primero en una pequeña aplicación que tú mismo hayas escrito. Con REA configurado, pídele a Claude Code que abra esa app pequeña y describa lo que ve, función por función, y compáralo con lo que ya sabes que escribiste. Ese único ejercicio confirma que la configuración realmente funcionó, y te da una idea de cómo se lee en la práctica la evidencia de REA (un archivo, una función, una llamada) antes de que dependas de ella para algo importante.

Una forma más segura de organizar el trabajo

Un flujo de trabajo de dos sesiones tipo clean-room

Pon en práctica concreta la idea de clean-room mencionada antes usando dos sesiones separadas de Claude Code. La primera es una sesión de especificación: apunta REA hacia el software que estás autorizado a estudiar, y pídele al agente que escriba una especificación en lenguaje llano de sus interfaces, sus formatos de datos y el comportamiento de sus funciones principales, completamente con sus propias palabras, sin copiar textualmente código original ni pseudocódigo en el documento.

La segunda es una sesión de construcción, iniciada desde cero, sin memoria de la primera. Dale únicamente el archivo de especificación, nada más: no el binario original, no la transcripción de la primera sesión, no el resultado sin procesar de REA. Pídele que construya una implementación nueva e independiente que cumpla la especificación, y que te avise cuando algo en esa especificación sea ambiguo en lugar de suponer en silencio qué debía hacer el programa original.

Mantener estas sesiones como sesiones genuinamente separadas, y no como dos fases de una sola conversación larga, es la parte que importa. Una única sesión que haya estudiado el original y luego escrito el reemplazo ha difuminado exactamente el límite que el diseño clean-room existe para mantener nítido, ya que no hay forma de demostrar, después del hecho, que la segunda mitad no se apoyó en la primera.

Sé realista sobre lo que esto te da. Un flujo de trabajo disciplinado de dos sesiones es una práctica que respalda un argumento de clean-room posterior si alguna vez alguien pregunta cómo se construyó algo. No es, por sí solo, una garantía legal, y no sustituye que un abogado real revise cualquier cosa que planees lanzar o vender.

Define expectativas

Límites honestos de este flujo de trabajo

REA y el proceso descrito en esta guía reducen el riesgo; ninguno de los dos lo elimina. Ten presentes estos límites una vez que tengas algo abierto.

Puede pasar cosas por alto en aplicaciones grandes

Una aplicación grande tiene más superficie de la que probablemente cubra una sola pasada de análisis. Trata una ejecución limpia como una muestra de lo que hay, no como prueba de que no se pasó nada por alto.

Trata el resultado como pistas, no como conclusiones

La evidencia que señala un archivo, una función o una llamada es un lugar al que ir a mirar, no un hecho establecido por sí mismo. Verifica cualquier cosa en la que realmente vayas a confiar leyendo tú mismo el resultado real.

Usa mucho contexto

El análisis detallado de binarios y bytecode produce mucho texto rápidamente. Espera que el contexto de una sesión se llene rápido en cualquier cosa que no sea una app pequeña, y planifica un flujo de trabajo de dos sesiones teniendo eso en cuenta.

Tanto el software como la ley siguen cambiando

Los comandos de REA, su requisito de Node.js y lo que puede leer cambiarán entre versiones, y el panorama legal alrededor de la ingeniería inversa también se mueve. Vuelve a revisar ambos antes de confiar en cualquier cosa que leas hoy.

Un segundo par de ojos sigue ayudando

Para cualquier cosa que vaya más allá de un experimento personal, un revisor humano que entienda tanto el código como el límite legal vale más que un prompt cuidadoso adicional.

Practica un prompting acotado y verificable antes de intentar esto en serio

Antes de apuntar cualquier herramienta de ingeniería inversa a algo que no te pertenece por completo, ayuda tener ya el hábito de darle a un agente una tarea acotada y comprobar tú mismo su resultado contra la realidad. La primera lección gratuita de Nightschool AI recorre exactamente ese tipo de prompting cuidadoso con Claude Code de Anthropic.

Preguntas frecuentes

¿Qué significa realmente la ingeniería inversa?

Significa estudiar una pieza de software terminada para entender cómo funciona, por lo general sin tener su código fuente original ni sus documentos de diseño. La gente lo hace por investigación de seguridad, para hacer que algo interopere con software que no controla, para mantener utilizable software antiguo, o simplemente para entender qué está haciendo un programa que no está documentado.

¿Es legal la ingeniería inversa?

Depende en gran medida de qué estudias, cómo lo estudias, dónde te encuentras y qué haces con lo que aprendes. Estudiar cómo funciona algo se trata de forma distinta a copiar su código o sus activos protegidos. Esta guía no es asesoría legal; consulta con un abogado real antes de confiar en ella para algo de verdad.

¿Qué es REA, la herramienta que cubre esta guía?

REA es un servidor MCP y una herramienta de línea de comandos de código abierto, publicada en github.com/morluto/rea bajo licencia MIT, que permite a un agente como Claude Code de Anthropic inspeccionar binarios, aplicaciones y otro software, y devolver evidencia, como un archivo, una función o una llamada, en lugar de una suposición en lenguaje llano.

¿Qué versión de Node.js requiere REA?

Según el propio README de REA, al momento de escribir esto, requiere Node.js 22.x (>=22.23.4), 24.x (>=24.22.1), o 26.12.1+, además de npm. Revisa el README vigente antes de instalar, ya que requisitos de versión como este cambian entre versiones.

¿Cómo instalo REA en Claude Code?

Ejecuta npx rea-agents setup, elige con qué agentes registrarlo, revisa los cambios que propone antes de aprobarlos, y reinicia tu agente después. Para una CLI persistente en su lugar, npm install --global rea-agents seguido de rea --help, y más adelante rea update para cambiar de versión de forma deliberada.

¿Qué es un flujo de trabajo clean-room, y por qué usar dos sesiones?

Una sesión de especificación estudia el software original y escribe una especificación en lenguaje llano de su comportamiento, sin copiar código original. Una sesión de construcción separada, sin memoria de la primera y sin acceso al original, construye código nuevo a partir únicamente de esa especificación. Mantener ambas genuinamente separadas respalda un argumento de clean-room posterior; una sesión mezclada no lo hace.

¿Con qué no ayudará REA?

Según su propio DISCLAIMER.md, REA no admite ni ayudará a eludir DRM, verificaciones de licencia o sistemas anti-trampas, ni a copiar software propietario o sus activos protegidos. También dice que su resultado no otorga ningún derecho sobre el programa original, y que solo debe usarse en software que te pertenezca, que hayas escrito o que estés autorizado a examinar.

¿Cuáles son los límites honestos de REA?

Puede pasar cosas por alto en aplicaciones grandes, así que una ejecución limpia es una muestra, no una garantía. Su resultado es una pista que vale la pena comprobar, no una conclusión definitiva. El análisis detallado también produce mucho texto, así que puede agotar rápido el contexto de una sesión, especialmente en cualquier cosa que no sea una app pequeña.

¿Está esta guía afiliada a Anthropic o a los creadores de REA?

No. Esta es una guía educativa independiente de Nightschool AI. Nombra a Claude Code de Anthropic y al proyecto de código abierto REA únicamente para describir cómo funcionan realmente, sin afiliación, asociación ni respaldo de Anthropic ni de los creadores de REA en ninguna dirección.

Practica los hábitos antes de hacer ingeniería inversa de algo real

Una tarea acotada, una especificación que realmente puedas comprobar, y una sana desconfianza hacia tu propia primera respuesta importan más aquí que cualquier herramienta individual.

Nightschool AI es una plataforma de aprendizaje independiente y no está afiliada, respaldada ni patrocinada por Anthropic. Claude es una marca de Anthropic, PBC. ¿Buscas la Claude Academy oficial de Anthropic? Está en academy.claude.com.