Files
reverse-engineering-anything/docs/readme/README_ro.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

36 KiB

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: Reverse Engineer Anything

Un singur server MCP pentru inginerie inversă: fișiere binare, aplicații și comportament în timpul execuției.

Ai găsit o funcționalitate care îți place? Înțelege cum funcționează, până la nivel de cod binar.

Versiunea npm Catalogul uneltelor MCP Cerințe Node.js skills.sh Licența MIT Discord

morluto%2Frea | Trendshift

Site web · Ghiduri · Studii de caz

Alătură-te comunității REA pe Discord

Pornire rapidă · Cum funcționează REA · Ce poți analiza · Studii de caz · Construiește medii RL · Întrebări frecvente · Documentație

npx rea-agents setup

Important

Descarcă REA din morluto/rea, de pe rea.tools sau prin pachetul npm rea-agents. Urmează linkurile de instalare și către versiunile publicate oferite de aceste surse oficiale. Un nume de repository asemănător sau un README copiat nu dovedește că descărcarea provine dintr-o sursă oficială.


REA pornește componenta de legătură pentru analiză în Hopper în timp ce inspectează un fișier binar nativ



Discord
Alătură-te comunității de inginerie inversă

Discord · Întrebări și răspunsuri · Prezentări și demonstrații


Ai văzut într-o aplicație o funcționalitate pe care ai vrea să o incluzi în propriul produs? Cere-i agentului tău să o investigheze cu REA. Poate inspecta aplicația fără codul ei sursă, poate explica modul în care funcționează acea funcționalitate, poate prezenta dovezile și poate construi o variantă pentru proiectul tău.

REA conectează agentul tău la unelte pentru inspectarea fișierelor binare native, a aplicațiilor JavaScript și Electron, a ansamblurilor .NET și a site-urilor web. Poți folosi aceleași unelte și din terminal. Analiza rulează local, iar rezultatele includ dovezile și limitările care stau la baza fiecărei concluzii.

Programul de configurare înregistrează REA în agentul tău și instalează instrucțiunile corespunzătoare pentru fluxul de lucru. Analiza nativă poate folosi o instalare existentă de Hopper, Ghidra, IDA sau Kuna; programul de configurare poate instala opțional Hopper, cu aprobarea ta. Analiza statică JavaScript nu necesită un motor de analiză nativă.

Vizitează site-ul REA pentru instrucțiuni de configurare, ghiduri ilustrate și studii de caz reale.

Pornire rapidă

Pe Linux, pornirea Ghidra, JADX și a uneltelor pentru firmware, precum și analiza statică JavaScript/Electron necesită un ps compatibil cu procps în PATH-ul REA, pentru a verifica dacă procesele îi aparțin. Pașii de remediere sunt în docs/getting-started/installation.md, la secțiunea „Linux owned-process prerequisite”.

Configurează agentul

Cu Node.js și npm instalate, rulează:

npx rea-agents setup

Alege agenții, verifică modificările propuse și aprobă-le. Configurarea adaugă serverul MCP REA și instrucțiunile corespunzătoare pentru fluxul de lucru, creând copii de siguranță ale configurației existente. Repornește apoi agentul.

Programul de configurare acceptă Claude Code, Codex, Cursor, Gemini CLI, Grok Build și alți agenți. Consultă instalarea și configurarea pentru configurarea motoarelor de analiză și înregistrarea manuală a serverului MCP.

MCP folosește implicit scheme de intrare compacte, pentru a reduce spațiul ocupat în context. Setează REA_MCP_INPUT_SCHEMA_PROFILE=full în înregistrarea MCP când ai nevoie de îndrumările complete pentru câmpurile expuse și de detaliile validării structurilor imbricate. Ambele profiluri păstrează toate uneltele și validarea canonică a serverului. Consultă secțiunea „Compact input schema profile” din ghidul contractelor MCP.

Cere-i agentului

Înțelege cum funcționează căutarea în aplicația Notes, arată-mi dovezile și
construiește o funcționalitate similară pentru proiectul meu.

Înlocuiește Notes cu aplicația vizată și precizează funcționalitatea pe care vrei să o înțelegi.

