Sur cette page

Ingénierie inverse, avec votre agent de codage

Découvrez comment
fonctionne un logiciel.

REA donne à votre agent de programmation les outils pour examiner un programme et expliquer son fonctionnement.

Vous connaissez déjà RE? Passer aux guides d'analyse →

Vous voulez aller plus loin? Lire le Blog →

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.

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

Qu’est-ce que la rétro-ingénierie ?

Comprendre le fonctionnement d’un logiciel en examinant le programme lui-même.

L'objectif: comprendre suffisamment bien une fonctionnalité pour explique-le, changez-le ou reconstruisez-le.

Par exemple : pourquoi la calculatrice donne-t-elle 220 pour 200 + 10% ?

Avant REA · Vous enquêtez vous-même

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.

Avec REA · Vous demandez à votre agent

Un seul prompt.

Posez votre question à l’agent avec des mots simples.

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. Modifiez la vitesse d'un jeu, puis revenez à la calculatrice et reconstruisez son bouton%.

Exemple 01 * Jeu de dinosaures de Chrome

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

Objectif
Reconstruisez le jeu avec vitesse réglable.
Pourquoi faire de l'ingénierie inverse?
Pour reproduire son accélération, il nous faut la règle dans le jeu de course: à quelle vitesse il démarre, combien il augmente et quand il s'arrête.

Jouer à la reconstruction

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.

REA a renvoyé

Le script en cours d'exécution dans la page. L'agent lit sa fonction de mise à jour et ses paramètres de vitesse, puis utilise cette règle dans un nouveau jeu.

Exemple d'invite · Jeu de 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.

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.

Ouvrir le laboratoire de vitesse →

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.
Voir le script, les vérifications et comment essayer l'analyse

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.

Nous avons vu pourquoi 200 + 10% donne 220. Récupérons maintenant les règles pour + et×, et essayons-les.

Objectif
Construisez une petite calculatrice qui gère les deux + et × correctement.
Pourquoi faire de l'ingénierie inverse?
Le même bouton utilise règles différentes après + et ×. Nous inspectons l'application installée pour trouver à quel numéro le pourcentage est appliqué.

Essayez le calcul

200 + 20

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

Illustration interactive de la règle du pourcentage inspecté.

REA a renvoyé

Une branche se divise par 100. L'autre multiplie également par le premier nombre. L'agent utilise les deux pour recréer le bouton%.

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

Exemple d'invite * Reconstruire le bouton %

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.

Résumé lisible du gestionnaire %
if (operation == multiply || operation == divide) {
  percent = current / 100;
} else {
  percent = current * previous / 100;
}
Avec +
Prenez 10% du premier nombre.10% of 200 = 20 → 200 + 20 = 220
Avec ×
Transformez 10% en 0,1.200 × 0.1 = 20

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.
Voir le vrai code et comment la réponse a été vérifiée
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

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é

Vous voulez aller plus loin ?

Dites à votre agent ce que vous voulez comprendre ou construire. Avec REA, vous pouvez travailler ensemble sur n'importe quoi à partir de clonage de ce site Web à reconstruire un jeu à partir de son exécutable.

Exemple d'invite * Site Web

Utilisez REA pour inspecter https://reverseengineeranything.app/. 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 →

Pour les étapes de configuration et d'analyse, choisissez votre cible:

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

Des questions ?

Lire la FAQ, discutez avec nous sur Discord , ou ouvrir un problème GitHub pour les bugs et les demandes de fonctionnalités.

Rejoindre la communauté

Partagez des enquêtes et obtenez de l'aide d'autres utilisateurs de REA sur Discord . Suivez REA sur X pour les mises à jour du projet.

Haut