En esta página

Ingeniería inversa, con su agente de codificación

Descubre cómo
funciona el software.

Pregunta a tu agente de programación sobre una aplicación, un juego o un sitio web. REA le da herramientas para examinar el código que explica la respuesta.

Configurar REA

Copia este prompt en tu agente de programación:

Su agente de codificación

Instala REA y conéctalo a este agente de programación usando npx rea-agents@latest setup. Muéstrame los cambios propuestos y espera mi aprobación antes de aplicarlos. Después, verifica la instalación.

O ejecuta esto en la terminal:

npx rea-agents@latest setup

Revisa y aprueba los cambios propuestos. Después, reinicia tu agente.

Otras formas de instalación: curl →

Primera vez, o falta Node.js ¿o un agente de codificación? Siga la guía de configuración paso a paso →

Cómo funciona

La ingeniería inversa consiste en entender un software examinando el propio programa. Con REA, tu agente puede seguir el código, explicar una función y ayudarte a recrearla.

  1. Pregunta por una función

    Dale a tu agente un programa o una página y una pregunta.

  2. Examina el programa

    REA devuelve código, referencias y observaciones durante la ejecución.

  3. Entiéndelo y prueba un cambio

    Tu agente usa los hallazgos para explicar o recrear la función.

Ver la investigación completa de la Calculadora

¿Por qué 200 + 10% da 220 en la Calculadora?

Sigue las instrucciones paso a paso

Original x64 * instrucciones seleccionadas
0x180124945: MOV EAX, dword ptr [R13 + 0x18]
0x180124949: CMP EAX, 0x5c
0x18012494c: JZ 0x180124aba
0x180124952: CMP EAX, 0x5b
0x180124955: JZ 0x180124aba
0x18012495b: MOV EDX, 0x64
0x180124960: LEA RCX, [RSP + 0x160]
0x180124968: CALL 0x180122650
0x18012496e: LEA RDX, [R13 + 0x160]
0x180124975: LEA RCX, [RSP + 0x78]
0x18012497a: CALL 0x180109720
0x18012497f: MOV RSI, RAX
0x180124982: MOV qword ptr [RSP + 0x28], RAX
0x180124987: LEA RDX, [RSP + 0x160]
0x18012498f: MOV RCX, RAX
0x180124992: CALL 0x180123190
; … value-copy instructions omitted …
0x180124a14: MOV RDX, RDI
0x180124a17: LEA RCX, [RSP + 0xf8]
0x180124a1f: CALL 0x180109720
0x180124a24: LEA R8, [RSP + 0x30]
0x180124a29: MOV RDX, RAX
0x180124a2c: LEA RCX, [RSP + 0xb8]
0x180124a34: CALL 0x180123c10

Decodifica las instrucciones, sigue las llamadas a funciones y reconstruye el cálculo.

Hazle la misma pregunta a tu agente

Ejemplo de indicador * Calculadora

Uso REA para inspeccionar Windows Calculadora. ¿Por qué 200 + 10% da 220?

Respuesta de ejemplo * basada en los hallazgos

Después de +, el botón % toma un porcentaje del primer número.

10% of 200 = 20200 + 20 = 220
REA proporciona
Instrucciones del manejador, código descompilado y llamadas.
Tu agente explica
Qué rama se aplica, qué calcula y cómo reconstruirla.
Ensamblado seleccionado de la DLL de la calculadora instalada. Los pensamientos y la respuesta ilustran los hallazgos. Continúe con el ejemplo de la Calculadora ↓

Probemos dos ejemplos: cambiar la velocidad de un juego y recrear el botón % de la Calculadora.

Ejemplo 01 * Juego de dinosaurios de Chrome

¿Por qué el dinosaurio va cada vez más rápido?

El juego se acelera mientras corres. Para recrearlo con un control de velocidad, primero debemos averiguar cómo cambia la velocidad.

1. Pregunta por la velocidad

Pregunta de ejemplo · Juego del dinosaurio

Utilice REA para inspeccionar este juego de dinosaurios. ¿Por qué se vuelve más rápido? Muestre la regla de velocidad, luego cree una versión pequeña con una velocidad ajustable.

2. Encuentra la regla de velocidad

REA permite al agente leer el código del juego en ejecución. La velocidad empieza en 6 y aumenta un poco en cada actualización mientras sea inferior a 13.

3. Juega con el resultado

Recreamos esa regla en el minijuego de abajo y añadimos un control de velocidad. Pulsa Jugar y elige tu velocidad.

6 → 10 → 13

Regla original: comience en 6, luego aumente hacia 13.

Mueva el control deslizante para establecer su propia velocidad. Espaciar o saltar despeja un cactus.
Abra el laboratorio de velocidad →
Vea el script, las comprobaciones y cómo probar el análisis

Objetivo inspeccionado: edición de navegador derivada de Chromium de wayou.

REA * cargado index.js * líneas seleccionadas
if (this.currentSpeed < this.config.MAX_SPEED) {
  this.currentSpeed += this.config.ACCELERATION;
}

Comience a las 6. Añadir 0.001 cada actualización sin colisión, mientras que la velocidad es inferior 13.

Qué hace cada parte

  1. 01 * REA Lee el guión del juego de carreraDevuelva su código y configuración reales al agente.
  2. 02 * Su agenteVuelva a generar la regla, agregue un controlUsa la aceleración recuperada en un juego pequeño con un control deslizante de velocidad.
  3. 03 * TúCambia la velocidad y juegaPrueba la aceleración original y luego elige tu propio ritmo.

REA inspeccionó la edición del navegador HTTP a través de una conexión de depuración local y devolvió el archivo cargado index.js, incluyendo su fuente y resumen.

