Files
reverse-engineering-anything/docs/readme/README_fr.md
T
4ef916da03 feat(pe): inspect import and delay-load tables (#6509)
* feat(pe): inspect import and delay-load tables

Add inspect_pe_imports / inspect-pe-imports to read PE32/PE32+ import
and delay-load directories without executing the image. The report keeps
DLL names, named and ordinal functions, ILT/IAT RVAs, and a pefile
import hash of the standard import table. A missing directory is
observed absence, not proof the image never imported APIs.

* fix(pe): default PE import fixture options

Allow peImportImage() without an argument so CLI and filesystem tests
can use the KERNEL32 sample without repeating an empty options object.

* test(pe): keep import path cases on the dedicated MCP contract

inspect_pe_imports already rejects relative MCP paths in its own
boundary test. Leave the shared absolute-path matrix to tools whose
handler issue projection matches that suite's expected shape.

* fix(native): index virtual-to-file mapping lookups

mappedFileOffset scans every mapping twice per span, so a parser that
translates one span per table entry costs sections x entries. Add
fileMappingLookup, which builds an O(n log n) interval index once and
answers each span in O(log n) with the same accept, reject and
translation results. A differential test checks it against
mappedFileOffset over randomized overlapping mappings and zero fills.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ra7LM2NyQ7DumdssxbUq5g

* fix(pe): report partial import evidence and exact pefile hashes

- Withhold imphash with an explicit reason whenever the standard import
  table is partial (unreadable names or thunks, missing tables), or when
  pefile 2024.8.26 would hash a different row sequence: invalid or
  truncated names, ordinal 0, descriptors without functions, tables its
  bounds or repeat/spread heuristics discard, and its 8192-thunk import
  symbol cap. Delay-load issues do not withhold it.
- Hash ordinal imports with pefile's complete ordlookup tables and its
  ord<decimal> fallback instead of declining unmapped ordinals.
- Report a nonterminal descriptor whose FirstThunk is zero, and a
  delay-load descriptor whose IAT or INT RVA is zero, as malformed_entry
  partial coverage instead of a complete empty inventory.
- Directory evidence lists the file spans actually consumed for the
  descriptor array and terminator; discontiguous mappings produce
  separate spans and separate Evidence ranges.
- Carry exhausted limits as PeImportLimitFailure.limit and derive
  recovery from it; the fixed 16 MiB retained-text ceiling reports a
  fixed allowance instead of max_file_bytes advice.
- Translate RVAs through the indexed mapping lookup and yield with a
  cancellation check every 1024 table entries.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ra7LM2NyQ7DumdssxbUq5g

* fix(pe): read only own ordinal tables for DLL names

DLL names such as constructor and __proto__ pass pefile's name rule but
resolved inherited object members, throwing before the ord<n> fallback.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ra7LM2NyQ7DumdssxbUq5g

* fix(native): preserve PE import facts and prove hash compatibility

* test(native): verify PE import workflows and measured costs

* refactor(native): narrow PE facts across the container union

* docs(native): record integrated PE import validation

* fix(native): bound every PE import RVA span

* docs(native): measure RVA guard completed workflows

* fix(pe): reconcile import coverage with retained rows

* fix(pe): retain partial imports at descriptor mapping gaps

---------

Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
2026-10-24 11:44:12 +08:00

28 KiB
Raw Blame History

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

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

Sous Linux, les lancements de Ghidra, JADX et des outils de firmware, ainsi que l’analyse statique JavaScript/Electron, nécessitent un ps compatible procps dans le PATH de REA pour vérifier la propriété des processus. Voir le prérequis Linux.

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.

MCP utilise par défaut des schémas d’entrée compacts. Pour les descriptions complètes des champs et de la validation imbriquée, définissez REA_MCP_INPUT_SCHEMA_PROFILE=full dans l’enregistrement MCP. Les deux profils conservent tous les outils et la même validation canonique du serveur ; voir le guide des contrats MCP.

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

rea --update est un alias de rea update avec les mêmes options globales de sortie. Les commandes de mise à jour conservent au plus 4 MiB de stdout/stderr au total. Les réponses de métadonnées trop grandes sont refusées à la fin ; les installations détaillées gardent des diagnostics bornés. La progression respecte la contre-pression du terminal et attend la fin des écritures soumises.

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.23.4), 24.x (>=24.22.1) ou 26+ (>=26.12.1), 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
PE certificates Authenticode WIN_CERTIFICATE entries and PKCS#7 signer/X.509 identity fields Built-in static PE inspection; PE certificates
PE imports Import and delay-load DLL names, ordinals, IAT RVAs and pefile import hash Built-in static PE inspection; PE imports
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
ELF notes PT_NOTE/SHT_NOTE owners, types, GNU build-id and ABI-tag fields Built-in static ELF inspection; ELF notes
Erlang BEAM IFF chunks, atoms, exports, and tables Built-in static BEAM inspection; Erlang BEAM
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
Installations de bureau Environnements candidats, fichiers justificatifs, composants et étapes suivantes Inspection bornée des répertoires et en-têtes;Applications de bureau
JavaScript / Electron Modules, imports, source maps, routes, IPC et relations avec les modules natifs Node.js et npm ; analyse d'applications; Linux: procps ps
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 / Fiddler Everywhere SAZ ; 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é
PyInstaller CArchive, PYZ, Python bytecode Static inspection; Python packaged applications
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
Binaires Go Version du compilateur embarquée, modules, remplacements et paramètres de compilation Inspection statique intégrée ELF/PE/thin Mach-O; Aucune installation de Go nécessaire
Bases SQLite Tables, colonnes, index, vues, déclencheurs et lignes sélectionnées de tables ordinaires Instantané local base/WAL ; Node.js 24.x >=24.15 ou 26+ avec limites SQLite natives
Objets de code GPU Cibles CUDA/HIP, paramètres et ressources de noyaux sélectionnés, texte PTX conservé Inspection statique intégrée ELF/PE/fatbin/CUBIN/PTX; GPU
Fichiers de modèles Métadonnées GGUF / safetensors, déclarations de tenseurs et totaux dérivés Lecture des en-têtes ; empreinte complète facultative; GGUF / safetensors
Métadonnées IL2CPP Images d’assemblages Unity global-metadata.dat, noms de types/méthodes et plages d’index Décodage statique des versions 24, 27, 29, 31, 39 ; sans Unity
Godot PCK Inventaire et extraction d’archive, en-têtes/répertoires originaux et identités des contenus sélectionnés Formats statiques 2, 3, 4 ; sans Godot
Signatures APK Signataires v1/v2/v3/v3.1, empreintes de certificats, rotation des clés et cohérence interne des condensats Inspection statique intégrée; inspect_apk_signature

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 / REA_HOPPER_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

🎉 300 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.