SFEIR

REA en trois schémas : architecture, fonctionnement et usage

REA en trois schémas : architecture, fonctionnement et usage

REA (Reverse Engineer Anything) donne à un agent de code les outils d'un rétro-ingénieur. Ce n'est ni un décompilateur ni un service en ligne : c'est un serveur MCP et une CLI, publiés sous licence MIT, qui tournent sur la machine du développeur et pilotent des outils existants. Trois schémas suffisent à comprendre l'essentiel : ce qu'on installe et où, ce qui se passe quand l'agent appelle REA, et la méthode pour comprendre une fonctionnalité avant de la déboguer ou de la reproduire.

Le dépôt morluto/rea, créé le 14 avril 2026, résume son ambition en une ligne : « One MCP for reverse engineering across binaries, applications, and runtime behavior »1. Il comptait 76 998 étoiles le 11 octobre au matin selon un testeur5, et 369 860 le 23 octobre d'après l'API GitHub. Le paquet npm rea-agents en était à la version 6.7.0, publiée le 18 octobre4.

Schéma 1 : ce qu'un développeur installe, et où

Côté développeur, l'installation tient en une commande : npx rea-agents setup. Elle ne télécharge pas un logiciel de plus dans un coin du poste ; elle déclare REA comme serveur MCP auprès de l'agent que vous utilisez déjà (Claude Code, Codex, Cursor ou tout client qui accepte un serveur MCP local) et installe une skill, c'est-à-dire des instructions d'enquête que l'agent lira. Pour Claude Code, la documentation précise que l'enregistrement va dans ~/.claude.json et la skill dans ~/.claude/skills, donc pour tous les projets ouverts avec ce client2.

Trois réflexes viennent de la même documentation. D'abord, --dry-run renvoie un plan en lecture seule avant toute écriture, et le setup sauvegarde la configuration existante. Ensuite, pour réserver REA à un usage précis, un profil séparé via la variable CLAUDE_CONFIG_DIR évite de l'exposer à tous vos projets. Enfin, le setup épingle la version exacte installée dans l'enregistrement MCP2.

Reste la question des moteurs. REA analyse lui-même le JavaScript, les applications Electron et les assemblies .NET, sans rien installer d'autre. Pour le code natif, il lui faut Ghidra, IDA ou Hopper, que vous installez vous-même, en acquérant la licence d'IDA ou de Hopper ; pour Android, JADX et un JDK complet ; pour le firmware, Binwalk ou Unblob sous Linux ; pour un site web, un navigateur de la famille Chrome1. Sans moteur natif, REA s'arrête à l'identification du format : le test de HackerNoon obtient un provider_unavailable sur un binaire Rust5.

Architecture de REA vue par un développeur : ce qu'on installe et où passent les données À gauche, le développeur lance npx rea-agents setup, d'abord en dry-run. La commande enregistre le serveur MCP REA dans la configuration de l'agent de code et installe une skill. Dans la machine du développeur, l'agent de code dialogue en MCP avec le serveur REA local, qui pilote des moteurs installés par l'utilisateur : Ghidra, IDA ou Hopper pour le natif, JADX et un JDK pour Android, Binwalk ou Unblob pour le firmware, Chrome pour le web ; le JavaScript, Electron et .NET sont analysés sans moteur. La cible reste sur la machine. À droite, hors de la machine, le fournisseur du modèle reçoit les résultats d'outils que l'agent lui transmet. LE DÉVELOPPEUR npx rea-agents setup 1. --dry-run : lire le plan 2. setup : MCP + skill (version épinglée) 3. installer les moteurs utiles (licences à vous) 4. redémarrer l'agent Option : profil séparé CLAUDE_CONFIG_DIR MACHINE DU DÉVELOPPEUR Agent de code Claude Code, Codex, Cursor… + skill REA MCP (local) Serveur REA Analyse statique JS, Electron, .NET intégrée MOTEURS FOURNIS PAR L'UTILISATEUR Natif Ghidra, IDA, Hopper Android JADX + JDK, Apktool Firmware Binwalk, Unblob (Linux) Web Navigateur Chrome Cible analysée : reste sur la machine CLOUD Fournisseur du modèle reçoit les résultats d'outils, selon sa propre politique de données Un modèle local garde tout sur la machine.
L'installation déclare REA auprès de l'agent existant. La cible ne quitte pas la machine, mais les résultats d'outils partent vers le fournisseur du modèle, sauf modèle local.

Le schéma montre la frontière que beaucoup ratent. La FAQ du projet est explicite : « REA analyzes targets locally. Your agent receives the tool results, and its model provider has its own data policy »1. Le binaire ne part pas ; ce que l'agent en a extrait, si. Analyser un code sensible avec un modèle hébergé reste donc une décision de conformité, que l'on traite comme pour n'importe quel envoi de code à un fournisseur.

Schéma 2 : ce qui se passe quand l'agent appelle REA