Configuración seleccionada del script inspeccionado
ACCELERATION: 0.001,
MAX_SPEED: 13,
SPEED: 6

Llamamos a la función de actualización del juego original en una verificación controlada del navegador, con obstáculos y programación automática deshabilitados. Después de 4.000 actualizaciones, la velocidad era de 10,0; después de 10.000, era de 13,0, redondeado a un decimal.

El nuevo minijuego mantiene esa regla de velocidad. Su código de dibujo, salto y colisión es una pequeña implementación de enseñanza. Abra el laboratorio para ver el nuevo código y ejecutar la misma comprobación de velocidad.

Para inspeccionar el objetivo usted mismo, siga las instrucciones pasos de conexión del navegador usando la página del dinosaurio. Proporcione a su agente la URL de esa página y su punto final de depuración local, luego copie el mensaje anterior.

Código de velocidad inspeccionado · Chromium Autores * Licencia BSD

Ejemplo 02 * Calculadora Windows

Recrea el botón % de la calculadora.

El botón % hace cosas distintas después de + y ×. Busquemos ambas reglas y probémoslas en una pequeña calculadora.

1. Pregunta por el botón %

Pregunta de ejemplo · Calculadora

Use REA para inspeccionar el botón % de la calculadora Windows. Recupere las reglas después de + y×, luego construya una pequeña calculadora que use ambas.

2. Encuentra ambas reglas

REA ayuda al agente a leer el código del botón %. Este aplica dos reglas diferentes:

Con +
Toma el 10% del primer número.10% of 200 = 20 → 200 + 20 = 220
Con ×
Convierta el 10% en 0.1.200 × 0.1 = 20

3. Prueba el botón %

Recreamos ambas reglas abajo. Elige + o ×, pulsa % y luego =.

200 + 20

10% de 200 = 20. Entonces 200 + 20 = 220.

Ilustración interactiva de la regla de porcentaje inspeccionado.
Vea el código real y cómo se verificó la respuesta

Para este ejemplo, previous = 200 y current = 10.

Resumen legible del controlador %
if (operation == multiply || operation == divide) {
  percent = current / 100;
} else {
  percent = current * previous / 100;
}

Desde la aplicación instalada hasta un botón % que funciona

  1. 01 · REA lee calc.exeLanza la aplicación CalculadoraSe abre el código ms-calculator:. A continuación, el agente selecciona la biblioteca de la aplicación instalada.
  2. 02 * REA lee la bibliotecaDevuelve el código del controlador % La función verifica el operador y usa la constante 100.
  3. 03 * Su agente lo interpretaExplicar y reproducir las reglasVerifique la sucursal con la fuente de Microsoft, luego intente + y × arriba.
REA * instrucciones originales seleccionadas
0x180124945: MOV EAX, dword ptr [R13 + 0x18]
0x180124949: CMP EAX, 0x5c
0x18012494c: JZ 0x180124aba
0x180124952: CMP EAX, 0x5b
0x180124955: JZ 0x180124aba
0x18012495b: MOV EDX, 0x64
ID de operador * Fuente de Microsoft
#define IDC_MUL 92      // 0x5c
#define IDC_DIV 91      // 0x5b
#define IDC_PERCENT 118 // 0x76

0x64 = 100

Inspeccionado con REA 4.1.0: Calculadora Windows 11.2508.4.0, x64. El resumen legible usa nombres de la fuente pública de Microsoft para explicar la rama recuperada.

Porcentaje de implementación · Casos de prueba de Microsoft · Guía de configuración nativa

Estudios de caso de REA.

Explora una función de una aplicación o juego publicado, con código y resultados comprobados.

Vitrinas →

Análisis de Android * APK

Cómo genera un autenticador un código de inicio de sesión

Sigue el código de acceso de seis dígitos de Aegis en su APK publicado. Después mueve el reloj de demostración para ver por qué cambia cada 30 segundos.

Lea el caso práctico de Android

Electron * Rastreo de funciones

Cómo Notion copia texto y HTML

Sigue el JavaScript empaquetado de Notion hasta el portapapeles del sistema y descubre cómo una copia conserva datos enriquecidos de los bloques.

Lea el caso práctico de Notion

Reconstrucción nativa ·

Cálculo de la posición del sonido izquierdo/derecho de DX-Ball

Recupera cómo la posición de una pelota se convierte en sonido a izquierda o derecha en un juego de Windows de 1996.

Lea el caso práctico de DX-Ball

Su primera investigación

Pruebe REA en una aplicación pequeña.

Descargue nuestro ejemplo de Notes, rastree su exportación CSV y verifique una entrada modificada.

Pruebe el ejemplo guiado

Elige tu objetivo.

Estas guías cubren la configuración y una primera investigación para cada tipo de software.

Programas de código máquina

Inspeccione funciones, cadenas, referencias y relaciones función-llamada en ejecutables y bibliotecas.

Guía de análisis de programas de código máquina

JavaScript y Electron

Asigne módulos, rutas, IPC y dependencias nativas desde una carpeta de aplicaciones o un archivo ASAR.

Flujos de trabajo de aplicaciones

Actividad del navegador y del tiempo de ejecución

Capture la actividad seleccionada del navegador o del proceso y, a continuación, compare los resultados entre ejecuciones.

Guía de observación del navegador
Probar un proyecto más grande
Ejemplo de solicitud * Sitio web

Utilice REA para inspeccionar https://rea.tools/. Clona este sitio web por mí.

Sí, esta.

Mensaje de ejemplo * Reconstrucción del juego

Usa REA para reconstruir este juego a partir de su ejecutable. Recupera la lógica de juego en C y pruébala con la original.

Vea el estudio de caso de DX-Ball →

¿Tienes preguntas?

Arriba