Sur cette page

Ingénierie inverse, avec votre agent de codage

Découvrez comment
fonctionne un logiciel.

Posez à votre agent de programmation une question sur une application, un jeu ou un site. REA lui fournit les outils pour examiner le code derrière la réponse.

Mettre en place REA

Copiez ce prompt dans votre agent de programmation :

Votre agent de codage

Installe REA et connecte-le à cet agent de programmation avec npx rea-agents@latest setup. Présente-moi d’abord les changements prévus et attends mon accord. Vérifie ensuite l’installation.

Ou exécutez cette commande dans le terminal :

npx rea-agents@latest setup

Vérifiez et approuvez les changements prévus, puis redémarrez votre agent.

Autres options d'installation : curl →

Première fois, ou manquant Node.js ou un agent de codage? Suivez le guide de configuration étape par étape →

Comment ça fonctionne

La rétro-ingénierie consiste à comprendre un logiciel en examinant le programme lui-même. Avec REA, votre agent peut suivre le code, expliquer une fonction et vous aider à la reproduire.

  1. Poser une question sur une fonction

    Donnez à votre agent un programme ou une page et une question.

  2. Examiner le programme

    REA renvoie du code, des références et des observations à l'exécution.

  3. Comprendre, puis essayer une modification

    Votre agent utilise les résultats pour expliquer ou reproduire la fonction.

Voir toute l'investigation de la Calculatrice

Pourquoi 200 + 10% donne-t-il 220 dans la Calculatrice ?

Suivre les instructions pas à pas

Instructions d'origine x64 · sélectionnées
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

Vous décodez les instructions, suivez les appels de fonction et reconstruisez le calcul.

Poser la même question à votre agent

Exemple d'invite * Calculatrice

Utilisation REA pour inspecter Windows Calculatrice. Pourquoi 200 + 10% donne-t-il 220?

Exemple de réponse · basé sur les résultats

Après +, le bouton % prend un pourcentage du premier nombre.

10% of 200 = 20200 + 20 = 220
REA fournit
Les instructions du gestionnaire, le code décompilé et les appels.
Votre agent explique
Quelle branche s'applique, ce qu'elle calcule et comment la reconstruire.
Assemblage sélectionné à partir de la DLL de calculatrice installée. Les réflexions et la réponse illustrent les résultats. Continuez avec l'exemple de la calculatrice ↓

Essayons deux exemples : changer la vitesse d'un jeu, puis reproduire le bouton % de la Calculatrice.

Exemple 01 * Jeu de dinosaures de Chrome

Pourquoi le dinosaure accélère-t-il ?

Le jeu accélère à mesure que vous courez. Pour le reproduire avec un réglage de vitesse, il faut d'abord comprendre comment cette vitesse évolue.

1. Poser une question sur la vitesse

Exemple de question · Jeu du dinosaure

Utilisez REA pour inspecter ce jeu de dinosaures. Pourquoi ça va plus vite? Affichez la règle de vitesse, puis créez une petite version avec une vitesse réglable.

2. Trouver la règle de vitesse

REA permet à l'agent de lire le code du jeu en cours d'exécution. La vitesse commence à 6 et augmente un peu à chaque mise à jour tant qu'elle est inférieure à 13.

3. Jouer au résultat

Nous avons reproduit cette règle dans le mini-jeu ci-dessous et ajouté un curseur de vitesse. Appuyez sur Jouer, puis choisissez votre vitesse.

6 → 10 → 13

Règle d'origine: commencez à 6, puis augmentez vers 13.

Déplacez le curseur pour définir votre propre vitesse. L'espace ou le saut efface un cactus.
Ouvrir le laboratoire de vitesse →
Voir le script, les vérifications et comment essayer l'analyse

Cible inspectée: édition de navigateur dérivée du Chromium de wayou.

REA * chargé index.js * lignes sélectionnées
if (this.currentSpeed < this.config.MAX_SPEED) {
  this.currentSpeed += this.config.ACCELERATION;
}

Commencez à 6 heures. Ajouter 0.001 chaque mise à jour sans collision, alors que la vitesse est inférieure 13.

Ce que fait chaque partie

  1. 01 · REALire le script du jeu en cours d'exécutionRenvoyez son code et ses paramètres réels à l'agent.
  2. 02 · Votre agentReconstruire la règle, ajouter un contrôleUtilisez l'accélération récupérée dans un petit jeu avec un curseur de vitesse.
  3. 03 * VousChangez la vitesse et jouezEssayez l'accélération d'origine, puis choisissez votre propre rythme.

REA a inspecté l'édition du navigateur HTTP via une connexion de débogage locale et a renvoyé le fichier chargé index.js, y compris sa source et son résumé.

Paramètres sélectionnés à partir du script inspecté
ACCELERATION: 0.001,
MAX_SPEED: 13,
SPEED: 6

Nous avons appelé la fonction de mise à jour du jeu d'origine dans une vérification contrôlée du navigateur, avec les obstacles et la planification automatique désactivés. Après 4 000 mises à jour, la vitesse était de 10,0; après 10 000, elle était de 13,0, arrondie à une décimale.

