Chiedere a un modello linguistico di clonare una funzionalità complessa da un'applicazione proprietaria senza fornirgli il codice sorgente ha prodotto finora solo allucinazioni plausibili. Con REA (Reverse Engineer Anything), il paradigma cambia: grazie allo standard Model Context Protocol, gli agenti AI ottengono un ponte operativo verso disassemblatori e analizzatori locali per estrarre logica binaria, protocolli IPC e flussi applicativi con prove verificabili.

300.000+
GitHub Star
Adozione registrata dal repository morluto/rea
63 byte
Fedeltà binaria
Decompilazione perfetta del calcolo audio x86 di DX-Ball
25+
Formati supportati
Da binari nativi (ELF/PE/Mach-O) ad app Electron e modelli GGUF

Che cos'è REA e perché colma un vuoto critico nell'ingegneria inversa assistita da AI

Il reverse engineering (l'analisi strutturale e funzionale di un software compilato in assenza di codice sorgente) è storicamente una disciplina riservata a specialisti capaci di padroneggiare strumenti ostici come Ghidra, Hopper o IDA Pro. Quando uno sviluppatore chiede a un assistente di codifica moderno come Claude Code, Cursor o Grok Build di replicare un comportamento osservato su un'app esistente, il modello tenta tipicamente di indovinare l'implementazione basandosi sul testo dei prompt.

REA (morluto/rea) colma questo divario integrandosi come server conforme al Model Context Protocol (MCP), un'interfaccia standardizzata che consente ai modelli di intelligenza artificiale di interrogare e controllare strumenti esterni nel proprio ambiente operativo locale. Invece di tirare a indovinare, l'agente esegue comandi mirati su REA per ispezionare il binario o l'archivio, estrarre pseudocodice e tabelle di simboli, esaminare le chiamate di sistema e restituire un'analisi supportata da evidenze univoche.

Diagramma del flusso investigativo di REA: l'agente interroga il target locale, REA esamina e traccia con strumenti di analisi, e il modello sintetizza codice e test
Il flusso operativo di REA: l'interazione bidirezionale tra agente AI, motore analitico e binario locale.

Come opera REA: dall'interrogazione dell'agente alla prova tangibile

Il principio architetturale di REA privilegia l'esecuzione in locale e la tracciabilità delle prove. Ogni risposta inviata all'agente include non solo il codice derivato o lo pseudocodice, ma anche le catene di riferimenti incrociati, i vincoli e le incertezze metodologiche residue.

La sequenza d'indagine segue passaggi rigorosi:

  1. Aggancio del contesto: L'utente formula un'intenzione in linguaggio naturale («Capisci come funziona la ricerca nell'app Notes e crea una funzione equivalente»).

  2. Scansione strutturale: REA determina il formato del file (binario x86/ARM, pacchetto ASAR Electron, assembly .NET, bytecode Android o archivio PCK di Godot).

  3. Disassemblaggio e decompilazione: Se il target richiede un'analisi binaria approfondita, REA attiva l'engine prescelto (Hopper, Ghidra, IDA Pro o Rizin) mantenendo il controllo entro timeout prefissati configurabili tramite variabili d'ambiente (come REA_GHIDRA_STARTUP_TIMEOUT_MS).

  4. Estrazione delle evidenze: Vengono estratti i selettori di dispatch, le tabelle di stringhe, i registri macchina o le chiamate IPC (Inter-Process Communication).

  5. Sintesi autonoma: Con il report in mano, l'agente converte la logica isolata in codice moderno (es. C, C++ o TypeScript) ed elabora i casi di test per verificarne la parità funzionale.

Pannello di controllo dell'analisi REA agganciato a Hopper disassembler durante l'analisi di un binario nativo
Integrazione visiva di REA con Hopper durante la decostruzione di un file eseguibile nativo.

Lo spettro di analisi: dai binari compilati ai modelli generativi

A differenza dei decompilatori monolitici, REA è stato progettato per catalogare ambienti software compositi, inclusi gli stack moderni basati su framework web e artefatti di machine learning.

Categoria Target

Dati e prove estratti da REA

Prerequisiti analitici

Binari nativi

Pseudocodice, istruzioni assembly, tabelle simboli, riferimenti incrociati e mitigazioni

Hopper, Ghidra o IDA Pro installati localmente

App JavaScript & Electron

Albero dei moduli, rotte di navigazione, canali IPC, source maps e binding nativi

Node.js (≥22.19, ≥24.11 o 26+) e procps ps su Linux

Assembly gestiti .NET

Metadati CIL, istruzioni Intermediate Language, chiamate native P/Invoke

Nessuno (motore statico integrato)

Pacchetti Android (APK)

Manifest decodificato, classi smali, metodi Java/Kotlin decompilati

Headless JADX e JDK configurati

Artefatti di modelli AI

Metadati GGUF / safetensors, layout dei tensori e hash crittografici

Nessuno (ispezione header integrata)

Bytecode EVM & WASM

Selettori di funzione, offset, mutabilità dello storage, disassembly WAT

WABT 1.0.42 (per WASM), interprete EVM x64 locale

Guida pratica: installazione e configurazione passo-passo

Guida passo-passo

Configurare REA con il proprio agente AI

  1. 1
    Verifica dei requisiti di sistemaAssicurati di disporre di Node.js (versione 22.x >=22.19, 24.x >=24.11 o 26+) e di npm funzionanti sul terminale.
  2. 2
    Avvio dell'installazione automatizzataEsegui nel terminale il comando 'npx rea-agents setup'. Lo script rileva gli agenti installati (Claude Code, Cursor, Codex, Gemini CLI o Grok Build) e prepara i file di configurazione.
  3. 3
    Scelta e autorizzazione dei providerApprova l'inserimento delle istruzioni di workflow e la configurazione del server MCP. Se richiesto, autorizza l'eventuale download e setup del motore Hopper per l'ispezione dei binari nativi.
  4. 4
    Riavvio e test operativoRiavvia il client del tuo agente AI. Da questo momento puoi interrogare l'agente chiedendogli direttamente di analizzare file eseguibili, archivi ASAR o pacchetti APK presenti sul tuo disco locale.

Per ispezioni rapide da riga di comando senza passare da un'interfaccia di chat, REA mette a disposizione comandi dedicati:

shell
npx -y rea-agents@latest analyze-javascript-application /percorso/assoluto/app --json

Per le installazioni globali, il pacchetto include un meccanismo di aggiornamento rapido che protegge il buffer del terminale troncando output superiori a 4 MiB:

shell
npm install --global rea-agents rea update

Casi studio reali: dove REA ha dimostrato il proprio valore

L'efficacia di uno strumento di reverse engineering assistito da AI si misura sulla precisione con cui ricrea comportamenti esatti senza alterare la logica originale. Tre dimostrazioni pratiche pubblicate dal progetto evidenziano questa flessibilità:

Illustrazioni dei tre casi studio di REA: panning sonoro di DX-Ball, IPC di Notion e routine angolare di TH04
I casi d'uso concreti risolti con REA: retro-engineering matematico e tracciamento di architetture desktop complesse.

1. DX-Ball e l'algoritmo di panning audio

Nel videogioco classico DX-Ball, il calcolo della spazializzazione stereofonica dipende dalla posizione della pallina rispetto alla barra di gioco. Guidato da REA, l'agente ha tracciato la funzione specifica x86 all'interno del disassemblatore, convertito il flusso di istruzioni assembly in puro codice ANSI C e convalidato la routine su 3.205 test case, riproducendo perfettamente tutti i 63 byte compilati della funzione originale.

2. Notion e il ponte appunti su Electron

Tracciare come un'app complessa gestisce la formattazione avanzata della clipboard richiede di saltare attraverso più confini architetturali. REA ha consentito di mappare le API del renderer di Notion, attraversare il file di preload e seguire i messaggi IPC fino al processo main, rivelando l'esatta struttura dei dati scambiati tra sandbox e sistema operativo host.

3. TH04: decodifica trigonometrica a 16-bit

Nel contesto della preservazione del software per piattaforma retro PC-98, REA ha esaminato le istruzioni DOS a 16-bit del titolo Touhou 04 per estrarre la routine di calcolo degli angoli di tiro dei proiettili, consentendo di generare codice C++ verificato contro i comportamenti del compilatore dell'epoca.

Pro
  • ✓Architettura unificata tramite Model Context Protocol (MCP) compatibile con i principali agenti sul mercato
  • ✓Analisi statica e dinamica eseguita al 100% in locale senza esporre file proprietari su server terzi
  • ✓Supporto esteso: dai vecchi binari a 16 bit ai formati moderni di modelli neurali (GGUF, safetensors)
  • ✓Tracciabilità scientifica: il tool riporta le evidenze grezze (offset, opcode) riducendo le allucinazioni dell'AI
Contro
  • ✗L'analisi binaria avanzata richiede licenze o installazioni esterne (Ghidra, Hopper, IDA Pro)
  • ✗Configurazione iniziale non banale su ambienti Linux, dove servono utility specifiche come procps, pwntools o TShark
Il nostro verdetto
4.6/ 5

Un acceleratore formidabile per l'ingegneria inversa etica

REA colma con eleganza il divario tra strumenti di decompilazione professionale e intelligenza artificiale contestuale. Pur richiedendo una conoscenza di base dell'architettura software per formulare i prompt corretti e gestire dipendenze esterne come Ghidra o JDK, rappresenta a oggi la soluzione più avanzata e aperta per consentire agli agenti AI di 'leggere' la realtà binaria senza inventarla.

REA trasmette i binari o i dati del software su server esterni?
No. L'analisi condotta da REA viene eseguita interamente in locale sulla macchina dell'utente. Va tuttavia ricordato che i dati estratti (simboli, pseudocodice, evidenze) vengono passati come contesto al modello linguistico configurato nell'agente, il quale risponde alle policy di riservatezza del proprio provider.
È obbligatorio acquistare una licenza di Hopper o IDA Pro per usarlo?
No. Molte funzionalità, tra cui l'analisi di applicazioni JavaScript/Electron, pacchetti .NET e file modello GGUF, funzionano in modo del tutto autonomo. Per i binari compilati nativi è possibile utilizzare alternative open source gratuite come Ghidra o Rizin.
Quali sono gli scopi legali consentiti per l'utilizzo di REA?
Come precisato dalla documentazione e dal file DISCLAIMER.md del progetto, REA è destinato a ricerca accademica, interoperabilità software, preservazione del patrimonio informatico e analisi autorizzata su codice di cui si detengono i diritti o il permesso esplicito di revisione.

Fonti e riferimenti

  1. Repository Ufficiale REA su GitHub
  2. Portale Ufficiale rea.tools e Guide
  3. Pacchetto npm rea-agents