Files
reverse-engineering-anything/docs/readme/README_fr.md
T
22f28644fe feat(artifacts): inventory and extract Deno compile executables (#8527)
* feat(artifacts): inventory and extract Deno compile executables

Adds Deno standalone artifact support for Mach-O, ELF, and PE carriers,
exposing virtual files, entry points, recorded options, and file digests
without running the executable. Extraction uses the existing safe output
tree, preserves symlink targets as metadata, and assigns indexed paths
to unsafe or oversized names. Environment-file values and certificate
bytes remain in local Evidence; npm snapshots are reported by length
without decoding. The documentation describes supported layouts, parsing
limits, and refusal behavior.

* fix(artifacts): resolve nested Intel Deno carriers to the enclosing app

The backward trailer search stopped at the first confirmed sentinel, so an
Intel app storing another Intel Deno executable as a virtual file reported
the inner app. Search to the slice start, drop sentinels inside a confirmed
payload, and fail closed on side-by-side trailers that differ.

Correct the docs on retained environment values and generated regions.

* fix(artifacts): keep Deno coverage, remote paths and PE resources truthful

Report unknown coverage when the virtual filesystem cannot be listed, keep
resolved specifiers when another remote ID is missing, and percent-encode
characters in remote paths that a Windows destination would refuse. Reject a
directory at the PE resource language level, and correct the guide's
description of colliding generated regions.

* fix(artifacts): normalize Deno remote escapes so hex case cannot collide

Uppercase every percent escape in a generated remote path, so specifiers that
differ only in escape case reach the path registry as one name and the second
gets an indexed path instead of colliding on a case-insensitive disk.

* fix(artifacts): fail closed on truncated enclosing Deno trailers and encode reserved remote path characters

The Intel trailer scan rejected an overlong sentinel before reading its
marker, so a truncated enclosing app vanished and the nested app was
reported. Read the marker first and fail closed when a confirmed overlong
trailer encloses another trailer.

encodeURIComponent leaves `*` alone and the sanitizer covered only part of
the Windows reserved set. remoteDestination now encodes the whole set once
as uppercase percent hex; source_path keeps the original.

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

* fix(artifacts): defer truncated Intel Deno trailer failure until enclosing trailers resolve

A damaged Intel asset stored before a valid one inside a valid app made the
backward trailer search fail before it reached the outer trailer. Hold that
failure until the search ends and drop it when a confirmed enclosing trailer
holds the sentinel as data.

* fix(pe): fail closed when a resource type branch is unreadable beside a found name

namedResourceTargets skipped a type branch whose names directory, or a
name entry whose string, could not be read. A duplicate RT_RCDATA entry
pointing out of bounds therefore vanished once another branch matched,
and locatePeResourcePayloads returned only the readable ranges while
parsePeResources rejected the same tree.

The walk now records unresolved branches. hasPeResourceName still
reports false for a tree that never reaches the name, but once
locatePeResourcePayloads finds the name it raises a format failure if
any branch was left unresolved.

* fix(artifacts): skip Intel Deno sentinels that a native segment maps

A non-Deno x86_64 Mach-O that stores an Intel Deno executable in __DATA
had the asset's trailer promoted to the root application, because the
backward sentinel search never checked who owned the bytes it scanned.

locateMachOSlice now records the file ranges of every segment other than
__SUI and __LINKEDIT (libsui extends __LINKEDIT over the trailer), and
the Intel search skips any sentinel inside one of them. A slice whose
load commands do not frame stays with native inventory, since ownership
cannot be shown there.

* fix(artifacts): reject a universal Deno image with an unreadable sibling slice

The universal Mach-O locator skipped any slice whose load commands could
not be read or framed, and any slice with a FAT range issue. When another
slice confirmed Deno, that slice was reported as the whole image, so a
sibling declaring a different Deno application went unexamined.

locateMachOSlice now reports why part of a slice was not examined
(unreadable or unframed load commands, a truncated slice, or the Intel
sentinel allowance). locateMachO collects those reasons for every
declared and hidden slice and fails closed once any slice confirms a
Deno section. With none confirmed, the image stays with native inventory
as before.

* fix(scripts): supervise the Deno verifier version check

Run `deno --version` through the verifier command owner with a deadline
instead of raw execFile, and close the owner when the version is refused.

* fix(artifacts): keep unconfirmed Deno carriers native and fail truncated Intel trailers

An ELF SUI note whose descriptor is too short for the full d3n0l4nd name
now stays unconfirmed instead of failing closed; failures after the name
matches still fail closed.

Every marker-confirmed Intel trailer whose payload runs past the slice is
now kept until the backward search ends and fails unless an enclosing
payload contains it, so an Intel Deno app missing its last byte reports a
Deno failure instead of native inventory.

The Deno MCP boundary test now calls open_binary and inspect_artifact
through artifactMcpCall, as docs/testing.md requires.

* test(deno): drop source-text checks from verifier pin test

Keep the wrong-version subprocess check, which covers the pinned
release through behavior, and stop asserting on the verifier script's
source spelling.

* test(deno): close readers in finally in symlink and cancellation tests

A failed assertion or read error in either test skipped reader.close(),
leaving the file open while temp-directory cleanup ran. Both tests now
close the reader in finally, as CONTRIBUTING.md requires. The
closed-reader assertion in the symlink test stays after the finally.

* docs(specs): add deno-standalone spec, plan and tasks

Add docs/specs/artifacts/deno-standalone/ with spec.md, plan.md and
tasks.md for the Deno compile executable reader, as AGENTS.md requires
for a feature, and list them in the specifications index.

* docs: list the Deno compile guide in the documentation sidebar

* fix(deno): confirm the d3n0l4nd section before claiming Mach-O damage

A __SUI segment alone no longer makes later load-command damage Deno's.
A Mach-O whose __SUI segment holds only a differently named section now
stays absent and keeps native inventory, while damage seen before or
beside a confirmed d3n0l4nd section still fails closed.

* fix(deno): keep a slice with an unparsed segment command unread

A Mach-O segment command that frames but cannot be parsed may be the
__SUI segment, so the slice is no longer treated as fully examined. A
universal image whose other slice confirms Deno now fails closed instead
of letting that sibling supply the whole inventory, and with no confirmed
sibling the image still keeps native inventory.

* fix(deno): confirm an ELF SUI note before rejecting its length

A SUI note whose descsz runs past its note table was recorded as plain
damage before its descriptor name was read, so a malformed Deno carrier
fell back to native inventory. The owner and the d3n0l4nd name prefix are
now read within the table apart from the claimed extent, and a confirmed
note with an oversized extent fails closed.

* fix(deno): confirm a truncated __SUI section record by its name

A section record cut short after its 16-byte name was skipped, so a
damaged Deno carrier fell back to native inventory. The name is now read
apart from the rest of the record, and a truncated record that names
d3n0l4nd fails closed. The range checks for a confirmed record move into
their own helper.

* fix(deno): reject nonzero bytes after the last ELF note

When fewer than 12 bytes remained in a note table after its last note,
the walk stopped without looking at them, so a Deno note was selected
with complete coverage beside unaccounted data. The remainder is now
read: zero padding is accepted, and nonzero bytes are recorded as damage,
which fails closed once a SUI note is confirmed and otherwise leaves the
ELF to native inventory, matching the native note parser.

* fix(deno): validate FAT slice identity before choosing the search

The locator took a universal slice's CPU type from its FAT row, so a row
that called an x86_64 slice arm64 skipped that slice's Intel trailer and
let the arm64 payload stand for the whole image. Each slice's header is
now checked against its row with validateFatSliceIdentity. A mismatch
leaves the slice unread, so a universal image whose other slice confirms
Deno fails closed. The Intel fixture header now states
CPU_SUBTYPE_X86_64_ALL so its FAT rows can match it exactly.

* fix(deno): check the Intel trailer marker before judging its length

A trailer length word of 2^53 or more was dropped before its d3n0l4nd
marker was read, so an enclosing app with that length was skipped and a
nested app's range stood for the whole image. The marker is now read
first, and a marker-confirmed trailer whose length runs past the slice,
safe or not, joins the deferred truncated candidates and fails closed
unless an enclosing trailer holds it as data.

* fix(deno): count short ELF note tables against the note allowance

A note table shorter than one note header made a read of its trailing
bytes but counted no note, so many distinct tiny tables could force one
sequential read each past the 256-note allowance. Every nonempty table
now counts at least one entry, both in the up-front estimate and while
scanning, so an image past the allowance records the limit instead of
reading every table. The trailing-byte check moves into its own helper.

* fix(deno): fail closed on ELF extended section numbering beside a SUI note

A zero e_shnum with a nonzero e_shoff moves the section count into
section zero, so the section table was skipped and its SHT_NOTE tables
were never compared. Record it as damage, as PN_XNUM already is, so a
confirmed SUI note fails closed instead of reporting full coverage.

* fix(deno): keep undersized Intel trailers until enclosing ownership is known

A trailer length word below 8 was dropped before its d3n0l4nd marker was
read, so an enclosing app with a length of 0 to 7 was skipped and a nested
app's trailer was selected as the root. The marker is now read first, and a
marker-confirmed trailer too short to hold it is kept as malformed and fails
closed unless an enclosing trailer holds it as data.

* fix(pe): treat non-directory RT_RCDATA branches as unresolved

A duplicate typeId root entry whose target is a data entry was skipped
without marking the walk unresolved, so locatePeResourcePayloads returned
the readable named resource as complete. Route non-directory type
branches through the same unresolved path as unreadable names
directories so the Deno reader fails closed.

* fix(deno): fail closed on a zero-fill d3n0l4nd Mach-O section

denoSectionRange admitted the declared offset and size of a confirmed
__SUI,d3n0l4nd record without checking its section type, so a
S_ZEROFILL, S_GB_ZEROFILL or S_THREAD_LOCAL_ZEROFILL section could be
read as a file payload while MachoImage reports it as not file backed.
Reject zero-fill types with the shared isMachoZeroFillSection predicate
before assigning a physical range.

* fix(deno): bound the d3n0l4nd Mach-O section by its segment file extent

denoSectionRange checked a confirmed __SUI,d3n0l4nd record only against
the slice and file bounds, so a section reaching past its segment's
fileoff/filesize was still read as a complete payload while MachoImage
reports the same section as not file backed. Reject a section outside
its enclosing segment's file extent before admitting the physical range.

* style(deno): apply oxfmt to the DenoStandaloneLocation embedding union

* fix(artifacts): preserve Deno carrier ownership

* fix(artifacts): admit Deno parent segments

* fix(deno): preserve native segment ownership

* test(deno): cover mismatched Mach-O segment widths

---------

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: morluto <76467478+morluto@users.noreply.github.com>
2026-11-09 21:43:01 +08:00

34 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 · Română

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

Rejoignez la communauté REA sur Discord

Démarrage rapide · Comment fonctionne REA · Ce que vous pouvez analyser · Études de cas · Créer des environnements RL · Questions fréquentes · 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, d'IDA ou de Kuna ; 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, IDA ou Kuna ; 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
Windows shortcuts Shell Link target, arguments, working dir, ExtraData and Tracker droid facts Built-in static LNK inspection; Windows shortcuts
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
Binary hardening PIE, NX, RELRO, CFG and related header flags for ELF, PE and Mach-O Built-in static header inspection; binary hardening
Linux kernel modules .modinfo keys, __versions CRCs, this_module presence, and signature trailer Built-in static ELF inspection; kernel modules
Erlang BEAM IFF chunks, atoms, exports, and tables Built-in static BEAM inspection; Erlang BEAM
Apple IPS crashes .ips metadata, threads, images, registers and crash classes Built-in static JSON inspection; Apple IPS
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
Deno compile binaries Virtual files, entry point, recorded options, npm snapshot length Static inspection; Deno compile executables
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.

Pour inspecter les binaires natifs hors ligne, REA prend aussi en charge GNU objdump et Rizin, que vous devez fournir vous-même. Le guide des outils de rétro-ingénierie décrit la configuration des fournisseurs, les commandes CLI et les limites des Evidence. REA n’installe ni ne met à jour ces deux fournisseurs.

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

Créer des environnements RL avec REA

Enregistrez une session d’application web, transformez son API en outils et exportez un environnement utilisable par un agent IA. Exécutez-le avec AgentEnv, puis ajoutez des tâches et des vérifications de récompense pour l’entraînement RL ou l’évaluation.

Guide de création d’un environnement · Voir la démo sur X

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.

Créer des environnements RL

Créez un environnement local où un agent IA peut s’exercer à des tâches comme trouver un ticket ou créer un dossier, sans exécuter l’application d’origine. Utilisez-le pour l’apprentissage par renforcement (RL) ou pour tester la capacité d’un agent à accomplir des tâches.

REA transforme les requêtes et réponses API enregistrées en outils que l’agent peut appeler. L’environnement utilise les données enregistrées et ne prend en charge des modifications que si l’enregistrement confirme leurs effets.

Configurez REA dans votre agent, puis adaptez l’URL et les tâches sur les dossiers à votre application :

Utilise REA pour créer un environnement RL à partir de mon application web de test à
http://127.0.0.1:3000.
Couvre la liste, la création, le renommage et la suppression de dossiers.
Tu peux créer et supprimer des dossiers de test. Ne modifie pas les données existantes.
Enregistre-le dans un dossier nommé my-env, vérifie les opérations disponibles et explique-moi comment le lancer.
Utiliser la ligne de commande

Utilisez ces commandes si vous disposez déjà d’un fichier contenant les requêtes et réponses de l’application enregistrées dans le navigateur. L’exécution du résultat nécessite aussi AgentEnv et Docker.

rea environment-build ./session.har ./my-env --name my-env --json
agent-env run ./my-env

REA exporte un environnement exécutable avec un test de base qui vérifie qu’il démarre et répond. Utilisez-le avec votre framework RL pour définir les objectifs, ajouter les vérifications de récompense et lancer l’entraînement.

Guide de création d’un environnement · Référence des environnements · Voir la démo sur X

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, IDA ou Kuna ?

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, IDA et Kuna 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

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