Le nouveau mini-jeu conserve cette règle de vitesse. Son code de dessin, de saut et de collision est une petite implémentation pédagogique. Ouvrir le laboratoire pour voir le nouveau code et exécuter le même contrôle de vitesse.

Pour inspecter la cible vous-même, suivez les instructions étapes de connexion du navigateur en utilisant la page des dinosaures. Donnez à votre agent cette URL de page et votre point de terminaison de débogage local, puis copiez l'invite ci-dessus.

Code de vitesse inspecté · Auteurs de Chromium * Licence BSD

Exemple 02 · Windows Calculatrice

Recréez le bouton % de la calculatrice.

Le bouton % agit différemment après + et ×. Retrouvons les deux règles et essayons-les dans une petite calculatrice.

1. Poser une question sur le bouton %

Exemple de question · Calculatrice

Utilisez REA pour inspecter le bouton % de la calculatrice Windows. Récupérez les règles après + et×, puis créez une petite calculatrice qui utilise les deux.

2. Trouver les deux règles

REA aide l'agent à lire le code du bouton %. Ce code applique deux règles différentes :

Avec +
Prenez 10% du premier nombre.10% of 200 = 20 → 200 + 20 = 220
Avec ×
Transformez 10% en 0,1.200 × 0.1 = 20

3. Essayer le bouton %

Nous avons reproduit les deux règles ci-dessous. Choisissez + ou ×, appuyez sur %, puis sur =.

200 + 20

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

Illustration interactive de la règle du pourcentage inspecté.
Voir le vrai code et comment la réponse a été vérifiée

Pour cet exemple, previous = 200 et current = 10.

Résumé lisible du gestionnaire %
if (operation == multiply || operation == divide) {
  percent = current / 100;
} else {
  percent = current * previous / 100;
}

De l'application installée à un bouton % fonctionnel

  1. 01 · REA lit calc.exeIl lance l'application CalculatriceLe code s'ouvre ms-calculator:. L'agent sélectionne ensuite la bibliothèque de l'application installée.
  2. 02 * REA lit la bibliothèqueRenvoie le code du gestionnaire % La fonction vérifie l'opérateur et utilise la constante 100.
  3. 03 * Votre agent l'interprèteExpliquer et reproduire les règlesVérifiez la branche avec la source de Microsoft, puis essayez + et × ci-dessus.
REA * instructions d'origine sélectionnées
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
Identifiants de l'opérateur * Source de Microsoft
#define IDC_MUL 92      // 0x5c
#define IDC_DIV 91      // 0x5b
#define IDC_PERCENT 118 // 0x76

0x64 = 100

Inspecté avec la version 4.1.0 de REA: Calculatrice 11.2508.4.0, x64 de Windows. Le résumé lisible utilise des noms de la source publique de Microsoft pour expliquer la branche récupérée.

Pourcentage de mise en œuvre · Scénarios de test de Microsoft · Guide de configuration natif

Études de cas REA.

Explorez une fonction d'une application ou d'un jeu publié, avec du code et des résultats vérifiés.

Vitrines →

Pour Android · APK analyse

Comment un authentificateur génère un code de connexion

Suivez le code de connexion à six chiffres d'Aegis dans son APK publié, puis déplacez l'horloge de démonstration pour comprendre pourquoi il change toutes les 30 secondes.

Lire l'étude de cas Android

Electron * Traçage des fonctionnalités

Comment Notion copie du texte et du code HTML

Suivez le JavaScript empaqueté de Notion jusqu'au presse-papiers système pour voir comment une copie préserve les données riches des blocs.

Lire l'étude de cas Notion

Reconstruction indigène ·

Calcul de la position sonore gauche/droite de DX-Ball

Retrouvez comment la position d'une balle devient un son à gauche ou à droite dans un jeu Windows de 1996.

Lire l'étude de cas DX-Ball

Votre première enquête

Essayez REA sur une petite application.

Téléchargez notre exemple de Notes, tracez son exportation CSV et vérifiez une entrée modifiée.

Essayez l'exemple guidé

Choisissez votre cible.

Ces guides couvrent l'installation et une première investigation pour chaque type de logiciel.

Programmes en code machine

Inspectez les fonctions, les chaînes, les références et les relations d'appel de fonction dans les exécutables et les bibliothèques.

Guide d'analyse des programmes en code machine

JavaScript & Electron

Mappez les modules, les routes, l'IPC et les dépendances natives à partir d'un dossier d'application ou d'une archive ASAR.

Flux de travail des applications

Activité du navigateur et de l'exécution

Capturez l'activité du navigateur ou du processus sélectionné, puis comparez les résultats entre les exécutions.

Guide d'observation du navigateur
Essayer un projet plus ambitieux
Exemple d'invite * Site Web

Utilisez REA pour inspecter https://rea.tools/. Clonez ce site pour moi.

Oui, celui-ci.

Exemple d'invite * Reconstruction du jeu

Utilisez REA pour reconstruire ce jeu à partir de son exécutable. Récupérez la logique de jeu en C et testez-la par rapport à l'original.

Voir l'étude de cas DX-Ball →

Des questions ?

Haut