Vous posez une question à votre agent ; l'agent choisit un outil REA et lui passe le chemin de la cible. REA identifie le format, puis l'oriente vers le bon traitement. Pour un bundle JavaScript ou une assembly .NET, il lit les fichiers sans exécuter l'application. Pour un binaire natif, il ouvre une session de pont vers Ghidra, IDA ou Hopper. Pour une APK, il passe par JADX. Pour un site ou un processus, il peut observer l'exécution, et c'est là que la prudence s'impose : la capture « runs or interacts with the selected target using your user permissions »1.

Chaque réponse revient sous forme de preuves : un constat, l'endroit où il a été trouvé, et la liste de ce que l'outil n'a pas pu résoudre. Le README le promet en une phrase, « results include the evidence and limitations behind each conclusion »1, et les tests indépendants le confirment : 744 limitations explicites sur une application Electron de 100 Mo5, une trace qui répond « this is not evidence that the feature is absent » plutôt que d'inventer5.

Fonctionnement de REA : de la question de l'agent aux preuves L'agent appelle un outil REA avec le chemin d'une cible locale. REA identifie le format puis oriente la cible vers l'un de quatre traitements : analyse statique intégrée pour JavaScript, Electron, .NET, Go, Rust ou PyInstaller, sans exécution ; pont authentifié par jeton vers Ghidra, IDA ou Hopper pour le natif ; outils externes comme JADX, Apktool, Binwalk ou Unblob ; capture à l'exécution d'un site ou d'un processus, qui lance la cible avec les droits de l'utilisateur. Tout converge vers une réponse en preuves : constat, localisation, limitations et inconnues, renvoyée à l'agent. Un bandeau rappelle que REA n'est pas un sandbox. Agent de code appel d'outil + chemin REA identifie le format STATIQUE INTÉGRÉ JavaScript, Electron, .NET, Go, Rust, PyInstaller… aucune exécution PONT NATIF Ghidra, IDA, Hopper pseudocode, assembleur, symboles jeton de session OUTILS EXTERNES JADX, Apktool (APK) Binwalk, Unblob (firmware) statique À L’EXÉCUTION site web, processus, trafic réseau lance la cible avec vos droits Réponse en preuves constat · localisation · limitations · inconnues REA N'EST PAS UN SANDBOX : UN BINAIRE INCONNU S'OUVRE EN VM OU EN CONTENEUR
REA oriente chaque cible vers l'analyse statique, un moteur natif, un outil externe ou une capture à l'exécution, et rend toujours des preuves assorties de leurs limites.

Le pont vers Ghidra ou Hopper est authentifié par un jeton aléatoire par session et un socket réservé à l'utilisateur courant. La politique de sécurité du projet en fixe la portée sans détour : « This is not a sandbox and does not protect against malicious processes already running as the same operating-system user »3. Ouvrir un binaire inconnu, c'est le faire analyser par le moteur avec vos permissions. Nous détaillons le confinement dans REA n'est pas un sandbox.

Schéma 3 : comprendre une fonctionnalité pour la déboguer ou la reproduire

Le README présente REA par son cas d'usage : voir une fonctionnalité dans une application, comprendre comment elle marche, « show the evidence, and build a version for your project »1. La méthode qui tient la route commence avant l'agent. Le test d'Analytics Vidhya sur le sélecteur rapide d'Obsidian l'illustre : les auteurs ont écrit leur prédiction du classement avant de lancer l'enquête, ce qui a rendu la sortie vérifiable ; avant de faire confiance à la trace, l'agent a contrôlé que la classe du sélecteur héritait bien de celle qui contenait le calcul. Sept minutes de travail actif, 1,83 dollar, et une formule confrontée à 24 classements relevés à la main6.

Utiliser REA pour comprendre une fonctionnalité, puis la déboguer ou la reproduire Une boucle en quatre étapes : poser une question étroite et écrire sa prédiction ; l'agent interroge REA et suit la trace ; lire les preuves en séparant ce qui est vu, inféré et inconnu ; vérifier en recoupant avec grep, les tests ou le source disponible. Si la vérification échoue, on revient à la question. Une fois vérifiée, la compréhension mène à deux sorties : déboguer, c'est corriger son propre logiciel et prouver le correctif par un test ; reproduire, c'est rédiger une spécification sans code protégé, puis réimplémenter dans un environnement séparé qui n'a pas accès à REA ni à la cible, avec des tests de non-régression. Le tout se fait dans un cadre autorisé et confiné. 1 Question étroite une fonction, un format + prédiction écrite 2 Enquête REA l'agent inspecte et suit la trace 3 Lire les preuves vu / inféré / inconnu jamais l'un pour l'autre 4 Vérifier grep, tests, héritage, source ÉCART ? ON REFORMULE LA QUESTION compris DÉBOGUER Votre logiciel, ou un composant dont vous êtes acquéreur légitime Reproduire le défaut par un test Corriger, prouver le correctif Garder la trace des preuves REPRODUIRE Spécification du comportement, sans code protégé BARRIÈRE DOCUMENTÉE Réimplémenter dans un compte ou un conteneur sans accès à REA ni à la cible Tests de non-régression (golden master) CADRE : CIBLE QUE VOUS ÊTES AUTORISÉ À EXAMINER · ANALYSE CONFINÉE
La compréhension est une boucle de vérification. Elle débouche soit sur un correctif prouvé par un test, soit sur une spécification réimplémentée derrière une barrière clean-room.

