REA
Serveur MCP et CLI sous licence MIT (avril 2026) qui pilote Ghidra, JADX ou Apktool pour qu'un agent de code analyse binaires, apps Electron, APK et .NET.
SFEIR AI · Publié le 23 octobre 2026
Un MCP, une CLI et des moteurs qu'il pilote
REA, pour « Reverse Engineer Anything », est un dépôt GitHub créé le 14 avril 2026 sous le pseudonyme morluto, publié sous licence MIT et écrit en TypeScript. Le README le résume en une ligne : « One MCP for reverse engineering across binaries, applications, and runtime behavior. » Il s'installe depuis le paquet npm rea-agents (npx rea-agents setup, Node.js 22, 24 ou 26) et s'enregistre comme serveur MCP auprès d'un agent de code, qui obtient alors des outils d'analyse qu'il appelle comme n'importe quel autre outil.
REA n'embarque aucun décompilateur. Pour le code natif, il pilote un moteur installé sur le poste, Hopper, Ghidra ou IDA, et en tire pseudocode, assembleur, chaînes, symboles et graphes d'appels. Pour Android, il s'appuie sur JADX headless (classes et méthodes décompilées), sur Apktool fourni par l'utilisateur (manifeste décodé, ressources) et sur adb pour les appareils ; pour les firmwares, sur Binwalk et Unblob sous Linux ; pour les sites web, sur un navigateur Chrome. L'analyse statique de JavaScript et d'applications Electron (modules, imports, source maps, routes, canaux IPC, add-ons natifs) et celle des assemblies .NET (métadonnées, instructions CIL, dépendances natives) sont faites maison et fonctionnent sans moteur natif. Le README liste aussi les métadonnées IL2CPP, Go, Rust, PyInstaller, SQLite, WASM et Flutter, et les captures réseau HAR et SAZ.
Le nombre d'outils exposés suit les versions : 170 outils MCP dans la 6.4.0 testée le 11 octobre 2026 par Ishank Choudhary, 207 outils, 6 prompts et 153 commandes CLI dans la 6.7.0 testée le 19 octobre par Javier Cañete Arroyo. La réponse à tools/list pèse plusieurs mégaoctets en profil complet (1,95 Mo en 6.4.0, 3,16 Mo en 6.7.0) ; le profil compact de la 6.7.0 la ramène à 219 Ko, là où celui de la 6.4.0 ne gagnait qu'environ 9 %.
Ce que l'agent reçoit : des preuves et des limites
Chaque résultat porte, selon le README, « the evidence and limitations behind each conclusion ». Sur une application Electron de 100 Mo (PI-Desktop 0.16.1), Ishank Choudhary a obtenu en 52 secondes un JSON de 59,2 Mo, 3 114 427 nœuds d'AST, zéro échec de parsing et 744 limitations déclarées, dont 365 liées au budget de résultat. Les comptes de fenêtres, de ponts contextBridge et de canaux IPC correspondaient à un grep manuel ; les deux scripts preload, chargés à travers un helper, sont passés inaperçus, et le rapport l'a dit à sa façon : « No graph entity matched the literal seed; this is not evidence that the feature is absent. »
Sur Slack 4.52.171, Connor Turland (Cyrus, 20 octobre 2026) a reçu 158 Mo de JSON : 529 fichiers JavaScript, 1 904 modules, 45 canaux IPC, 8 add-ons natifs et 43 004 éléments marqués inconnus. L'agent a reconstitué la logique du mode « Ne pas déranger » (un worker thread interroge l'add-on natif, tué après deux secondes sans réponse, résultat mis en cache cinq secondes) en une dizaine de minutes. Sur Obsidian 1.14.4, Aayush Tyagi (Analytics Vidhya, 18 octobre) a retrouvé les cinq pénalités du quick switcher en 7 min 8 s de travail actif pour 1,83 $, après que l'agent eut vérifié que la classe minifiée trouvée était bien celle qui s'exécute : « Finding plausible-looking scoring code and assuming it is the code that runs is the classic failure mode here. »
La sortie reste du pseudocode, de l'assembleur, des métadonnées et des graphes. Le fichier DISCLAIMER.md du dépôt prévient que « decompilation, reconstruction, heuristics, and AI-assisted analysis may be incomplete or incorrect » : une conclusion de REA se relit comme une hypothèse outillée, avec sa preuve à côté, jamais comme une certitude.
Local, mais pas privé de bout en bout
« Analysis runs locally », écrit le README : le binaire, l'archive asar ou l'APK ne quittent pas le poste. La FAQ du même fichier ajoute la phrase qui compte pour une DSI : « Your agent receives the tool results, and its model provider has its own data policy. » Les résultats d'outils, pseudocode, chaînes et extraits de code inclus, partent dans le contexte du modèle qui pilote l'agent. Avec un modèle hébergé, le fournisseur les voit ; avec un modèle à poids ouverts exécuté sur place, ils restent dans l'organisation. Le choix du modèle fait donc partie du périmètre de confidentialité de l'analyse, au même titre que le choix de la machine.
Ce que REA n'est pas
Le fichier SECURITY.md le dit sans détour : « This is not a sandbox and does not protect against malicious processes already running as the same operating-system user. Opening an untrusted binary delegates parsing and analysis to the selected local provider with that user's permissions. » Les ponts vers Hopper et Ghidra sont authentifiés par des jetons de capacité aléatoires propres à chaque session ; les sessions Ghidra tournent dans un projet temporaire isolé, avec des répertoires privés et des limites de CPU et de mémoire, supprimé à la fermeture. Les mainteneurs précisent que ces contrôles « limit accidental persistence and resource use; they do not make Ghidra a sandbox ». REA ne télécharge ni n'installe Ghidra ou Java, et « never invokes sudo ». L'analyse d'un binaire inconnu se confine donc par ailleurs, en machine virtuelle ou en conteneur.
REA ne restitue pas non plus le code source d'un programme. Le DISCLAIMER.md liste les usages visés (recherche en sécurité, analyse de malwares et d'incidents, divulgation coordonnée, CTF et formation, interopérabilité, préservation logicielle, audit de logiciels que l'on possède ou que l'on est autorisé à examiner) et ceux que le projet ne soutient pas : contourner « DRM, license checks, anti-cheat systems or other technical protection measures », tricher, contourner une authentification, « copying proprietary software or reproducing its protected code and assets ». Il rappelle qu'« obtaining source-like output or an analysis report does not grant rights to the original program, its data, or the generated output », et que les licences IDA Pro, Hopper ou JEB s'achètent à part.
Chronologie : d'avril à octobre 2026
Le dépôt est créé le 14 avril 2026 ; la première version npm, la 0.2.1, date du 12 juillet. La viralité démarre début octobre : les versions 6.1.0 et 6.2.0 sortent le 9 octobre, la 6.3.0 le 10, la 6.4.0 le 11, la 6.5.0 le 14 et la 6.7.0 le 18 octobre 2026, soit 33 versions publiées en trois mois. Le compteur d'étoiles GitHub suit : 76 998 le dimanche 11 octobre au matin (plus 25 793 en une journée, relevé d'Ishank Choudhary), environ 348 000 le 20 octobre (relevé de Connor Turland), 369 860 et 92 634 forks le 23 octobre 2026 d'après l'API GitHub. Les téléchargements npm tournaient autour de 100 000 par jour les 12, 16, 17 et 18 octobre.
La notoriété attire les imitations. Le 13 octobre 2026, l'issue #2424 signale un faux dépôt rea-tools/rea (organisation créée le 10 octobre) qui copiait le README et proposait une archive Windows de 82,6 Mo téléchargée 172 fois, détectée par Microsoft Defender comme Trojan:Script/Wacatac.B!ml et par 8 moteurs sur 45 sur VirusTotal. Le jour même, la PR #2429 ajoute au README et à ses 19 traductions un encadré sur les sources officielles : « Get REA from morluto/rea, rea.tools, or the rea-agents npm package. […] A similar repository name or copied README does not establish that a download is official. »
Ce que ça change pour une DSI
Le coût de la curiosité a changé d'échelle : lire le fonctionnement d'une application fermée prenait des jours à un spécialiste, il prend dix minutes à un agent outillé, et ce que l'on peut lire, d'autres peuvent le lire dans vos propres livrables. Trois conséquences pour une direction des systèmes d'information. Le code qui ne sort jamais de l'organisation, applicatifs internes et legacy, devient auditable à l'échelle, par vous d'abord : c'est l'axe de l'offre AI Cyber. Les binaires des fournisseurs deviennent vérifiables avant déploiement (télémétrie, secrets embarqués, dépendances), dans les limites du droit rappelées plus bas. Et les applications dont le code source est perdu redeviennent lisibles, à condition de séparer celui qui lit le décompilé de celui qui réécrit, ce que décrit la fiche clean-room.
Deux risques accompagnent l'outil. Un binaire piégé peut contenir des chaînes d'injection de prompt qui trompent l'agent sur ce que fait le programme, cas documenté par Brian Crawford et Patrick McClure (arXiv, 29 mai 2026) avec GhidraMCP en montage d'exemple. Et le passage d'un agent sous le même compte utilisateur lui donne accès aux sorties de REA : la documentation d'installation précise qu'un profil séparé (CLAUDE_CONFIG_DIR pour Claude Code) ne suffit pas, et qu'un compte ou un conteneur distinct doit porter les restrictions de fichiers et de réseau.
Le cadre juridique, en bref
En Europe, la directive 2009/24/CE et sa transposition à l'article L122-6-1 du Code de la propriété intellectuelle autorisent l'acquéreur légitime d'un logiciel à en observer, étudier et tester le fonctionnement, et à le décompiler pour l'interopérabilité sous conditions, toute clause contraire étant nulle. La CJUE a jugé en 2012 (C-406/10) que ni la fonctionnalité ni le format de fichiers ne sont protégés par le droit d'auteur, et en 2021 (C-13/20) que la décompilation pour corriger une erreur est permise. L'interdit tient en une ligne du même article : produire un logiciel « dont l'expression est substantiellement similaire ». Le DISCLAIMER de REA ajoute que la possession d'un fichier ou l'accès à un point de débogage « does not by itself establish permission for every operation ». Les détails, les exceptions et le cas ArtCraft sont dans clean-room contre rétro-ingénierie et la fiche rétro-ingénierie logicielle ; ces éléments sont des points d'attention, pas un conseil juridique.
La position SFEIR
SFEIR utilise les agents de rétro-ingénierie dans deux cadres. En sécurité, sur le code que l'organisation possède, pour défragiliser applicatifs internes et legacy en boîte blanche, avec des modèles à poids ouverts exécutés sur place quand le code ne doit pas sortir : c'est l'offre AI Cyber. En modernisation, pour retrouver les règles métier d'une application sans source et les respécifier avant toute réécriture, selon la démarche décrite dans modernisation du legacy. Dans les deux cas, l'analyse tourne confinée, le modèle est choisi pour la confidentialité des résultats, et la lecture du décompilé reste séparée de l'écriture du code cible.
Questions fréquentes
Qu'est-ce que REA (Reverse Engineer Anything) ?
Un serveur MCP et une CLI sous licence MIT, créés le 14 avril 2026 sous le pseudonyme morluto, qui donnent à un agent de code des outils de rétro-ingénierie : pilotage de Ghidra, Hopper ou IDA pour le code natif, JADX et Apktool pour Android, analyse statique maison pour JavaScript, Electron et .NET. Le paquet npm s'appelle rea-agents ; sa version 6.7.0 du 18 octobre 2026 expose 207 outils.
REA restitue-t-il le code source d'un programme ?
Non. Pour le code natif, il renvoie du pseudocode et de l'assembleur produits par le moteur choisi ; pour .NET, des métadonnées et des instructions CIL, sans charger ni exécuter l'assembly ; pour Electron, des graphes de modules et de canaux IPC. Chaque résultat porte ses preuves et ses limites, et le DISCLAIMER du projet rappelle que l'analyse « may be incomplete or incorrect ».
L'analyse avec REA reste-t-elle confidentielle ?
Le fichier analysé reste sur le poste, mais les résultats d'outils partent dans le contexte du modèle qui pilote l'agent. Le README le dit : « Your agent receives the tool results, and its model provider has its own data policy. » Pour un code qui ne doit pas sortir, le modèle s'exécute sur place ou chez un hébergeur souverain.
REA est-il un sandbox ?
Non, et le projet l'écrit dans SECURITY.md : ouvrir un binaire non fiable confie son analyse au moteur local avec les droits de l'utilisateur. Les ponts authentifiés et les projets Ghidra temporaires limitent la persistance accidentelle, sans isoler la machine. Un binaire inconnu s'analyse dans une machine virtuelle ou un conteneur dédié.
Combien de personnes utilisent REA ?
Le dépôt comptait 76 998 étoiles GitHub le 11 octobre 2026 et 369 860 le 23 octobre, avec 92 634 forks, d'après l'API GitHub ; les téléchargements npm tournaient autour de 100 000 par jour mi-octobre. Ces compteurs bougent chaque jour et ne disent rien du nombre d'utilisateurs réels.
Sources
- GitHub, dépôt morluto/rea : création le 14 avril 2026, licence MIT, TypeScript, 369 860 étoiles et 92 634 forks relevés par l'API le 23 octobre 2026 · 2026-10-23
Reverse engineer anything with agents, from app behavior down to native binaries.
- README de REA : « One MCP for reverse engineering », analyse locale, preuves et limitations, tableau des cibles et moteurs, FAQ sur la politique de données du fournisseur de modèle, encadré sur les sources officielles ajouté le 13 octobre 2026 (PR #2429) · 2026-10-23
Your agent receives the tool results, and its model provider has its own data policy.
- SECURITY.md de REA : jetons de capacité par session, sockets Unix, projets Ghidra temporaires, « not a sandbox », pas de téléchargement de Ghidra ni de Java, jamais de sudo · 2026-10-23
This is not a sandbox and does not protect against malicious processes already running as the same operating-system user.
- DISCLAIMER.md de REA : usages visés, usages non soutenus, limites de l'analyse, absence de droits sur le programme d'origine ou la sortie générée · 2026-10-23
Obtaining source-like output or an analysis report does not grant rights to the original program, its data, or the generated output.
- docs/installation.md de REA : profil séparé via CLAUDE_CONFIG_DIR, et passage sur la séparation clean-room (compte ou conteneur distinct) · 2026-10-23
A separate account or container must enforce those restrictions.
- Registre npm, paquet rea-agents : 0.2.1 publiée le 12 juillet 2026, 6.7.0 (latest) le 18 octobre 2026 à 08:12 UTC · 2026-10-23
- Issue #2424 (Orb-Eater, 13 octobre 2026) : faux dépôt rea-tools/rea, archive rea-x64.7z de 82,6 Mo téléchargée 172 fois, détections Defender et VirusTotal 8/45 · 2026-10-13
- Ishank Choudhary, HackerNoon : test de REA 6.4.0 sur PI-Desktop 0.16.1 (app.asar de 100 Mo) le 11 octobre 2026 ; 170 outils, 744 limitations, deux preloads manqués, 76 998 étoiles le 11 octobre · 2026-10-14
No graph entity matched the literal seed; this is not evidence that the feature is absent.
- Aayush Tyagi, Analytics Vidhya : REA sur le quick switcher d'Obsidian 1.14.4, cinq pénalités retrouvées, 7 min 8 s de travail actif, 1,83 $ · 2026-10-18
Finding plausible-looking scoring code and assuming it is the code that runs is the classic failure mode here.
- Javier Cañete Arroyo (Jacar Systems) : REA 6.7.0 sous Docker arm64 avec Ghidra 12.1.4, Hyper 3.4.1, 207 outils MCP, tools/list de 3 158 352 octets en profil complet et 219 211 en profil compact · 2026-10-19
- Connor Turland, Cyrus : REA sur Slack 4.52.171, 158 Mo de JSON, 45 canaux IPC, 43 004 inconnus, logique « Ne pas déranger » reconstituée, environ 348 000 étoiles le 20 octobre 2026 · 2026-10-20
makes any clean-room argument pretty hard to defend
- Brian Crawford, Patrick McClure, « Investigating Detection and Obfuscation of Prompt Injection Attacks Against Software Reverse Engineering AI Agents », arXiv:2605.30677 · 2026-05-29
- Légifrance, article L122-6-1 du Code de la propriété intellectuelle : observation, étude et test du logiciel, décompilation pour l'interopérabilité, nullité des clauses contraires
Toute stipulation contraire aux dispositions prévues aux II, III et IV du présent article est nulle et non avenue.
REA dans vos projets
Échanger avec SFEIRArticles liés
REA en trois schémas : architecture, fonctionnement et usage
Comment un développeur installe REA, ce qui se passe quand son agent l'appelle, et comment s'en servir pour comprendre une fonctionnalité avant de la déboguer ou de la reproduire. Trois schémas, la doc officielle du dépôt et les tests publics d'octobre 2026.
Lire une sortie REA : preuves, pseudocode et hallucinations
Une sortie REA mêle preuves localisées, déductions et inconnues. Méthode de revue en trois états, illustrée par les tests publics d'octobre 2026 (744 limitations sur une app Electron, 43 004 inconnues sur Slack), et passage au golden master.
Les limites réelles de REA : taille des sorties, coût, couverture
59,2 Mo de sortie pour une app Electron de 100 Mo, un catalogue d'outils de près de 2 Mo en 6.4.0, deux preloads manqués : les limites de REA mesurées par les tests indépendants d'octobre 2026, et ce que la 6.7.0 a changé au 20 octobre.
Ce qu'une analyse REA révèle d'une application Electron
Fenêtres, preloads, contextBridge, canaux IPC, add-ons natifs : ce que REA reconstruit d'une application Electron sans la lancer, ce qu'il rate, et ce que les tests publics d'octobre 2026 (100 Mo, Slack 4.52.171, Hyper 3.4.1) mesurent vraiment.
Analyser des assemblies .NET avec REA
REA lit les assemblies .NET sans les charger : métadonnées, instructions CIL, dépendances natives, comparaison de builds. Il n'émet pas de C# et renvoie NativeAOT vers Ghidra. Ce qu'un patrimoine .NET Framework sans source maîtrisé peut en tirer.
REA et Android : auditer une APK avec JADX et Apktool
Manifeste, permissions, classes, méthodes décompilées, SDK embarqués : ce que REA lit d'une APK via JADX headless et Apktool, comment l'utiliser pour auditer une application mobile tierce avant de l'autoriser, et où l'analyse statique s'arrête.
REA, GhidraMCP ou ida-pro-mcp : quel MCP de rétro-ingénierie choisir
REA orchestre plusieurs moteurs et formats, GhidraMCP et ida-pro-mcp branchent un agent sur un seul décompilateur. Critères de choix en entreprise : couverture, coût des moteurs (IDA Pro Essential à partir de 1 099 €/an au 23/10/2026), droits d'écriture et poids dans le contexte.
Déployer REA en entreprise : versions, profils, conteneurs
REA a publié une dizaine de versions en deux semaines d'octobre 2026 et expose 207 outils à l'agent en 6.7.0 (18 octobre). L'usage en entreprise demande une politique : version épinglée, profil séparé, conteneur pour les cibles inconnues, modèle choisi selon la sensibilité.
REA n'est pas un sandbox : confiner l'analyse d'un binaire inconnu
La politique de sécurité de REA le dit en toutes lettres : l'outil n'est pas un bac à sable. Ouvrir un binaire inconnu le fait analyser par Ghidra ou Hopper avec vos droits. Ce que protège le pont authentifié, ce qu'il ne protège pas, et comment confiner l'analyse.
Faux dépôts REA et cheval de Troie : le risque supply chain d'un outil viral
Le 13 octobre 2026, un faux dépôt rea-tools/rea distribuait un exécutable Windows détecté comme cheval de Troie, téléchargé 172 fois. Les faits de l'incident, la réponse du projet en moins de 24 heures, et les vérifications à faire avant d'installer un serveur MCP.
Rétro-ingénierie par agents : ce que ça change pour les équipes sécurité
REA a fait de la rétro-ingénierie une session d'agent supervisée : 76 998 étoiles GitHub le 11 octobre 2026, 369 860 le 23. Ce que ça change pour une équipe sécurité : la boîte blanche devient l'avantage du défenseur, le confinement devient obligatoire, et le code interne passe en premier.
REA, ArtCraft et la fin de l'avantage du code fermé
En octobre 2026, REA a mis les outils d'un rétro-ingénieur entre les mains de n'importe quel agent, et ArtCraft a réécrit des applications Adobe en Rust. Le binaire livré au client ne protège plus la logique d'un produit. Ce qui la protège encore, selon nous.
Clean-room ou reverse engineering : méthode et risque juridique à l'ère des agents
Rétro-ingénierie et clean-room ne se confondent pas en droit. Ce que la directive 2009/24/CE, le Code de la propriété intellectuelle et la CJUE autorisent, et pourquoi un agent qui lit le décompilé puis réécrit fragilise la défense.
Applications legacy sans code source : comprendre avant de réécrire
Un binaire, une base de données et des utilisateurs qui connaissent le comportement : c'est souvent tout ce qui reste d'une application critique. Ce que la rétro-ingénierie par agents change à la rétro-documentation, ce qu'elle ne change pas, et la méthode pour réécrire sans perdre de règles.