REA : rétro-ingénierie de tout avec des agents autonomes, du comportement des applications aux binaires natifs

Published · AI Daily — AI-assisted deep research, methodology & disclosure

REA est un serveur MCP open source (MIT), installé par npx rea-agents setup pour Claude Code ou Codex. Il pilote Hopper, Ghidra ou IDA pour les binaires natifs et couvre Electron, .NET, APK et firmwares. L'analyse est locale, et chaque conclusion porte preuves et limites.

Tout développeur connaît cette frustration : découvrir une fonctionnalité admirable sans avoir aucun moyen de savoir comment elle a été conçue. Le code source est fermé, le binaire est dépouillé de ses symboles, l'application Electron est livrée dans une seule archive ASAR. La réponse classique consistait à confier le travail à un rétro-ingénieur, qui passait des jours, voire des semaines, à lire un désassembleur ligne après ligne. REA, pour Reverse Engineer Anything, est un projet open source hébergé sur GitHub qui veut changer cette façon de faire. Son idée tient en une phrase : un seul serveur MCP qui donne à votre agent des outils de rétro-ingénierie couvrant les binaires natifs, les applications et le comportement à l'exécution. Il est sous licence MIT, distribué par le paquet npm rea-agents, et son README annonce plus de 60 000 étoiles GitHub ainsi qu'une documentation en dix-neuf langues. Pour un outil à la frontière de la recherche en sécurité et du génie logiciel quotidien, cet intérêt en dit long sur le besoin réel.

Le fonctionnement de REA n'a rien de mystérieux. On lance npx rea-agents setup, on choisit les agents utilisés, on relit les modifications proposées et on les approuve. L'installation enregistre le serveur MCP de REA, ajoute les instructions de flux de travail correspondantes et sauvegarde la configuration existante. Le README cite Claude Code, Codex, Cursor, Gemini CLI et Grok Build, et précise que tout agent compatible avec les serveurs MCP locaux peut s'en servir. Après un redémarrage, on formule sa demande en langage naturel : comprendre comment fonctionne la recherche dans telle application, montrer les preuves, puis construire une fonction similaire pour mon projet. L'agent appelle REA par MCP pour inspecter la cible et suivre le code concerné. REA renvoie des constats accompagnés de leurs preuves : code, références et zones encore inconnues. L'agent peut alors poser des questions complémentaires, expliquer le comportement, ou écrire et tester une implémentation. Les mêmes flux existent en ligne de commande, si bien qu'un humain peut reproduire ce que l'agent a fait.

Ce qui donne du poids au projet, c'est l'étendue des cibles couvertes. D'après le tableau du README, REA fournit pour les binaires natifs du pseudo-code, de l'assembleur, des chaînes, des symboles, des appels et des références, en s'appuyant sur Hopper, Ghidra ou IDA. Pour les applications JavaScript et Electron, il reconstitue les modules, les imports, les source maps, les routes, l'IPC et les liens avec les modules natifs ; cette partie ne demande que Node.js, sans moteur d'analyse natif. Il examine aussi les sites web, les captures réseau HAR, les assemblages .NET jusqu'aux métadonnées et aux instructions CIL, les APK et appareils Android, les firmwares, le bytecode EVM, la disposition d'ELF hors ligne et les plantages Linux enregistrés. Un mode dédié au comportement des processus capture la sortie du terminal, les interactions, le code de sortie et les observations sur le système de fichiers, puis compare plusieurs exécutions. Concrètement, une seule session d'agent peut suivre une fonction Electron depuis le moteur de rendu jusqu'au processus principal, puis descendre dans l'assembleur d'un module natif. Un travail qui obligeait à jongler entre cinq ou six outils sans lien est désormais réuni dans un seul catalogue.

Les trois études de cas du README montrent la portée de l'approche. Dans le cas de DX-Ball, l'enquête part d'un appel sonore, suit une fonction qui convertit une position en panoramique, inspecte les instructions et transforme un pseudo-code incomplet en C. Le README indique que la reconstruction passe 3 205 cas issus de l'x86 d'origine et reproduit les 63 octets de la fonction compilée. Dans le cas de Notion, l'agent trouve l'API de presse-papiers du moteur de rendu, la suit à travers le preload et l'IPC jusqu'au processus principal, puis examine le format riche du presse-papiers. Dans le cas de TH04, il lit les instructions 16 bits du jeu PC-98 d'origine, retrouve les calculs d'angle des tirs fixes et visés, et compare le C++ reconstruit avec la sortie du compilateur de l'époque. La difficulté varie, mais le schéma est identique : la conclusion ne vient pas de l'impression du modèle sur ce que le code fait probablement. Elle repose sur des preuves au niveau des instructions qu'une personne peut revérifier, et sur des tests qui confirment le résultat. C'est le principe que le projet répète le plus : chaque conclusion porte ses preuves et ses limites.

Du point de vue du secteur, REA illustre une tendance à suivre. Les outils de spécialistes sont enveloppés dans un protocole que les agents savent appeler : le modèle de langage s'occupe de la planification et de l'explication, tandis que des moteurs d'analyse déterministes recueillent les preuves. Le README est explicite sur la localité : l'analyse s'exécute sur votre machine, votre agent reçoit les résultats des outils, et l'usage qu'en fait le fournisseur du modèle dépend de sa propre politique de données. Cette répartition réduit le risque qu'un modèle devine le comportement d'un binaire, et facilite l'audit par une équipe de sécurité. Il faut toutefois rester prudent. La capture à l'exécution lance ou manipule la cible avec vos permissions d'utilisateur ; lisez donc le guide correspondant avant de l'utiliser. Le projet précise aussi qu'il sert à la recherche légale en rétro-ingénierie, que l'autorisation et le respect de la loi relèvent de l'utilisateur, et qu'il n'a émis aucune cryptomonnaie ni aucun jeton. Pour les développeurs et les équipes de sécurité, la bonne démarche consiste à l'essayer une fois sur un logiciel dont vous détenez les droits, à vérifier que la chaîne de preuves résiste à votre propre relecture, puis seulement à décider de l'intégrer à votre quotidien.

Sources

FAQ

Qu'est-ce que REA et comment le connecter à mon agent ?

REA est un serveur MCP open source qui donne aux agents des outils de rétro-ingénierie pour les binaires natifs, les applications JavaScript et Electron, les sites web, les assemblages .NET, les APK, les firmwares et plus encore. Lancez npx rea-agents setup, choisissez vos agents, relisez et approuvez les changements, puis redémarrez l'agent. L'installation enregistre le serveur MCP, ajoute les instructions de flux de travail et sauvegarde la configuration existante.

Faut-il Hopper, Ghidra ou IDA pour utiliser REA ?

Pas toujours. L'analyse native approfondie exige l'un des trois. L'installation peut ajouter Hopper après votre accord, tandis que Ghidra et IDA utilisent vos installations existantes. L'analyse statique de JavaScript et de .NET n'a besoin d'aucun moteur natif, seulement de Node.js et npm dans une version prise en charge.

Mon application est-elle envoyée quelque part, et à quoi faire attention ?

Selon le README, REA analyse les cibles en local. Votre agent reçoit les résultats des outils, et la politique de données du fournisseur du modèle s'applique ensuite. La capture à l'exécution lance ou manipule la cible avec vos permissions d'utilisateur ; lisez d'abord le guide correspondant. Le projet vise la recherche légale, et l'autorisation comme la conformité relèvent de vous.