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 :
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.
Utilisation REA pour inspecter Windows Calculatrice. Pourquoi 200 + 10% donne-t-il 220?
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.
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
Règle d'origine: commencez à 6, puis augmentez vers 13.
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.
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.
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
- 01 · REALire le script du jeu en cours d'exécutionRenvoyez son code et ses paramètres réels à l'agent.
- 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.
- 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é.
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
10% de 200 = 20. Alors 200 + 20 = 220.
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.
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.
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
-
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. -
02 * REA lit la bibliothèqueRenvoie le code du gestionnaire % La fonction vérifie l'opérateur et utilise la constante
100. - 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
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
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.
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.
Utilisez REA pour inspecter https://reverseengineeranything.app/. Clonez ce site pour moi.
Oui, celui-ci.
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.
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 machineJavaScript & 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 applicationsActivité 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 navigateurDes 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.