Folosește terminalul

Inspectează directorul extras al unei aplicații JavaScript/Electron sau o arhivă ASAR:

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

Rezultatul include modulele, importurile, delimitările dintre componentele Electron și dovezile aferente. Înlocuiește calea cu cea a aplicației vizate, de exemplu "D:/apps/example" pe Windows.

Pentru a instala comanda rea și a o folosi în mod curent:

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

Pentru analiza nativă, configurează mai întâi un motor de analiză. Consultă ghidul CLI și Evidence pentru comenzile de analiză nativă, selectarea motorului, instantanee și utilizarea în scripturi.

Actualizează REA

REA evoluează rapid, iar versiunile noi includ frecvent corecții de erori. Menține instalarea la zi.

Pentru o interfață CLI instalată cu npm install --global sau bun add --global:

rea update

rea --update este un alias pentru acest flux de actualizare verificat și acceptă aceleași opțiuni globale de ieșire. Folosește rea update când îl combini cu alte opțiuni de control al comenzii.

Comenzile de actualizare păstrează cel mult 4 MiB în total din stdout și stderr. Răspunsurile cu metadate prea mari sunt respinse după încheierea comenzii; instalările cu ieșire detaliată continuă cu un volum limitat de date de diagnostic. Afișarea progresului în terminal ține cont de ritmul în care acesta poate primi date și așteaptă finalizarea operațiilor de scriere deja trimise.

Actualizările instalărilor globale cu Bun necesită Bun 1.2.17 sau o versiune mai nouă. Dacă ai o versiune mai veche, actualizează Bun manual înainte de a rula rea update.

Pentru a actualiza înregistrările agenților și skill-ul, rulează comanda de configurare afișată de programul de actualizare.

Dacă folosești npx, actualizează configurarea agentului cu:

npx rea-agents@latest setup

Verifică modificările de configurare și repornește agentul. Pentru comenzi CLI ocazionale, folosește npx rea-agents@latest urmat de comandă. Cu Bun, folosește bunx rea-agents@latest în loc de npx rea-agents@latest.

Cum funcționează REA

Agentul tău apelează REA prin MCP pentru a inspecta ținta și a urmări codul relevant. REA returnează constatările împreună cu dovezile aferente. Agentul le folosește pentru a pune întrebări suplimentare, a explica comportamentul sau a scrie și testa o implementare. Comenzile CLI folosesc aceleași fluxuri de lucru.

Fluxul unei investigații REA: agentul întreabă despre o țintă locală, REA o inspectează și îi urmărește comportamentul cu ajutorul uneltelor de analiză, iar agentul folosește codul, referințele și necunoscutele returnate pentru a explica, implementa și testa.

Deschide figura la dimensiunea originală.

Ce poți analiza

REA necesită Node.js 22.x (>=22.23.4), 24.x (>=24.22.1) sau 26.12.1+, plus npm. Uneltele suplimentare și platformele acceptate depind de ținta analizată:

