REA (Reverse Engineer Anything) : ce que c'est, comment l'installer et ce qu'il peut (et ne peut pas) faire

REA est l'outil open source qui a explosé sur GitHub cet automne. Nous avons installé la version 6.8.0 et mené un vrai test sur le code de notre propre site — voici ce qu'il a réellement trouvé, ce qu'il a manqué, et les règles de sécurité à connaître avant de l'essayer.

1. Ce qu'est REA — et pourquoi il a explosé d'un coup

REA signifie Reverse Engineer Anything (« rétro-ingénierie de n'importe quoi »). C'est un outil gratuit et open source (licence MIT) publié par l'utilisateur GitHub morluto. Techniquement, c'est un serveur MCP doublé d'un outil en ligne de commande qui relie des outils professionnels de rétro-ingénierie — Ghidra, IDA, Hopper, JADX et d'autres — à des agents de codage IA comme Claude Code, Codex, Cursor et Gemini CLI. Vous posez une question à votre agent, du genre « comment fonctionne la recherche dans cette application? », REA inspecte la cible, et l'agent reçoit des constats structurés, avec preuves et limites déclarées. REA peut examiner des binaires natifs, des applications JavaScript et Electron, des assemblages .NET, des APK Android, des micrologiciels, des sites web et plus encore. L'analyse statique s'exécute localement, sur votre machine.

Le dépôt a été créé en avril 2026 et est resté discret pendant des mois. Puis il est devenu viral : la presse spécialisée comptait moins de 10 000 étoiles le 6 octobre, et lorsque nous avons ouvert le dépôt le 7 novembre 2026, il en affichait 438 118 — l'une des croissances les plus rapides de l'histoire de GitHub. Un tel battage mérite une vérification pratique plutôt qu'un résumé des vidéos des autres; nous avons donc fait le test.

2. Comment l'installer — les étapes exactes que nous avons exécutées

Prérequis (selon le README officiel) : Node.js 22.x (≥ 22.23.4), 24.x (≥ 24.22.1) ou 26.12.1+, plus npm. Notre machine de test roulait sous Node v24.22.1 — exactement le minimum de la branche 24.x — avec npm 10.9.4 sur Ubuntu Linux.

Nous avons installé REA localement, dans un seul dossier (aucun droit administrateur, rien à l'échelle du système). Avant d'installer, nous avons vérifié l'identité du paquet : npm view rea-agents indiquait la version 6.8.0 avec comme mainteneur « morluto », ce qui correspond au propriétaire du dépôt GitHub. Ensuite :

npm init -y
npm install rea-agents@6.8.0
./node_modules/.bin/rea --version
# → 6.8.0

L'installation a pris environ 40 secondes. Nous avons aussi lancé rea doctor : il a confirmé que Node était en santé et signalé qu'aucun moteur d'analyse natif (Hopper, Ghidra, IDA) n'était installé — ce qui ne nuit pas à ce que nous testions, car la FAQ officielle précise que l'inspection statique JavaScript et .NET fonctionne sans moteur natif. L'analyse approfondie de binaires natifs exige par contre une installation existante de Hopper, Ghidra, IDA ou Kuna, et REA ne fournit pas les licences de ces outils.

Petite précision : le démarrage rapide du README pour les utilisateurs d'agents est npx rea-agents setup, qui enregistre REA auprès de votre agent IA. Nous avons délibérément testé plutôt la voie autonome en ligne de commande ci-dessous, car elle ne demande aucun enregistrement et montre exactement ce que REA produit par lui-même.

3. Notre test pratique : REA face à notre propre code

Cible : notre propre outil Formats d'images pour réseaux sociaux — une page gratuite de ce site qui transforme une image en huit formats de réseaux sociaux. Nous connaissons son code source ligne par ligne, ce qui nous a permis de noter les réponses de REA honnêtement. Deux questions :

Version de REA6.8.0
Temps d'installation≈ 40 secondes
Temps d'analyse≈ 5 secondes
Code analysé4 fichiers · 2 869 nœuds AST
Rapport de preuves2,9 Mo de JSON
CibleNotre outil seulement

Essai 1 — l'angle mort que REA a lui-même signalé

Nous avons lancé la commande documentée (rea analyze-javascript-application <dossier> --json) sur la page de l'outil et ses deux scripts liés. REA a entièrement analysé les deux scripts externes, dressé l'inventaire de la page, repéré la référence au script externe AdSense et même trouvé une clé localStorage de consentement aux témoins dans notre script de site. Mais il n'a pas analysé l'outil lui-même, parce que le code de l'outil vit dans un bloc <script> intégré au HTML — et, à son crédit, son rapport le disait en toutes lettres : « 2 corps JavaScript intégrés… qui n'ont pas été analysés » (texte original en anglais). Première leçon : pour les pages web ordinaires, extrayez d'abord les scripts (ou utilisez le flux de capture par navigateur de REA), et lisez toujours la section des limites de son rapport.

Essai 2 — scripts extraits, analyse complète

Nous avons copié les deux scripts intégrés de la page, octet pour octet, dans des fichiers .js séparés, puis relancé la même commande. Cette fois, REA a tout analysé (4 fichiers, 15 835 octets, zéro échec d'analyse). Voici ses preuves, vérifiées ligne par ligne contre le vrai code source :

Ce que REA a rapportéVérification contre notre code source
Une fonction drawPreset() crée un canvas, obtient son contexte 2D, dessine l'image avec drawImage, l'encode avec canvas.toBlob et remet le résultat via URL.createObjectURL; un tableau PRESETS pilote les formats.Exact. C'est précisément la chaîne d'exportation. REA plaçait drawPreset() à l'octet 2921 du script — nous avons vérifié : exact au caractère près.
Des appels de remplissage d'arrière-plan (fillStyle/fillRect) pour le mode « image entière », le texte exact de l'avertissement « Upscaled from a smaller original — may look soft. », et une minuterie setInterval de 400 ms.Exact. La minuterie de 400 ms est une vraie particularité de notre code : un mécanisme de secours par interrogation répétée pour les navigateurs Android qui ne déclenchent pas correctement les événements du sélecteur de fichier.
Dans les quatre fichiers, son extraction des requêtes a trouvé zéro appel réseau — aucun fetch, aucun XMLHttpRequest, aucun WebSocket. Le seul stockage trouvé était le témoin de consentement dans un autre fichier (app.js, ligne 63 — exact aussi).Exact. Voilà la réponse à Q2 : l'image est chargée par une URL d'objet et traitée entièrement dans le navigateur. Elle n'est jamais téléversée — comme l'outil le promet sur sa page.
Les huit dimensions prédéfinies (1080×1080, 1080×1350, 1080×1920…) et les formules de redimensionnement rogner/ajuster.Manqué. REA a repéré le tableau PRESETS et les appels de dessin, mais n'a pas extrait les valeurs du tableau ni le calcul d'ajustement (Math.max/Math.min) sous forme structurée. Les valeurs de format et de qualité vivent aussi dans les listes déroulantes HTML de la page, hors du script analysé.

Notre verdict : comme carte structurelle, REA est précis — mécanismes, chaînes d'appels et emplacements dans le code étaient justes chaque fois que nous avons vérifié. Comme lecteur de pensée, il est partiel : il vous dit ce que le code fait et où, pas chaque tableau de données ni chaque formule qu'il contient. Fait notable, il étiquette « inconnu » ce qu'il n'a pas pu résoudre au lieu de deviner — notre essai a produit 654 de ces inconnus à travers l'application, ce qui est la façon honnête de présenter une couverture partielle.

4. Ce que REA ne peut pas faire (malgré le battage)

5. Sécurité et légalité — à lire avant de pointer REA sur quoi que ce soit

Nous n'offrons pas de services de rétro-ingénierie, et rien sur cette page n'est un mode d'emploi pour inspecter les logiciels des autres.

6. FAQ

REA est-il gratuit?

Oui — il est open source sous licence MIT. Votre abonnement d'agent IA (si vous en avez un) est à part, et les moteurs commerciaux comme IDA ou Hopper exigent leurs propres licences payantes.

REA envoie-t-il mon application dans le nuage?

Non. Selon la FAQ officielle, REA analyse les cibles localement. Votre agent reçoit les résultats des outils, et la politique de données de votre fournisseur de modèle s'applique à ceux-ci.

Dois-je avoir Ghidra ou IDA installé?

Pas pour l'analyse statique JavaScript ou .NET — les deux ont fonctionné dans notre test sans aucun moteur. Les binaires natifs exigent une installation existante de Hopper, Ghidra, IDA ou Kuna.

Que faut-il pour l'exécuter?

Node.js 22.x (≥ 22.23.4), 24.x (≥ 24.22.1) ou 26.12.1+, plus npm. Nous avons testé sous Ubuntu Linux avec Node v24.22.1.

REA peut-il cloner l'application d'un concurrent pour moi?

Non — techniquement il ne le peut pas (aucune récupération de code source, couverture partielle) et juridiquement vous ne devriez pas essayer. Voir la section sécurité ci-dessus.

Qu'est-ce que REA a raté dans votre test?

Rien de ce qu'il a affirmé n'était faux — ses références étaient exactes. Ses faiblesses étaient des omissions : le tableau des dimensions prédéfinies et les formules de redimensionnement n'ont pas été extraits, et il a ignoré les scripts intégrés aux pages jusqu'à ce que nous les extrayions (une limite qu'il signalait lui-même dans son rapport).

Essayez l'outil que REA vient d'auditer

La page que REA a analysée est l'un de nos outils de navigateur gratuits — il redimensionne une image dans tous les formats de réseaux sociaux d'un coup, localement dans votre navigateur, et vous avez maintenant une preuve de type indépendant qu'il ne téléverse vraiment rien : Formats d'images pour réseaux sociaux. Parcourez aussi nos autres outils gratuits — codes QR, factures, outils de couleur et plus, tous exécutés localement de la même façon.

Envie de l'imprimer?

Nous pouvons imprimer votre design sur des t-shirts, chandails, tasses, affiches et plus — imprimé sur commande au Québec, sans minimum, avec un aperçu gratuit avant de payer.

Contactez-nous pour un devis gratuit