REA et OpenCode : installation et première enquête

Written by

in

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 :

  1. Inspection : REA se connecte aux outils d’analyse et examine les cibles (binaires, applications, sites Web)
  2. Analyse : trace à travers le code, déterminant les règles et les comportements
  3. 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.

  1. Téléchargez l’exemple :
    Download https://rea.tools/examples/notes-example.zip
    

    Décompressez l’archive dans le dossier notes-example.

  2. 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 écrit notes.csv dans le dossier Téléchargements de l’utilisateur. Les colonnes sont id et title.”

É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

  1. Installez le JDK 21 64 bits ou une version ultérieure. Sélectionnez un package pour votre architecture informatique.
  2. 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”.
  3. Recherchez le dossier décompressé qui contient ghidraRun ou ghidraRun.bat. Ce chemin sera nécessaire pour la variable GHIDRA_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

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/

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

DemensDeum
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.