Țintă Ce returnează REA Cerințe și ghid
Aplicații desktop instalate Componente de execuție candidate, fișiere auxiliare, indicii despre componente și următoarele verificări Inspectare integrată a directoarelor și antetelor, cu limite de resurse; aplicații desktop
Fișiere binare native Pseudocod, cod de asamblare, șiruri de caractere, simboluri, apeluri și referințe Hopper, Ghidra, IDA sau Kuna; analiză nativă
Structura ELF, offline Secțiuni, segmente, simboluri și relocări originale, precum și indicii statice despre mecanismele de protecție pwntools furnizat de utilizator, pe Linux x64; diagnosticarea binarelor
Fișiere binare Go Versiunea compilatorului încorporată în fișier, modulele, înlocuirile și setările de compilare Inspectare statică integrată a fișierelor ELF/PE/Mach-O cu o singură arhitectură; nu necesită instalarea Go
Obiecte de cod GPU Ținte CUDA/HIP, parametri și resurse selectate ale kernelurilor GPU, textul PTX păstrat Inspectare statică integrată a fișierelor ELF/PE/fatbin/CUBIN/PTX; obiecte de cod GPU
Fișiere de model Metadate GGUF / safetensors, declarații de tensori și totaluri calculate din acestea Inspectare integrată a antetelor; opțional, hash al întregului fișier; fișiere de model
Metadate IL2CPP Imagini de ansambluri din global-metadata.dat al Unity, nume de tipuri și metode și intervale de indici Decodare statică integrată a versiunilor 24, 27, 29, 31 și 39; nu necesită Unity
Godot PCK Inventarul și extragerea arhivei, informații originale din antet și director și identificatori ai conținutului selectat Suport static integrat pentru formatele 2, 3 și 4; nu necesită Godot
Fișiere binare Rust Nume, versiuni, surse și relații de dependență ale pachetelor crate încorporate prin cargo-auditable Inspectare statică integrată a fișierelor ELF/PE/Mach-O cu o singură arhitectură; binare Rust
Certificate PE Intrări Authenticode WIN_CERTIFICATE și câmpuri de identitate ale semnatarilor PKCS#7 și certificatelor X.509 Inspectare statică integrată a fișierelor PE; certificate PE
Importuri PE Numele DLL-urilor importate și încărcate întârziat, ordinale, RVA-uri ale IAT și hash-ul importurilor calculat de pefile Inspectare statică integrată a fișierelor PE; importuri PE
Scurtături Windows Țintă Shell Link, argumente, director de lucru, ExtraData și identificatori Tracker Inspectare statică integrată a fișierelor LNK; scurtături Windows
Note ELF Proprietari și tipuri PT_NOTE/SHT_NOTE, câmpuri GNU build-id și ABI-tag Inspectare statică integrată a fișierelor ELF; note ELF
Întărire binară PIE, NX, RELRO, CFG și indicatori de antet pentru ELF, PE și Mach-O Inspecție statică integrată a antetelor; întărire binară
Rapoarte Apple IPS de eroare fatală Metadate .ips, fire de execuție, imagini binare, registre și clase documentate de erori fatale Inspectare statică integrată a datelor JSON; Apple IPS
Module de kernel Linux Chei .modinfo, CRC-uri din __versions, prezența this_module și structura semnăturii de la sfârșitul fișierului Inspectare statică integrată a fișierelor ELF; module de kernel
Erlang BEAM Blocuri IFF, atomi, exporturi, importuri, funcții lambda și antetul Code Inspectare statică integrată a fișierelor BEAM; Erlang BEAM
Fișiere WASM Validare, secțiuni, forme WAT exacte ale importurilor și exporturilor și cod WAT decodat WABT 1.0.42 furnizat de utilizator; inspect_wasm_artifact
Bytecode EVM Selectori de apel, poziții în octeți, argumente și mutabilitate deduse Fișier local în format brut sau hexazecimal, pe Linux x64; ghid EVM offline
Baze de date SQLite Tabele, coloane, indecși, vizualizări, declanșatoare și rânduri selectate din tabele obișnuite Instantaneu local al bazei de date/WAL; Node.js 24.x >=24.15 sau 26+, cu limite SQLite native
Erori fatale Linux înregistrate Note brute, registrele și semnalele fiecărui fir înregistrat și, opțional, corespondențe candidate pentru mapările de memorie pwntools furnizat de utilizator, pe Linux x64; opțional GDB/pwndbg; erori fatale înregistrate
JavaScript / Electron Module, importuri, hărți de cod sursă, rute, IPC și relații cu extensiile native Node.js și npm; pe Linux: ps compatibil cu procps; analiza aplicațiilor
Site-uri web Structura paginilor, scripturi, observații de rețea și capturi de ecran solicitate Un browser din familia Chrome; analiză în browser
Capturi de rețea salvate Cereri, răspunsuri, conținuturi expuse ale mesajelor și pozițiile lor în sursă HAR sau SAZ din Fiddler Everywhere; mitmdump pe Linux pentru formatul nativ mitmproxy; ghidul capturilor
Ansambluri .NET Metadate, instrucțiuni CIL, dependențe native declarate și comparații între compilări Fără cerințe suplimentare (doar analiză statică); ghidul codului gestionat
APK-uri Android Declarații din manifest, clase, metode decompilate și referințe JADX fără interfață grafică și un JDK complet, pe Linux/macOS/Windows x64; ghidul Android
Semnături APK Semnatari v1/v2/v3/v3.1, amprente ale certificatelor, rotația cheilor și consistența internă a hash-urilor Fără cerințe suplimentare (doar analiză statică); inspect_apk_signature
Dispozitive Android Dispozitive, pachete, procese, jurnale, dumpuri, capturi de ecran și transferuri de APK-uri și fișiere adb furnizat de utilizator (emulator sau dispozitiv fizic); ghidul ADB
Proiecte JEB Unități de proiect analizate prin motor, hash-uri ale artefactelor și pseudocod pentru tipuri și metode Un client JEB pornit de utilizator, care oferă un server MCP și este selectat prin REA_JEB_MCP_URL; ghidul JEB
Resurse Android Manifest decodat, tabele de șiruri de caractere, localizări și informații despre versiune Program de lansare Apktool furnizat de utilizator; ghidul resurselor
Aplicații Flutter Hash-ul instantaneului Dart, hash-uri ale bibliotecilor pentru fiecare ABI și proveniența compilării motorului Fără cerințe suplimentare (parsare statică a APK-ului); ghidul Flutter
Firmware Regiuni, rezultate ale extragerii și transferul către analiza nativă Binwalk / Unblob pe Linux; ghidul firmware
Pachete de rețea înregistrate Câmpuri selectate, valori repetate, filtre și reguli decode-as Linux: TShark 4.x + prlimit; ghidul capturilor
Rezumate ale traficului de rețea Puncte terminale, DNS, TLS SNI, distribuția protocoalelor și cereri HTTP tshark și capinfos furnizate de utilizator (verificate pe Linux); ghidul pcap
Semnale logice înregistrate Adnotări ale decodorului, intervale de eșantioane și date de diagnostic Linux: sigrok-cli 0.7.2 + prlimit; înregistrări de semnale
Pachete și resurse Inventare de fișiere, hash-uri, fișiere plist, structura pachetelor de aplicație Apple și resurse extrase Ghidul artefactelor și JavaScript, aplicații Apple
Comportamentul proceselor Ieșirea în terminal, interacțiuni, observații despre terminarea proceselor și sistemul de fișiere și comparații între rulări Linux/macOS cu un PTY nativ; capturarea proceselor
Executabile PyInstaller Membri CArchive, versiunea Python, scripturi de intrare și bytecode extras Fără cerințe suplimentare (doar analiză statică); aplicații Python împachetate
Deno compile binaries Virtual files, entry point, recorded options, npm snapshot length Static inspection; Deno compile executables

