Files
rea/docs/readme/README_fr.md
T
c1fd496e6a feat(kuna): serve procedures, pseudocode and assembly from Kuna exports (#3854)
* feat(kuna): serve procedures, pseudocode and assembly from Kuna exports

Register Kuna as a bring-your-own deep-analysis provider. It answers
list_documents, list_procedures, search_procedures, procedure_address,
address_name, procedure_pseudo_code, procedure_assembly and
analyze_function (and batch_decompile through composition) from the
verified project export. While a cold export builds in the background,
pseudocode comes from a single-function `kuna decompile` run on a private
copy and says so; assembly and data names wait for the export.

Each answer records its source and file span in raw_result, limitations
are scoped per operation, and the session-owned export is stopped on
close unless another session still waits for it. The literal/regex
procedure search predicate moves from the IDA runner into a shared
domain helper. `npm run verify:kuna` adds a real-provider lane with an
optional Ghidra comparison.

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(kuna): refuse a Ghidra comparison without caller-built targets

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(kuna): retry owned cleanup and keep answers bound to the opened Kuna

- Re-verify the Kuna executable's digest before every launch (memoized by
  file identity), so no answer names one build while another produced it.
- Keep the process supervisor of an unproven stop, and retry it on every
  later close in both the session and the cache; a failed close keeps
  failing until the stop is proven instead of reporting success.
- Report an abandoned export's retained cleanup from session close.
- Forget and rebuild an adopted export whose files another REA process
  evicted, instead of failing every later read.
- Close a private copy whose setup failed, and retry failed removals.
- Let the session own the shared quick inventory; each caller only stops
  waiting when it cancels.
- Report a failed export as `failed` with its reason.
- Lane: release the MCP client when open_binary rejects a target, and accept
  either valid source for the first answer.

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(kuna): drain session requests before releasing workspaces

Combine caller cancellation with session shutdown and wait for active reads before releasing their process supervisors or private inputs. Retain unproven cleanup for later close attempts. Measure UTF-8 reply bytes without implying model token usage.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

* perf(kuna): keep document metadata reads free of target analysis

Listing the selected path no longer initializes the project cache or starts an export that the request never consumes.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

* fix(kuna): reject verification matrices with missing functions

Validate requested matrix coverage before building the fixture or opening providers. Empty matrices, unmatched names and partially matched function sets must fail instead of reporting an unperformed comparison as successful.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

* fix(kuna): retain component provenance in function dossiers

Record each source facet as one file span and preserve both pseudocode and assembly digests/ranges in combined reports. Keep direct text source fields compatible and verify every combined span through the real MCP lane.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

* fix(kuna): keep retired file cleanup bound to its export

Retain the export key with each failed file removal so a cancelled session reports and retries its own stopped resources. Preserve that association across sweeping and process-cleanup recovery without attributing unrelated cache failures to the session.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

