Ingeniería inversa, con su agente de codificación
Descubre cómo
funciona el software.
REA le da a tu agente de programación las herramientas para examinar un programa y explicar qué hace.
¿Ya conoces RE? Saltar a guías de análisis →
¿Quieres profundizar? Leer el Blog →
Configurar REA
Copia este prompt en tu agente de programació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.
Primera vez, o falta Node.js ¿o un agente de codificación? Siga la guía de configuración paso a paso →
¿Qué es la ingeniería inversa?
Entender cómo funciona el software examinando el propio programa.
El objetivo: comprender una característica lo suficientemente bien como para explícalo, cámbialo o reconstrúyelo.
Por ejemplo: ¿por qué la calculadora da 220 al calcular 200 + 10%?
Antes de REA · Lo investigas por tu cuenta
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.
Con REA · Le preguntas a tu agente
Un solo prompt.
Pregúntale a tu agente con palabras normales.
Uso REA para inspeccionar Windows Calculadora. ¿Por qué 200 + 10% da 220?
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.
Probemos con dos ejemplos. Cambia la velocidad de un juego, luego regresa a la Calculadora y reconstruye su botón%.
Ejemplo 01 * Juego de dinosaurios de Chrome
¿Por qué el dinosaurio va cada vez más rápido?
- Objetivo
- Reconstruye el juego con velocidad ajustable.
- ¿Por qué realizar ingeniería inversa?
- Para reproducir su aceleración, necesitamos la regla en el juego terrestre: qué tan rápido comienza, cuánto aumenta y cuándo se detiene.
Juega a la reconstrucción
Regla original: comience en 6, luego aumente hacia 13.
REA devolvió
El script que realmente se ejecuta en la página. El agente lee su función de actualización y la configuración de velocidad, luego usa esa regla en un nuevo juego.
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.
Objetivo inspeccionado: edición de navegador derivada de Chromium de wayou.
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.
Abra el laboratorio de velocidad →Qué hace cada parte
- 01 * REA Lee el guión del juego de carreraDevuelva su código y configuración reales al agente.
- 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.
- 03 * TúCambia la velocidad y juegaPrueba la aceleración original y luego elige tu propio ritmo.
Vea el script, las comprobaciones y cómo probar el análisis
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.
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.
Vimos por qué 200 + 10% da 220. Ahora recuperemos las reglas para + y × y probémoslas.
- Objetivo
- Construye una pequeña calculadora que maneje tanto + como × correctamente.
- ¿Por qué realizar ingeniería inversa?
- El mismo botón usa reglas diferentes después de + y ×. Inspeccionamos la aplicación instalada para encontrar a qué número se aplica el porcentaje.
Prueba el cálculo
10% de 200 = 20. Entonces 200 + 20 = 220.
REA devolvió
Una rama se divide por 100. El otro también se multiplica por el primer número. El agente usa ambos para recrear el botón%.
Para este ejemplo, previous = 200 y current = 10.
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.
if (operation == multiply || operation == divide) {
percent = current / 100;
} else {
percent = current * previous / 100;
}
- 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
Desde la aplicación instalada hasta un botón % que funciona
-
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. -
02 * REA lee la bibliotecaDevuelve el código del controlador % La función verifica el operador y usa la constante
100. - 03 * Su agente lo interpretaExplicar y reproducir las reglasVerifique la sucursal con la fuente de Microsoft, luego intente + y × arriba.
Vea el código real y cómo se verificó la respuesta
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
#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
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.
¿Quieres profundizar?
Dígale a su agente lo que quiere entender o construir. Con REA, pueden trabajar juntos en cualquier cosa, desde clonando este sitio web para reconstruyendo un juego a partir de su ejecutable.
Utilice REA para inspeccionar https://rea.tools/. Clona este sitio web por mí.
Sí, esta.
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.
Para los pasos de configuración y análisis, elija su objetivo:
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áquinaJavaScript y Electron
Asigne módulos, rutas, IPC y dependencias nativas desde una carpeta de aplicaciones o un archivo ASAR.
Flujos de trabajo de aplicacionesActividad 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¿Tienes preguntas?
Lea las Preguntas frecuentes, chatee con nosotros en Discord , o abrir un problema de GitHub para errores y solicitudes de funciones.
Únete a la comunidad
Comparta investigaciones y obtenga ayuda de otros usuarios de REA en Discord . Siga a REA en X para obtener actualizaciones del proyecto.