Inspectarea statică JavaScript și .NET citește fișierele furnizate fără a rula aplicația. Capturarea în timpul execuției rulează ținta selectată sau interacționează cu aceasta folosind permisiunile contului tău; fiecare ghid de capturare descrie efectele acestor operații.

Pentru inspectarea offline a binarelor native, REA acceptă și GNU objdump și Rizin, furnizate de utilizator. Consultă ghidul uneltelor de inginerie inversă pentru configurare, comenzi CLI și limitările obiectelor Evidence. REA nu instalează și nu actualizează niciunul dintre aceste două instrumente.

Formatele native și platformele acceptate diferă în funcție de motorul de analiză. Consultă configurarea Hopper și Ghidra, ghidul IDA (inclusiv o componentă opțională de legătură MCP nativă), ghidul decompilatorului Kuna și suportul experimental Ghidra pe Windows. Ghidra acceptă și analiza DOS pe 16 biți. Pentru binare mari, mărește timpul maxim de pornire al motorului cu REA_GHIDRA_STARTUP_TIMEOUT_MS sau REA_HOPPER_STARTUP_TIMEOUT_MS. Pentru selectarea motorului, consultă ghidul CLI. Verifică disponibilitatea în versiunile publicate pentru funcționalitățile adăugate după cea mai recentă versiune npm.