* docs(kuna): document the Kuna provider and list it in the catalog (#3855)

* docs(kuna): document the Kuna provider and list it in the catalog

Add the Kuna provider guide (configuration, answered tools, cold and warm
paths, provenance, cache ownership, verification lane), link it from the
README and its translations, the CLI, installation and index pages and the
site navigation, describe `npm run verify:kuna` in the testing guide, credit
Kuna in THIRD_PARTY_NOTICES, teach the agent skill when to select Kuna, and
register its identity and operations in the generated product catalog.

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(kuna): state the Linux cache fallback, raw_result scope and comparison inputs

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(kuna): note that cache pins hold within one REA process

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(kuna): describe retired staging and retried cleanup

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(kuna): supervise regex and bind reads to one export

Share a cancellable ECMAScript matching worker with Hopper while preserving its error contract. Bind C and assembly indexes to immutable project readers, retry whole dossiers after eviction, and enforce the existing buffered-text capacity before allocating cached spans. Document the verified Linux scope and keep complete exports accessible.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: N0zoM1z0 <161784452+N0zoM1z0@users.noreply.github.com>
Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
2026-10-15 00:53:26 -07:00

23 KiB
Raw Blame History

English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Türkçe · Русский · Tiếng Việt · ไทย · Deutsch · Español · Français · Українська · Polski · Português (Brasil) · العربية · فارسی · Bahasa Indonesia · Italiano · Ελληνικά

REA : rétro-ingénierie de tout

Un seul MCP pour la rétro-ingénierie des binaires, des applications et du comportement à l'exécution.

Repérez une fonctionnalité qui vous plaît. Comprenez son fonctionnement, jusqu'au niveau du binaire.

npm version MCP tool catalog Node.js requirements skills.sh MIT license Discord

morluto%2Frea | Trendshift

Site web · Guides · Études de cas

Démarrage rapide · Comment fonctionne REA · Ce que vous pouvez analyser · Études de cas · Questions fréquentes · Outils GNU objdump et Rizin · Documentation

npx rea-agents setup

Important

Sources officielles de REA : morluto/rea, rea.tools, rea-agents (npm). Utilisez les liens d’installation et de publication de ces sources officielles. Un nom de dépôt similaire ou un README copié ne prouve pas qu’un téléchargement est officiel.


REA lance son pont d'analyse dans Hopper pendant l'inspection d'un binaire natif



Discord
Rejoignez la communauté de rétro-ingénierie

Discord · Questions et réponses · Partage de projets


Vous avez repéré dans une application une fonctionnalité que vous aimeriez avoir dans votre propre produit ? Demandez à votre agent de l'étudier avec REA. Il peut inspecter l'application sans son code source, expliquer le fonctionnement de la fonctionnalité, présenter les preuves et en construire une version pour votre projet.

REA connecte votre agent à des outils d'inspection de binaires natifs, d'applications JavaScript et Electron, d'assemblys .NET et de sites web. Les mêmes outils sont aussi disponibles depuis votre terminal. L'analyse s'exécute localement, et chaque conclusion s'accompagne des preuves et des limites sur lesquelles elle repose.

Setup enregistre REA auprès de votre agent et installe les instructions de workflow correspondantes. L'analyse native peut utiliser une installation existante de Hopper, de Ghidra ou d'IDA ; Setup peut aussi installer Hopper après votre accord. L'analyse statique JavaScript ne nécessite aucun moteur d'analyse natif.

Visitez le site web de REA pour les instructions d'installation, des guides illustrés et des études de cas réelles.

Démarrage rapide

Configurer votre agent

Une fois Node.js et npm installés, exécutez :

npx rea-agents setup

Choisissez vos agents, vérifiez les modifications proposées et approuvez-les. Setup ajoute le serveur MCP de REA et les instructions de workflow correspondantes, et sauvegarde la configuration existante. Redémarrez ensuite votre agent.

Setup prend en charge Claude Code, Codex, Cursor, Gemini CLI, Grok Build et d'autres agents. Consultez Installation et configuration pour la configuration des fournisseurs et l'enregistrement MCP manuel.

Interroger votre agent

Comprends comment fonctionne la recherche dans l'app Notes, montre-moi les preuves
et construis une fonctionnalité similaire pour mon projet.

Remplacez Notes par votre application cible et la fonctionnalité que vous voulez comprendre.

Utiliser le terminal

Inspectez le répertoire extrait ou l'archive ASAR d'une application JavaScript/Electron :

npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json

Le résultat comprend les modules, les imports, les frontières Electron et les preuves associées. Remplacez le chemin par votre cible, par exemple "D:/apps/example" sous Windows.

Pour installer la commande rea pour un usage régulier :

npm install --global rea-agents
rea --help

Pour l'analyse native, configurez d'abord un fournisseur. Consultez le guide CLI et Evidence pour les commandes natives, le choix du fournisseur, les snapshots et l'utilisation dans des scripts.

Mettre à jour REA

REA évolue rapidement, et les nouvelles versions apportent fréquemment des corrections de bugs. Maintenez votre installation à jour.

Pour une CLI installée avec npm install --global ou bun add --global :

rea update

Les mises à jour globales avec Bun nécessitent Bun 1.2.17 ou une version ultérieure. Avec une version plus ancienne de Bun, mettez à jour Bun manuellement avant d'exécuter rea update.

Pour actualiser les enregistrements de vos agents et le skill, exécutez la commande setup affichée par la mise à jour.

Si vous utilisez npx, mettez à jour la configuration de votre agent avec :

npx rea-agents@latest setup

Vérifiez les modifications proposées par Setup et redémarrez votre agent. Pour des commandes CLI ponctuelles, utilisez npx rea-agents@latest suivi de la commande. Avec Bun, utilisez bunx rea-agents@latest à la place de npx rea-agents@latest.

Comment fonctionne REA

Votre agent appelle REA via MCP pour inspecter la cible et suivre le code pertinent. REA renvoie ses constatations avec les preuves correspondantes. L'agent s'en sert pour poser des questions complémentaires, expliquer le comportement, ou écrire et tester une implémentation. Les commandes CLI utilisent les mêmes workflows.

Flux d'investigation de REA : votre agent pose une question sur une cible locale, REA l'inspecte et la trace avec des outils d'analyse, et l'agent utilise le code, les références et les inconnues renvoyés pour expliquer, implémenter et tester.

Ouvrir la figure en taille réelle.

Ce que vous pouvez analyser

REA nécessite Node.js 22.x (>=22.19), 24.x (>=24.11) ou 26+, ainsi que npm. Les outils supplémentaires et les hôtes pris en charge dépendent de la cible :

Cible Ce que REA renvoie Prérequis et guide
Binaires natifs Pseudo-code, assembleur, chaînes, symboles, appels et références Hopper, Ghidra ou IDA ; analyse native
Structure ELF hors ligne Sections, segments, symboles et relocations d'origine, et protections statiques candidates pwntools fourni par l'utilisateur sous Linux x64 ; diagnostics binaires
Artefact WASM Validation, sections, formes WAT exactes d'import/export et WAT décodé WABT 1.0.42 fourni par l'utilisateur ; inspect_wasm_artifact
Bytecode EVM Sélecteurs de dispatch, offsets en octets, arguments inférés et mutabilité Fichier local brut ou hexadécimal sous Linux x64 ; guide EVM hors ligne
Rust binaries Embedded cargo-auditable dependency list Rust binaries
Crashs Linux enregistrés Notes brutes, registres et signaux de chaque thread enregistré, et correspondances de mappings facultatives pwntools fourni par l'utilisateur sous Linux x64 ; GDB/pwndbg en option ; crashs enregistrés
JavaScript / Electron Modules, imports, source maps, routes, IPC et relations avec les modules natifs Node.js et npm ; analyse d'applications
Sites web Structure des pages, scripts, observations réseau et captures d'écran demandées Un navigateur de la famille Chrome ; analyse du navigateur
Captures réseau enregistrées Requêtes, réponses, payloads exposés et emplacements dans le code source HAR ; mitmdump sous Linux pour les captures mitmproxy natives ; guide des captures
Captures de paquets Points de terminaison, DNS, TLS SNI, distribution des protocoles et requêtes HTTP tshark et capinfos fournis par l'appelant ; guide pcap
Assemblys .NET Métadonnées, instructions CIL, dépendances natives déclarées et comparaisons de builds Inspection statique ; guide du code managé
APK Android Déclarations du manifeste, classes, méthodes décompilées et références JADX headless et un JDK complet sous Linux/macOS/Windows x64 ; guide Android
Appareils Android Appareils, paquets, processus, journaux, dumps, captures d'écran et transferts d'APK/fichiers adb fourni par l'appelant (émulateur ou appareil) ; guide ADB
Projets JEB Unités de projet fournies par le moteur, condensés d'artefacts et pseudo-code de types/méthodes Un client JEB démarré par l'appelant servant MCP, sélectionné via REA_JEB_MCP_URL ; guide JEB
Ressources Android Manifeste décodé, tables de chaînes, langues et faits de version Lanceur Apktool fourni par l'appelant ; guide des ressources
Applications Flutter Empreinte de snapshot Dart, condensés de bibliothèques par ABI et provenance de build du moteur Aucune (analyse APK statique) ; guide Flutter
Firmware Régions, résultats d'extraction et passage de relais vers l'analyse native Binwalk / Unblob sous Linux ; guide firmware
Paquets enregistrés Champs sélectionnés, valeurs répétées, filtres et règles de décodage Linux: TShark 4.x + prlimit; guide des captures
Signaux logiques enregistrés Annotations du décodeur, plages d’échantillons et diagnostics Linux: sigrok-cli 0.7.2 + prlimit; guide des signaux
Paquets et ressources Inventaires de fichiers, empreintes, plists, anatomie des bundles Apple et ressources extraites Guide artefacts et JavaScript, applications Apple
Comportement des processus Sortie du terminal, interactions, code de sortie, observations du système de fichiers et comparaisons Linux/macOS avec un PTY natif ; capture de processus

L'inspection statique JavaScript et .NET lit les fichiers fournis sans exécuter l'application. La capture à l'exécution lance la cible choisie ou interagit avec elle avec vos permissions utilisateur ; chaque guide d'exécution décrit ses effets.

Les formats natifs et les hôtes pris en charge varient selon le fournisseur. Consultez la configuration de Hopper et Ghidra, le guide IDA, Kuna et la prise en charge expérimentale de Ghidra sous Windows. Ghidra prend aussi en charge l'analyse DOS 16 bits. Pour les gros binaires, augmentez son délai de démarrage avec REA_GHIDRA_STARTUP_TIMEOUT_MS. Pour le choix du fournisseur, consultez le guide CLI. Vérifiez la disponibilité dans les versions publiées pour les fonctionnalités ajoutées depuis la dernière version npm.

Études de cas

Illustrations des études sur la spatialisation sonore de DX-Ball, le pont du presse-papiers de Notion et le cercle de projectiles de TH04

DX-Ball : reconstruire un calcul de panoramique sonore

Suivez un appel sonore jusqu'à la fonction qui convertit une position en panoramique, inspectez ses instructions et transformez un pseudo-code incomplet en C. La reconstruction réussit 3 205 cas issus du x86 d'origine et reproduit à l'identique les 63 octets de la fonction compilée.

Lire l'étude de cas · Dépôt de la reconstruction

Notion : suivre le pont du presse-papiers d'Electron

Trouvez l'API de presse-papiers du renderer, suivez-la à travers le preload et l'IPC jusqu'au processus principal, puis inspectez le format de presse-papiers enrichi.

Lire l'étude de cas

TH04 : retrouver un calcul d'anneau de projectiles sous DOS

Inspectez les instructions 16 bits du jeu PC-98 d'origine, retrouvez les calculs d'angles fixes et visés, et comparez le C++ reconstruit avec la sortie du compilateur d'époque.

Lire l'étude de cas · Dépôt de la reconstruction

Si vous avez utilisé REA sur un projet intéressant, nous serions ravis de le découvrir. Partagez votre cas dans une issue ou une pull request, en précisant la cible, votre question, la manière dont REA vous a aidé et ce que vous avez découvert.

Questions fréquentes

Quels agents peuvent utiliser REA ?

Tout agent compatible avec les serveurs MCP locaux. Setup configure les agents pris en charge ; les autres clients peuvent utiliser l'enregistrement MCP manuel.

Ai-je besoin de Hopper, Ghidra ou IDA ?

L'analyse native approfondie utilise l'un d'eux. L'inspection statique JavaScript et .NET fonctionne sans moteur d'analyse native. Setup peut installer Hopper après votre accord ; Ghidra et IDA utilisent vos installations existantes. Consultez la configuration des fournisseurs.

Dois-je lancer Hopper au préalable ?

REA lance Hopper lorsqu'une opération en a besoin. Sous macOS, une boîte de dialogue de premier lancement peut vous demander de choisir le mode démo ou d'activer votre licence. Consultez Démarrage et dépannage de Hopper.

Que fait l'installation du skill depuis skills.sh ?

Le skill fournit des instructions d'investigation à votre agent. Utilisez npx rea-agents setup pour enregistrer le serveur MCP de REA et installer les instructions correspondantes, puis redémarrez votre agent. Consultez l'installation du skill seul.

Quel code REA renvoie-t-il ?

L'analyse native renvoie du pseudo-code et de l'assembleur. L'analyse JavaScript/Electron récupère les modules et leurs relations. Votre agent s'appuie sur ces résultats pour écrire et tester une implémentation ; les études de cas en donnent des exemples concrets.

REA envoie-t-il mon application en ligne ?

REA analyse les cibles localement. Votre agent reçoit les résultats des outils, et son fournisseur de modèle applique sa propre politique de données.

Que faire si je rencontre un bug ?

Commencez par mettre à jour ; une version récente l'a peut-être déjà corrigé.

Pour une CLI installée avec npm install --global ou bun add --global :

rea update

Pour une configuration d'agent via npx :

npx rea-agents@latest setup

Si vous utilisez un agent, terminez l'actualisation de la configuration et redémarrez-le. Relancez la même tâche. Si le problème persiste, ouvrez une issue en indiquant votre version de REA, le type de cible, les étapes pour reproduire le problème et la sortie d'erreur.

Documentation

Commencez par les guides pas à pas du site web. Pour les options exactes, les prérequis et les contrats de résultats :

Signalez les vulnérabilités via SECURITY.md.

Historique des étoiles

🎉 250 000 étoiles GitHub — merci !

Merci à toutes les personnes qui utilisent REA, signalent des bugs, proposent des fonctionnalités, testent les builds et contribuent des correctifs.

Historique des étoiles GitHub de REA

Avertissement

Consultez DISCLAIMER.md pour les consignes d'utilisation responsable.

REA est destiné à la recherche, à l’éducation, à l’interopérabilité, à la préservation logicielle et à l’analyse de logiciels que vous possédez ou êtes autorisé à examiner, dans le respect de la loi.

The project's position on illegal or unauthorized use covers all REA versions, distribution channels, and platforms; each copy retains its applicable licenses.

Contribuer

Votre aide sur REA est la bienvenue ! Ouvrez une issue pour signaler un bug ou proposer une fonctionnalité, ou envoyez une pull request pour améliorer le code ou la documentation.

Consultez CONTRIBUTING.md pour l'environnement de développement et les vérifications, la page tests pour les procédures de vérification, et la carte de l'architecture pour la structure du projet.

Licence

MIT

REA-authored code is licensed under MIT. Third-party material retains its own licenses and copyright notices; see Third-party notices for the dependency inventory, preserved license texts, and external-tool terms.

You must legally obtain and be authorized to use commercial tools, including IDA Pro / Hex-Rays decompilers, Hopper, and JEB, under their applicable licenses. REA grants no tool license, key, or activation entitlement. Trials and demos remain subject to vendor terms, including user, feature, automation, and output sharing restrictions. Cracked copies, stolen keys, unauthorized key sharing, and bypassing license restrictions are not authorized. This guidance does not amend MIT or third-party licenses.