REA (Reverse Engineer Anything) est un serveur MCP qui vous permet de procéder à l’ingénierie inverse des applications logicielles, des binaires et des comportements en temps réel. L’outil couvre le chemin allant du comportement de l’application au code machine, et il est pratique d’utiliser OpenCode comme agent qui le gère.
OpenCode est un agent de programmation ouvert qui réside dans le terminal. Il lit les fichiers de projet, édite le code, exécute des commandes et des tests et, plus important encore, il prend en charge MCP dès le départ, donc REA s’y connecte directement.
Ce qui rend REA unique
REA se démarque dans le domaine de l’ingénierie inverse avec un support complet de plusieurs plateformes et types d’analyses :
- Binaires natifs : Hopper, Ghidra, IDA ou Kuna pour le démontage et la décompilation
- Applications JavaScript et Electron : analyse statique des modules Electron, importations et limites
- Code managé : analyse des assemblys .NET
- Analyse en temps réel : surveillance du comportement des processus
- Trafic réseau : capture et analyse des requêtes et réponses HTTP/S
- Applications mobiles : analyse des fichiers APK et IPA pour Android et iOS
- Logiciel embarqué : analyse des systèmes embarqués et des appareils IoT
- Fichiers modèles : extraction des métadonnées GGUF et safetensors
- Objets de code GPU : analyse des noyaux CUDA et HIP
- Sauvegarde de jeux : restauration de la logique du jeu et des fichiers exécutables
Architecture de base et philosophie
REA suit un processus de recherche en trois étapes qui rend la rétro-ingénierie accessible aux développeurs :
- Inspection : REA se connecte aux outils d’analyse et examine les cibles (binaires, applications, sites Web)
- Analyse : trace à travers le code, déterminant les règles et les comportements
- Récupération : l’agent utilise les résultats pour expliquer le comportement et créer ou tester une implémentation
Ce processus permet à l’agent IA de répondre à des questions complexes, telles que : « Comprendre le fonctionnement de la recherche dans l’application Notes, me montrer les preuves et créer une fonctionnalité similaire pour mon projet. »
Exemples pratiques d’utilisation
1. Analyse des applications mobiles
REA peut analyser les fichiers APK Android pour la récupération :
- déclarations et autorisations dans le manifeste ;
- Méthodes de classe et dépendances ;
- liens vers des bibliothèques natives ;
- Points de terminaison du réseau et flux de données.
Par exemple, une analyse d’Aegis Authenticator a montré comment les codes d’autorisation à six chiffres changent toutes les 30 secondes : elle a examiné le fonctionnement de la génération de code basée sur le temps (TOTP).
2. Extraction de fonctions d’application de bureau
L’analyse du bouton % dans la calculatrice Windows démontre les capacités de REA :
- définir un comportement différent selon le contexte (après + ou ×) ;
- analyser les instructions d’assemblage pour comprendre la logique ;
- extraire et expliquer des opérations mathématiques ;
- rétablir les règles : “Après + : 10 % du premier nombre” et “Après × : convertir 10 % en 0,1.”
3. Restauration de l’API de l’application Web
REA peut enregistrer une session de navigateur et la reconstruire sous la forme d’un environnement RL dans lequel l’agent IA effectue des tâches telles que travailler avec des dossiers sans exécuter l’application d’origine.
4. Restaurer la logique du jeu
Le cas DX-Ball a montré comment REA a restauré le calcul du paysage sonore du jeu Windows de 1996 en procédant à une ingénierie inverse du code C qui s’exécute sur 3 205 cas de test et correspond au code compilé d’origine.
Capacités techniques
Analyse native
- Fonctionne avec Hopper, Ghidra, IDA ou Kuna pour une analyse approfondie des fichiers binaires
- Prend en charge ELF, PE, Mach-O et d’autres formats de fichiers exécutables
- Extrait le pseudocode, l’assembleur, les symboles et les appels
- Effectue une analyse hors ligne sans avoir à lancer les outils d’origine
Analyse JavaScript
- Analyse les applications Node.js et Electron
- Suivre les importations et les dépendances du module
- Capture le comportement en temps réel via une connexion à un navigateur
- Извлекает source maps и минифицированный код
Sécurité
- Analyse statique des certificats PE (Authenticode)
- Analyse des mécanismes de défense (PIE, NX, RELRO, CFG)
- Mappage des importations et des DLL
- Analyse des rapports d’erreur (Apple IPS)
Que renvoie REA
REA ne donne pas à l’agent des conclusions toutes faites sans raison. Le résultat de chaque requête correspond aux conclusions ainsi qu’aux preuves sur lesquelles elles sont fondées. Selon la finalité, la réponse comprend :
- Liens vers le code – fichiers et lignes spécifiques où la fonction étudiée est implémentée.
- Pseudocode et assembleur – pour les binaires natifs : fonctions décompilées, instructions et connexions entre les appels.
- Structure de l’application – pour JavaScript et Electron : modules, importations, routes, IPC et connexions avec des modules complémentaires natifs.
- Métadonnées et faits : manifestes, certificats, signatures, en-têtes de format et autres données statiques.
- Restrictions : lieux qui n’ont pas pu être identifiés, avec une note sur ce qui reste exactement inconnu.
L’agent utilise ces données pour expliquer son comportement, répondre à des questions de clarification ou assembler et tester sa mise en œuvre. C’est la présence de preuves et de limites explicites qui distingue un résultat REA d’une simple estimation du modèle.
Avant de commencer
On suppose qu’OpenCode est déjà installé et que le modèle y est connecté. Node.js 22.23.4+, 24.22.1+ ou 26.12.1+ est nécessaire à REA lui-même, alors vérifiez la version :
node -v
Étape 1 : Connecter REA à OpenCode
REA s’enregistre auprès d’OpenCode en tant que serveur MCP. Exécuter dans le terminal :
npx rea-agents@latest setup
Pour spécifier directement OpenCode, utilisez son identifiant opencode :
npx rea-agents@latest setup --client opencode
Que fait la configuration :
- enregistre REA en tant que serveur MCP ;
- ajoute des instructions de workflow ;
- fait une copie de sauvegarde de la configuration existante ;
- demande une confirmation avant d’appliquer les modifications.
Point important :
Pour la première expérience, vous pouvez ignorer l’installation facultative de Hopper. Une fois la configuration terminée, redémarrez OpenCode : quittez la session et exécutez à nouveau opencode.
Vérifiez la connexion :
npx -y rea-agents@latest doctor --client opencode --json
Résultat réussi : "healthy": true.
Demandez ensuite à l’agent :
« Vérifiez que REA est connecté et montrez-moi quels outils REA vous pouvez utiliser. »
Étape 2 : Première enquête
REA peut analyser les applications sans les lancer.
- Téléchargez l’exemple :
Download https://rea.tools/examples/notes-example.zipDécompressez l’archive dans le dossier
notes-example. - Donner une tâche à l’agent :
“Utilisez REA pour inspecter l’application sur
/absolute/path/to/notes-example. Découvrez ce qui se passe lorsque je clique sur Exporter les notes. Montrez où notes.csv est écrit, quels champs il contient, ainsi que les fichiers et lignes pertinents. “
Réponse attendue :
“Le bouton envoie un message
notes:export. Le processus principal formate les notes au format CSV et écritnotes.csvdans le dossier Téléchargements de l’utilisateur. Les colonnes sontidettitle.”
Étape 3 : installation de Ghidra et analyse native
Pour analyser les binaires natifs (exécutables et bibliothèques), REA utilise un fournisseur d’analyse. L’option gratuite la plus abordable est Ghidra de la NSA. L’outil est installé une fois sur l’ordinateur sur lequel REA s’exécute.
Ce dont vous avez besoin
- JDK 21 64 bits ou version ultérieure, y compris le compilateur Java (
javac). - Archive Ghidra de la page des versions.
Installation
- Installez le JDK 21 64 bits ou une version ultérieure. Sélectionnez un package pour votre architecture informatique.
- Téléchargez Ghidra depuis la liste des ressources sur la page des versions et décompressez l’archive
ghidra_…_PUBLIC_….zip. Prenez l’archive de la version, pas le “Code source”. - Recherchez le dossier décompressé qui contient
ghidraRunoughidraRun.bat. Ce chemin sera nécessaire pour la variableGHIDRA_INSTALL_DIR.
Découvrez Java. La première commande imprime java.home – ce chemin est nécessaire pour JAVA_HOME. La seconde confirme que le compilateur est installé :
java -XshowSettings:properties -version
javac -version
Connexion Ghidra
Windows (PowerShell) :
$env:GHIDRA_INSTALL_DIR = "C:/tools/ghidra_12.1.4_PUBLIC"
$env:JAVA_HOME = "C:/tools/jdk-21"
npx -y rea-agents@latest doctor --provider ghidra --json
npx -y rea-agents@latest setup
macOS/Linux :
export GHIDRA_INSTALL_DIR="/absolute/path/to/ghidra_12.1.4_PUBLIC"
export JAVA_HOME="/absolute/path/to/jdk-21"
npx -y rea-agents@latest doctor --provider ghidra --json
npx -y rea-agents@latest setup
Remplacez les chemins par les vôtres. Conservez les commandes dans une seule session de terminal : après avoir défini les variables d’environnement, réexécutez l’installation, confirmez la mise à jour de la configuration et redémarrez OpenCode.
La vérification du fournisseur devrait renvoyer un rapport réussi :
npx -y rea-agents@latest doctor --provider ghidra --json
Exemple d’analyse native
Donnez à l’agent le chemin complet du fichier exécutable et spécifiez le fournisseur :
“Utilisez REA avec un fournisseur configuré pour explorer
/absolute/path/to/program. Répertoriez les fonctions et les lignes, puis expliquez la partie qui gère les entrées de l’utilisateur, avec des références au code.”
Ou exécutez la commande directement depuis le terminal :
npx -y rea-agents@latest function "/absolute/path/to/program" main --provider ghidra --json
Remplacez main par le nom ou l’adresse de la fonction de la liste des fonctions du programme cible. Le résultat contient du pseudocode, un assembleur et des références entre les appels.
Analyse d’un autre type de logiciel
Sélectionnez la catégorie de logiciel cible :
- JavaScript/Electron – nécessite Node.js et npm. Guide.
- Sites Web : nécessite le navigateur Chrome, Chromium ou Edge. Guide.
- APK Android – nécessite JADX et JDK 17+. Manuel.
- Exécutables natifs – nécessite Hopper, Ghidra ou IDA. Guide.
- Assemblages .NET : nécessite Node.js et npm. Manuel.
Utiliser REA depuis le terminal
Analyse statique de l’application JavaScript/Electron
npx -y rea-agents@latest analyze-javascript-application "/absolute/path/to/app" --json
Remplacez le chemin par le dossier contenant l’application ou le fichier .asar.
Où trouver le fichier .asar de l’application Electron :
- Windows:
C:\Users\<you>\AppData\Local\Programs\<App>\resources\app.asar - macOS:
/Applications/<App>.app/Contents/Resources/app.asar - Linux:
/opt/<App>/resources/app.asar
Installation globale de la commande rea
npm install --global rea-agents
Après cela, la commande rea --help est disponible.
Installation via curl (macOS / Linux)
curl -fsSL https://raw.githubusercontent.com/morluto/rea/main/install.sh | bash
Après l’installation, suivez les instructions pour configurer l’agent. Si le menu de configuration n’apparaît pas, exécutez rea setup.
Mettre à jour et supprimer
Mise à jour REA
npx rea-agents@latest setup
Pour une installation globale : rea update
Suppression de REA
npx rea-agents@latest uninstall
Obtenir de l’aide
- FAQ : rea.tools/faq/ – réponses rapides sur les mises à jour, les agents et l’analyse
- Guides : rea.tools/guides/ – exemples d’analyse binaire, électronique et de navigateur
- Problèmes GitHub : github.com/morluto/rea/issues – signaler un problème
- Discord : discord.gg/GkcryMnJDM – questions, enquêtes et travaux en cours
Problèmes typiques
OpenCode ne voit pas REA
Redémarrez OpenCode après l’installation. Utilisez la commande doctor pour tester la connexion :
npx -y rea-agents@latest doctor --client opencode --json
Le fournisseur nécessite une configuration
Pour la course Ghidra :
npx -y rea-agents@latest doctor --provider ghidra --json
Le rapport affichera le test ayant échoué et la prochaine étape suggérée.
Windows, WSL et chemins avec espaces
- Utiliser PowerShell pour les clients Windows
- Si l’agent s’exécute dans WSL, installez Node.js et REA dans ce système Linux et utilisez les chemins Linux
- Dans le terminal, placez les chemins avec des espaces entre guillemets
Configurer Hopper sur macOS
Si macOS vous demande d’autoriser l’automatisation, autorisez l’application qui exécute REA dans les Préférences Système : Préférences Système → Confidentialité et sécurité → Automatisation, puis réessayez.
Liens
https://github.com/morluto/rea
https://rea.tools/
https://rea.tools/get-started/
https://rea.tools/guides/
https://opencode.ai/
https://opencode.ai/docs/
https://opencode.ai/docs/mcp-servers/
Leave a Reply