Studii de caz

Ilustrații pentru studiile de caz despre panoramarea sunetului în DX-Ball, legătura cu clipboardul în Notion și inelele de proiectile din TH04

DX-Ball: reconstruiește calculul panoramării sunetului

Urmărește un apel audio până la funcția auxiliară care transformă poziția în panoramare stereo, inspectează instrucțiunile și transformă pseudocodul incomplet în C. Reconstrucția trece 3.205 cazuri de test comparate cu originalul x86 și reproduce toți cei 63 de octeți ai funcției compilate.

Citește studiul de caz · Repository-ul reconstrucției

Notion: urmărește legătura Electron cu clipboardul

Găsește API-ul pentru clipboard din procesul de randare, urmărește-l prin preload și IPC până în procesul principal și inspectează formatul datelor cu formatare din clipboard.

Citește studiul de caz

TH04: recuperează calculul unui inel de proiectile DOS

Inspectează instrucțiunile pe 16 biți ale jocului original pentru PC-98, recuperează calculele unghiurilor fixe și ale celor orientate spre țintă și compară codul C++ reconstruit cu rezultatul compilatorului folosit la acea vreme.

Citește studiul de caz · Repository-ul reconstrucției

Construiește medii RL cu REA

Înregistrează o sesiune de aplicație web, transformă API-ul în instrumente și exportă un mediu pe care un agent AI îl poate folosi. Rulează cu AgentEnv, apoi adaugă sarcini și verificări de recompensă pentru antrenare RL sau evaluare.

Ghid pentru construirea unui mediu · Vezi demonstrația pe X

Dacă ai folosit REA pentru ceva interesant, ne-ar plăcea să vedem rezultatul. Prezintă cazul într-un issue sau într-un pull request, menționând ținta analizată, întrebarea ta, cum te-a ajutat REA și ce ai descoperit.

Construiește medii RL

Creează un mediu local în care un agent AI să exerseze sarcini precum găsirea unui issue sau crearea unui dosar, fără a rula aplicația originală. Folosește-l pentru învățare prin recompensă (RL) sau pentru a testa cât de bine îndeplinește agentul sarcinile.

REA transformă cererile și răspunsurile API înregistrate în instrumente pe care agentul le poate apela. Mediul folosește datele înregistrate și permite modificări doar când înregistrarea le confirmă efectele.

După ce configurezi REA în agent, înlocuiește URL-ul și sarcinile pentru dosare din exemplu cu ale tale:

Folosește REA pentru a crea un mediu RL din aplicația mea web de test de la
http://127.0.0.1:3000.
Include listarea, crearea, redenumirea și ștergerea dosarelor. Poți crea și elimina
dosare de test, dar nu modifica datele existente.
Salvează într-un dosar numit my-env, verifică operațiile disponibile și spune-mi cum îl rulez.
Folosește linia de comandă

Folosește aceste comenzi dacă ai deja un fișier cu cererile și răspunsurile aplicației înregistrate în browser. Pentru a rula rezultatul ai nevoie și de AgentEnv și Docker.

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

REA exportă un mediu executabil cu un test de bază care verifică pornirea și răspunsurile. Conectează-l la frameworkul RL pentru a defini obiectivele, a adăuga verificări de recompensă și a rula antrenarea.

Ghid pentru construirea unui mediu · Referință pentru medii · Vezi demonstrația pe X

Întrebări frecvente

Ce agenți pot folosi REA?

Orice agent care acceptă servere MCP locale. Programul de configurare pregătește agenții acceptați; pentru ceilalți clienți poți folosi înregistrarea manuală MCP.

Am nevoie de Hopper, Ghidra, IDA sau Kuna?

Analiza nativă aprofundată folosește unul dintre aceste instrumente. Inspectarea statică JavaScript și .NET funcționează fără un motor de analiză nativă. Programul de configurare poate instala Hopper după aprobare; pentru Ghidra, IDA și Kuna folosește instalările existente. Consultă configurarea motoarelor de analiză.

Trebuie să pornesc mai întâi Hopper?

