---
title: "Reverse Engineer Anything (REA): l'AI che decodifica i binari locali"
date: "2026-10-21"
category: "Sviluppo Software"
tags: ["automazione", "intelligenza artificiale", "mcp", "reverse engineering", "sviluppo software"]
author: "Giuseppe Carruezzo"
description: "REA, lo strumento basato su MCP che permette agli agenti AI di analizzare software e binari in locale senza allucinazioni, per un reverse engineering preciso."
source: "https://ainsights.it/blog/reverse-engineer-anything-rea-guida"
---

# Reverse Engineer Anything (REA): l'AI che decodifica i binari locali

![Reverse Engineer Anything (REA): l'AI che decodifica i binari locali](/blogai/backend/uploads/6ad876768be2b.webp)

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](https://github.com/morluto/rea)) colma questo divario integrandosi come server conforme al [Model Context Protocol (MCP)](https://rea.tools/), 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](https://github.com/morluto/rea/raw/main/website/public/assets/figures/rea-investigation-flow.svg)

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.

```mermaid
flowchart TD
    A[Agente AI: Claude / Cursor / Grok] -->|Comando MCP| B[Server REA Locale]
    B --> C{Tipo di Target}
    C -->|Nativo ELF / PE / Mach-O| D[Motore: Hopper / Ghidra / IDA]
    C -->|Desktop Web / Electron| E[Analizzatore AST JavaScript / ASAR]
    C -->|Mobile / Firmware| F[JADX / Apktool / Binwalk]
    D --> G[Report di evidenze: Offset, Pseudocodice, Simboli]
    E --> G
    F --> G
    G -->|Risultato contestuale| A
    A -->|Codifica e test| H[Implementazione pulita nel progetto]
```

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](/blogai/backend/uploads/6ad8767721272.webp)

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.

<table style="min-width: 75px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><th colspan="1" rowspan="1"><p>Categoria Target</p></th><th colspan="1" rowspan="1"><p>Dati e prove estratti da REA</p></th><th colspan="1" rowspan="1"><p>Prerequisiti analitici</p></th></tr><tr><td colspan="1" rowspan="1"><p><strong>Binari nativi</strong></p></td><td colspan="1" rowspan="1"><p>Pseudocodice, istruzioni assembly, tabelle simboli, riferimenti incrociati e mitigazioni</p></td><td colspan="1" rowspan="1"><p>Hopper, Ghidra o IDA Pro installati localmente</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>App JavaScript &amp; Electron</strong></p></td><td colspan="1" rowspan="1"><p>Albero dei moduli, rotte di navigazione, canali IPC, source maps e binding nativi</p></td><td colspan="1" rowspan="1"><p>Node.js (≥22.19, ≥24.11 o 26+) e procps <code>ps</code> su Linux</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>Assembly gestiti .NET</strong></p></td><td colspan="1" rowspan="1"><p>Metadati CIL, istruzioni Intermediate Language, chiamate native P/Invoke</p></td><td colspan="1" rowspan="1"><p>Nessuno (motore statico integrato)</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>Pacchetti Android (APK)</strong></p></td><td colspan="1" rowspan="1"><p>Manifest decodificato, classi smali, metodi Java/Kotlin decompilati</p></td><td colspan="1" rowspan="1"><p>Headless JADX e JDK configurati</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>Artefatti di modelli AI</strong></p></td><td colspan="1" rowspan="1"><p>Metadati GGUF / safetensors, layout dei tensori e hash crittografici</p></td><td colspan="1" rowspan="1"><p>Nessuno (ispezione header integrata)</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>Bytecode EVM &amp; WASM</strong></p></td><td colspan="1" rowspan="1"><p>Selettori di funzione, offset, mutabilità dello storage, disassembly WAT</p></td><td colspan="1" rowspan="1"><p>WABT 1.0.42 (per WASM), interprete EVM x64 locale</p></td></tr></tbody></table>

L'ispezione statica di archivi JavaScript, bundle .NET ed eseguibili compilati in Rust (tramite i metadati `cargo-auditable`) avviene in modalità completamente isolata: i file non vengono mandati in esecuzione, azzerando il rischio di trigger accidentale di payload dannosi durante la prima ricognizione.

## Guida pratica: installazione e configurazione passo-passo

## Configurare REA con il proprio agente AI

1.  **Verifica dei requisiti di sistema**: Assicurati di disporre di Node.js (versione 22.x >=22.19, 24.x >=24.11 o 26+) e di npm funzionanti sul terminale.
2.  **Avvio dell'installazione automatizzata**: Esegui 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.  **Scelta e autorizzazione dei provider**: Approva 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.  **Riavvio e test operativo**: Riavvia 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](/blogai/backend/uploads/6ad8767794948.webp)

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

## Punti chiave

-   REA trasforma gli agenti di programmazione AI da generatori di codice indovinato a investigatori capaci di consultare motori di disassemblaggio reali.
-   La compatibilità MCP rende il tool trasparente su Claude Code, Cursor, Codex, Gemini CLI e Grok Build.
-   La natura locale dell'ispezione protegge la proprietà intellettuale e la privacy durante l'esame del software.
-   È un alleato decisivo per interoperabilità legale, documentazione di formati obsoleti e sicurezza difensiva.

### Un acceleratore formidabile per l'ingegneria inversa etica — 4.6/5

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.

## FAQ

### 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](https://github.com/morluto/rea)
2.  [Portale Ufficiale rea.tools e Guide](https://rea.tools/)
3.  [Pacchetto npm rea-agents](https://www.npmjs.com/package/rea-agents)

---

*Fonte: [https://ainsights.it/blog/reverse-engineer-anything-rea-guida](https://ainsights.it/blog/reverse-engineer-anything-rea-guida)*