Les deux sorties n'ont pas le même statut. Déboguer son propre logiciel, ou un composant dont on est acquéreur légitime, relève d'un cadre connu : en droit européen, la Cour de justice a admis en 2021 la décompilation pour corriger des erreurs affectant le fonctionnement, dans la mesure nécessaire et dans le respect des conditions contractuelles, l'éditeur pouvant se réserver cette correction. Reproduire une fonctionnalité d'un logiciel tiers est un autre sujet. Le droit d'auteur ne protège pas la fonctionnalité en elle-même, mais son code et ses éléments graphiques, et d'autres protections peuvent jouer (brevet, secret des affaires, contrat, concurrence déloyale) ; et un agent qui lit le décompilé puis écrit la réimplémentation fragilise toute défense clean-room. La documentation de REA le dit elle-même : pour une vraie séparation, l'implémentation doit se faire dans un environnement qui ne peut lire ni REA, ni la cible, ni les sorties d'analyse, « A separate account or container must enforce those restrictions »2. Nous détaillons ces points d'attention, qui ne sont pas un conseil juridique, dans clean-room ou reverse engineering.

Le disclaimer du projet ferme la porte aux usages illégitimes : pas d'aide pour contourner un DRM, une vérification de licence ou un anti-triche, ni pour « copying proprietary software or reproducing its protected code and assets »7. Il rappelle aussi que la décompilation assistée par IA « may be incomplete or incorrect », d'où l'étape 4 du schéma.

Ce que ces trois schémas changent pour une équipe

Le premier schéma dit où placer REA : dans un profil dédié, avec une version épinglée, et avec un choix de modèle cohérent avec la sensibilité de la cible. Le deuxième dit où se trouve le risque : dans la capture à l'exécution et dans l'ouverture de binaires inconnus, pas dans la lecture statique de votre propre code. Le troisième dit où se trouve la valeur : une compréhension vérifiée, transformée en test, plutôt qu'une affirmation d'agent prise pour argent comptant. Les limites mesurées en octobre (sorties de plusieurs centaines de mégaoctets, catalogue de 207 outils en 6.7.08, couverture partielle sur le code dynamique) sont détaillées dans les limites réelles de REA ; la lecture d'une sortie, dans lire une sortie REA.

Questions fréquentes

REA fonctionne-t-il avec n'importe quel agent ?

Avec tout agent qui accepte un serveur MCP local, selon la FAQ du projet. Le setup configure automatiquement les clients pris en charge ; les autres s'enregistrent à la main.

Faut-il acheter une licence pour utiliser REA ?

REA est sous licence MIT. Les moteurs commerciaux qu'il pilote, comme IDA Pro ou Hopper, restent à acquérir légalement ; Ghidra est gratuit. Le JavaScript, Electron et .NET ne demandent aucun moteur.

Mon binaire est-il envoyé dans le cloud ?

Non, l'analyse est locale. En revanche, les résultats d'outils que l'agent lit partent vers le fournisseur du modèle, selon sa politique de données. Pour un code sensible, utilisez un modèle local ou un fournisseur dont le contrat convient.

Par quoi commencer ?

Par un programme que vous avez écrit vous-même, dont vous connaissez le source : c'est le seul cas où chaque réponse de l'agent se vérifie immédiatement. Ensuite seulement, un composant que vous êtes autorisé à examiner, en environnement isolé.

REA abaisse le coût de la compréhension d'un logiciel ; il n'en supprime ni le cadre ni la vérification. Notre offre AI Cyber aide les équipes à mettre en place ces usages, du confinement des agents à la défragilisation du code existant en boîte blanche.

Sources

  1. morluto/rea, README (cibles, FAQ, showcases) — github.com/morluto/rea, consulté le 23 octobre 2026.
  2. morluto/rea, Installation and setup (dry-run, sauvegardes, profil séparé, séparation clean-room) — docs/installation.md, consulté le 23 octobre 2026.
  3. morluto/rea, Security Policy — SECURITY.md, consulté le 23 octobre 2026.
  4. npm, paquet rea-agents (version 6.7.0 du 18 octobre 2026) — npmjs.com, consulté le 23 octobre 2026.
  5. Ishank Choudhary, I Tested REA, GitHub's Viral Reverse Engineering Tool, on a Real Electron App — hackernoon.com, 14 octobre 2026 (tests du 11 octobre, REA 6.4.0).
  6. Aayush Tyagi, Reverse Engineer Anything (REA): Can AI Really Crack Closed Code? — analyticsvidhya.com, 18 octobre 2026.
  7. morluto/rea, Disclaimer — DISCLAIMER.md, consulté le 23 octobre 2026.
  8. Javier Cañete Arroyo (Jacar Systems), REA: ingeniería inversa con tu agente de código, probada con Ghidra y Electron — jacar.es, 19 octobre 2026 (rea-agents 6.7.0).

Cadrer l'usage de la rétro-ingénierie par agents dans vos équipes

Découvrir l'offre AI Cyber
SFEIR AI Auteur

Articles similaires