REA pornește Hopper când o operație are nevoie de el. Pe macOS, un dialog afișat la prima pornire îți poate cere să alegi modul demonstrativ sau să activezi licența. Finalizează acel pas în aceeași sesiune de utilizator înainte de prima operație CLI/MCP sau de prima sarcină nesupravegheată. Deschide Hopper manual dacă este nevoie. Consultă pornirea Hopper și depanarea.

Ce face instalarea skill-ului de pe skills.sh?

Skill-ul oferă agentului instrucțiuni de investigare. Folosește npx rea-agents setup pentru a înregistra serverul MCP REA și a instala instrucțiunile corespunzătoare, apoi repornește agentul. Consultă instalarea doar a skill-ului.

Ce cod returnează REA?

Analiza nativă returnează pseudocod și cod de asamblare. Analiza JavaScript/Electron recuperează modulele și relațiile dintre ele. Agentul tău folosește aceste constatări pentru a scrie și testa o implementare; studiile de caz oferă exemple detaliate.

REA îmi încarcă aplicația pe un server?

REA analizează țintele local. Agentul tău primește rezultatele uneltelor, iar furnizorul modelului său are propria politică privind datele.

Ce fac dacă întâlnesc o eroare?

Actualizează mai întâi; o versiune recentă ar putea să o fi remediat deja.

Pentru o interfață CLI instalată cu npm install --global sau bun add --global:

rea update

Pentru configurarea agentului prin npx:

npx rea-agents@latest setup

Dacă folosești un agent, finalizează actualizarea configurării și repornește-l. Reîncearcă aceeași sarcină. Dacă problema persistă, deschide un issue și include versiunea REA, tipul țintei analizate, pașii de reproducere și mesajele de eroare.

Documentație

Începe cu ghidurile practice de pe site. Pentru opțiunile exacte, cerințele preliminare și contractele rezultatelor:

Raportează vulnerabilitățile conform SECURITY.md.

Istoricul stelelor

🎉 400.000 de stele pe GitHub — vă mulțumim!

Mulțumim tuturor celor care folosesc REA, raportează erori, propun funcționalități, testează versiuni și contribuie cu remedieri.

Istoricul stelelor REA pe GitHub

Precizări privind utilizarea

Consultă DISCLAIMER.md pentru îndrumări privind utilizarea responsabilă.

Poziția proiectului față de utilizarea ilegală sau neautorizată se aplică tuturor versiunilor REA, canalelor de distribuție și platformelor; fiecare copie își păstrează licențele aplicabile.

REA este destinat cercetării legale, educației, interoperabilității, conservării software-ului și analizei programelor pe care le deții sau pe care ai autorizarea să le examinezi.

Contribuții

Ne-ar bucura să contribui la REA! Deschide un issue pentru a raporta o eroare sau a propune o funcționalitate ori trimite un pull request pentru a îmbunătăți codul sau documentația.

Consultă CONTRIBUTING.md pentru pregătirea mediului de dezvoltare și verificări, ghidul de testare pentru categoriile de verificări și diagrama arhitecturii pentru anumite straturi și relații de dependență.

Licență

MIT

Codul scris în cadrul REA este licențiat sub MIT. Materialele terților își păstrează propriile licențe și mențiuni privind drepturile de autor; consultă mențiunile privind terții pentru inventarul dependențelor, textele licențelor păstrate și condițiile aplicabile uneltelor externe.

Trebuie să obții legal uneltele comerciale și să ai dreptul să le folosești, inclusiv decompilatoarele IDA Pro / Hex-Rays, Hopper și JEB, în condițiile licențelor aplicabile. REA nu îți acordă nicio licență, cheie sau drept de activare pentru aceste unelte. Versiunile de evaluare și demonstrative rămân supuse condițiilor furnizorilor, inclusiv restricțiilor privind utilizatorii, funcționalitățile, automatizarea și partajarea rezultatelor. Nu sunt autorizate copiile piratate, cheile furate, partajarea neautorizată a cheilor sau ocolirea restricțiilor de licențiere. Aceste îndrumări nu modifică licența MIT sau licențele terților.