Una Guida Pratica e Prudente

Come fare reverse engineering di un'app con Claude Code

Claude Code di Anthropic e lo strumento open source REA sono citati qui solo per descriverli con precisione. Nightschool AI è indipendente, non affiliata né sostenuta da Anthropic o dai creatori di REA.

Fare reverse engineering di un software significa studiare come si comporta senza avere il suo codice sorgente originale, di solito per capirlo, far funzionare qualcos'altro insieme ad esso, mantenerlo utilizzabile, o trovare un problema di sicurezza.

Leggi la risposta completa

REA è un server MCP e una CLI open source che permette a un agente come Claude Code di leggere la struttura di un programma e restituire prove concrete, un file, una funzione, una chiamata, invece di un'ipotesi. Installalo solo dal suo repository ufficiale, usalo solo su software che possiedi o che sei autorizzato a esaminare, mantieni separata la sessione di build da quella che ha studiato l'originale, e parla con un avvocato prima di pubblicare qualsiasi cosa costruita in questo modo.

Pubblicato il

Punti chiave

  • Il reverse engineering significa studiare un software finito per capire come funziona, di solito senza il suo codice sorgente, per motivi come la ricerca sulla sicurezza, l'interoperabilità, la conservazione, o semplicemente per capire qualcosa di non documentato.
  • REA è un server MCP e una CLI open source, pubblicato su github.com/morluto/rea con licenza MIT, che permette a un agente come Claude Code di ispezionare binari e applicazioni e restituire prove: un file, una funzione, una chiamata.
  • Studiare come funziona un software viene trattato in modo diverso, legalmente, dal copiarne il codice o gli asset protetti. Due decisioni del Nono Circuito, Sega v. Accolade e Sony v. Connectix, vengono spesso citate su questo punto, ma nessuna delle due è una regola generale.
  • Il disclaimer di REA esclude esplicitamente l'aiuto per eludere DRM, controlli di licenza o sistemi anti-cheat, e afferma che il suo output non concede alcun diritto sul programma originale. Esamina solo software che possiedi, che hai scritto, o che sei autorizzato a studiare.
  • Un flusso di lavoro clean-room in due sessioni, una sessione di specifica e una sessione di build separata che legge solo la specifica risultante, supporta un eventuale argomento clean-room in seguito. È una prassi, non una garanzia legale, e non sostituisce un avvocato.
Lezione gratuita · nessun account richiestoIncontra ClaudePerché Claude?6 minInizia la lezione gratuita

Copia e incolla

Prompt da usare subito

Verifica il funzionamento su codice che già conosci

REA è installato e configurato con te ora. Apri la piccola app che ho scritto io al percorso che ti indico, e per ogni file dimmi quali funzioni contiene, cosa chiama ciascuna di esse, e qualsiasi cosa che sembri gestire input provenienti dall'esterno del programma. Riporta solo ciò che l'output di REA effettivamente mostra, e dillo se qualcosa appare incerto.

Eseguire questo prima sulla tua piccola app ti dice se la configurazione ha effettivamente funzionato prima di puntare REA su qualcosa di più grande.

Una prima sessione solo di specifica

Studia questa applicazione usando REA e scrivi una specifica in linguaggio semplice di cosa fa: le sue interfacce, i formati dei dati che legge e scrive, e il comportamento di ogni funzione principale, interamente con parole tue. Non citare né incollare il codice originale, lo pseudocodice o l'output binario direttamente nella specifica. Fermati una volta scritta la specifica. Non iniziare ancora a costruire nulla.

Questa è la prima metà del flusso di lavoro in due sessioni descritto più sotto. Salva l'output in un file di testo semplice prima di chiudere la sessione.

Una sessione di build che non vede mai l'originale

Ecco un documento di specifica scritto durante una sessione di reverse engineering separata. Costruisci una nuova implementazione indipendente che soddisfi tutto quanto indicato in questa specifica. Non hai visto l'applicazione originale, il suo binario, o il suo codice sorgente, e non dovresti chiedere di vederlo. Se qualcosa nella specifica è ambiguo, dimmelo invece di indovinare cosa faceva il programma originale.

Inizia questa sessione da zero con solo il file di specifica allegato, non la trascrizione della prima sessione.

Una verifica legale di buon senso prima di andare oltre

Sto per fare reverse engineering di un software usando REA. Prima di iniziare, elenca cosa vorresti sapere per valutare se questa è effettivamente una cosa che sono autorizzato a fare: chi possiede il software, se una licenza o dei termini di servizio già trattano questo caso, e se da qualche parte sono coinvolti DRM, un controllo di licenza o un software anti-cheat. Segnala qualsiasi cosa che sembri richiedere un vero avvocato piuttosto che la tua migliore ipotesi.

Considera la risposta come un elenco di domande da andare a verificare, non come un via libera legale.

Leggi il disclaimer di REA prima di una sessione vera

Apri il DISCLAIMER.md di REA dal suo repository e riassumi, in linguaggio semplice, con quali tipi di reverse engineering il progetto dice che non aiuterà, e cosa dice riguardo ai diritti che una persona ottiene usando il suo output. Voglio confermare di non stare per chiederti di fare qualcosa che le regole stesse dello strumento già escludono.

Vale la pena ripeterlo dopo ogni aggiornamento; un disclaimer può cambiare insieme al software.

La guida completa

Tocca una sezione per aprirla.

Informazioni su questa guida

Questa settimana si è diffuso un post su uno strumento chiamato REA che permette a un agente AI di studiare software che non ha scritto, e cita specificamente Claude Code di Anthropic come uno degli agenti a cui si collega. Questa guida è pensata per due tipi di lettori insieme: chi è semplicemente curioso di sapere cos'è il reverse engineering e perché qualcuno lo fa, e gli sviluppatori che vogliono provare REA in sicurezza con Claude Code su qualcosa che possiedono davvero. Ripercorre cosa significa reverse engineering, cos'è REA e cosa può leggere, il reale limite legale tra studiare un software e copiarlo, una checklist di sicurezza da seguire prima di installare qualsiasi cosa con una portata così ampia, i passaggi di installazione e la versione di Node.js che il README di REA richiede oggi, un flusso di lavoro clean-room in due sessioni, e i limiti onesti di tutto questo approccio. Niente di questo è una consulenza legale, e avere un processo attento non è un motivo per smettere di controllare tu stesso l'output.

Un Campo Con una Lunga Storia

Cosa Significa Davvero il Reverse Engineering

Il reverse engineering significa studiare un software finito per capire come funziona, di solito senza avere il suo codice sorgente originale o alcuno dei documenti di progettazione che lo hanno prodotto. Osservi cosa fa, come è costruito, e con cosa comunica, e da lì procedi a ritroso fino a un modello del suo comportamento.

Le persone lo fanno per motivi perlopiù poco affascinanti e perlopiù legittimi. I ricercatori di sicurezza fanno reverse engineering dei programmi per trovare una vulnerabilità prima che lo faccia qualcuno con intenzioni peggiori. Gli sviluppatori fanno reverse engineering di formati di file e protocolli di rete affinché un nuovo programma possa interoperare con uno vecchio che nessuno documenterà per loro. Archivisti e appassionati fanno reverse engineering di vecchi software per mantenerli funzionanti una volta che l'hardware originale e l'azienda dietro di esso sono entrambi spariti. E a volte il motivo è semplicemente che un programma da cui dipendi fa qualcosa di non documentato, e devi sapere cosa, prima di potertene fidare o di poterlo gestire.

Niente di tutto questo è nuovo. I ricercatori di sicurezza e gli archivisti di software lo fanno da decenni con disassemblatori e debugger, molto prima che esistesse un qualsiasi agente AI. Quello che è cambiato è la velocità: un agente può leggere un listato di disassemblaggio o un metodo decompilato e riassumerlo in pochi secondi, un lavoro che prima richiedeva ore a una persona esperta. Si tratta di un vero salto di capacità, ed è esattamente il motivo per cui il limite legale ed etico più avanti in questa guida conta di più ora, non di meno, poiché il collo di bottiglia che prima frenava le persone tra la curiosità e la copia è quasi del tutto scomparso.

Il resto di questa guida è specifico: ripercorre uno strumento, chiamato REA, che collega un agente come Claude Code a questo tipo di analisi, e le abitudini che vale la pena avere già in atto prima di puntarlo su qualcosa.

Un Nuovo Arrivato

Cos'è REA, e Cosa Può Leggere

REA si descrive come un modo per fare reverse engineering del software, dal comportamento delle app fino ai binari nativi. Ciò che può effettivamente vedere dipende dal tipo di target.

Un server MCP e una CLI

REA è un software open source pubblicato su github.com/morluto/rea, con il codice di REA stesso sotto licenza MIT. Funziona come un server Model Context Protocol che un agente come Claude Code può chiamare, e come un comando semplice che puoi eseguire tu stesso da un terminale.

Binari nativi

Secondo il README di REA, può estrarre pseudocodice, assembly, stringhe, simboli, chiamate e riferimenti da un binario compilato, lavorando attraverso backend di analisi come Hopper, Ghidra, IDA o Kuna.

Applicazioni JavaScript ed Electron

Per i target JavaScript ed Electron, il README di REA descrive la lettura di moduli, import, source map, route, canali IPC, e le relazioni tra un programma e qualsiasi add-on nativo che carica.

Assembly .NET e APK Android

Per gli assembly .NET, metadati e istruzioni CIL. Per gli APK Android, dichiarazioni del manifest, classi, metodi decompilati e i riferimenti tra essi, sempre secondo il README del progetto.

Oltre le applicazioni

Lo stesso README elenca anche siti web, catture di pacchetti, immagini firmware, database SQLite, binari Go e Rust, e file di modelli tra i target su cui gli strumenti di analisi di REA possono essere puntati.

Prove, non ipotesi

L'intento di design, secondo il README, è che un riscontro rimandi a qualcosa di concreto, un file, una funzione, una chiamata, così puoi verificarlo tu stesso invece di prendere per buono il riassunto dell'agente.

Leggi Questo Prima di Installare Qualsiasi Cosa

Il Limite Legale: Studiare un Software vs. Copiarlo

La distinzione che conta più di tutte qui è quella tra studiare come funziona qualcosa e copiarne l'espressione protetta. Fare reverse engineering per imparare un'interfaccia, un formato di file, o un comportamento è, legalmente, un atto diverso dal prelevare il codice o gli asset di qualcun altro per metterli in un prodotto tuo.

La prassi costruita attorno a questa distinzione si chiama clean-room design. Una persona o una sessione studia l'originale e scrive una specifica semplice di cosa fa: le sue interfacce, i suoi formati di dati, il suo comportamento, con parole proprie, senza alcun codice originale copiato nel documento. Una persona o una sessione separata, che non ha mai visto l'originale, costruisce poi una nuova implementazione partendo solo da quella specifica. Il punto è che il risultato finale può essere dimostrato come derivante da una descrizione scritta, non dall'opera originale stessa.

Due vecchie decisioni dei tribunali statunitensi vengono citate spesso su questo punto, e vale la pena conoscerle, anche se nessuna delle due è una licenza generale a fare reverse engineering di qualsiasi cosa. Sega Enterprises Ltd. v. Accolade, Inc., decisa dal Nono Circuito nel 1992, riguardava un'azienda che aveva fatto reverse engineering del sistema di blocco di una console da gioco affinché i propri giochi funzionassero su quella console. Il tribunale stabilì che la copia intermedia coinvolta in quel reverse engineering, fatta per raggiungere elementi funzionali non protetti necessari affinché i giochi funzionassero affatto sull'hardware, costituiva fair use sui fatti specifici di quel caso. Sony Computer Entertainment, Inc. v. Connectix Corp., decisa dallo stesso tribunale nel 2000, raggiunse una conclusione simile quando un'azienda fece reverse engineering del software di avvio di una console per costruire un emulatore per un tipo diverso di computer, trattando anche qui la copia lungo il percorso come fair use al servizio di un prodotto interoperabile scritto in modo indipendente.

Considera entrambe come contesto storico, non come un consiglio per la tua situazione. Sono due decisioni d'appello specifiche su fatti specifici, il fair use viene deciso caso per caso, altri paesi tracciano questi limiti in modo diverso, e leggi successive mirate a contrastare l'elusione delle protezioni dalla copia restringono considerevolmente questo spazio per il software legato a DRM. Chiunque intenda costruire su questo tipo di lavoro, specialmente qualcosa destinato a essere pubblicato o venduto, dovrebbe parlare con un vero avvocato prima di fare affidamento su qualsiasi parte di questo.

REA traccia il proprio limite indipendentemente da quello che un tribunale potrebbe eventualmente decidere su un caso particolare. Secondo il DISCLAIMER.md del progetto, REA non supporta e non aiuterà a eludere DRM, controlli di licenza, sistemi anti-cheat, o altre misure tecniche di protezione, né a copiare software proprietario o il suo codice e asset protetti, e il progetto afferma chiaramente che l'output dell'analisi non concede alcun diritto sul programma originale. La regola pratica che ne deriva: analizza solo software che possiedi, che hai scritto tu stesso, o che sei altrimenti autorizzato a esaminare.

Prima di Installare Qualsiasi Cosa

Installa in Sicurezza, Non Solo Velocemente

Uno strumento che può leggere binari ed eseguire backend di analisi merita la stessa cautela che daresti a qualsiasi software con una portata così ampia sul tuo sistema.

Installa solo dalla fonte ufficiale

Il progetto vive su github.com/morluto/rea e viene pubblicato su npm come package rea-agents. Digita tu stesso quel nome invece di seguire un link nella descrizione di un video, in un post di un forum, o in un messaggio di chat.

Attento alle imitazioni

Un progetto che attira attenzione così rapidamente attira anche imitazioni. Un repository o un package che si chiama in modo simile al nome di REA, ospitato altrove, è un motivo per fermarsi e controllare, mai una scorciatoia.

Esegui binari sconosciuti in una VM

Se punti un backend di analisi su un binario che non hai scritto e di cui non ti fidi completamente, svolgi quel lavoro dentro una macchina virtuale o un altro ambiente usa e getta, non sulla macchina che usi per tutto il resto.

Blocca una versione

Installa una versione specifica invece di scaricare sempre quella più recente, e leggi cosa è cambiato prima di passare a una nuova. Il registro npm indicava la 6.8.0 come ultima versione pubblicata di rea-agents al momento della scrittura.

Leggi il disclaimer una volta, sul serio

DISCLAIMER.md è breve. Leggilo per intero prima della tua prima sessione vera con lo strumento, non dopo che qualcosa è già andato storto.

Metterlo in Funzione

Installare REA in Claude Code

La versione di Node.js conta qui. Il README di REA indica il suo requisito esattamente così: Node.js 22.x (>=22.23.4), 24.x (>=24.22.1), o 26.12.1+, più npm. Verifica questo con il README live prima di installare, poiché questo tipo di requisito cambia tra le varie release.

Il comando di setup è npx rea-agents setup. Secondo il README, ti guida nella scelta di quali agenti registrare con REA, ti mostra le modifiche che propone di fare prima che tu le approvi, e conserva i backup della tua configurazione esistente. Riavvia il tuo agente dopo, così recepisce il nuovo server MCP; le istruzioni di REA stesso lo dicono chiaramente.

Per un'installazione da riga di comando persistente invece di un'esecuzione npx una tantum, il README descrive npm install --global rea-agents, seguito da rea --help per vedere cosa è disponibile. Da un'installazione globale, rea update ti fa passare a una nuova versione secondo i tuoi tempi invece che automaticamente, e l'esecuzione successiva di npx rea-agents@latest setup aggiorna la registrazione dell'agente di conseguenza.

Prima di puntare REA su qualcosa che non possiedi completamente, provalo prima su una piccola applicazione che hai scritto tu stesso. Con REA configurato, chiedi a Claude Code di aprire quella piccola app e descrivere cosa vede, funzione per funzione, e confronta questo con quello che già sai di aver scritto. Questo singolo esercizio conferma che la configurazione ha effettivamente funzionato, e ti dà un'idea di come appaiono in pratica le prove di REA, un file, una funzione, una chiamata, prima di farci affidamento per qualcosa che conta davvero.

Una Forma Più Sicura per il Lavoro

Un Flusso di Lavoro Clean-Room in Due Sessioni

Metti in pratica l'idea di clean-room descritta prima, usando due sessioni separate di Claude Code. La prima è una sessione di specifica: punta REA sul software che sei autorizzato a studiare, e chiedi all'agente di scrivere una specifica in linguaggio semplice delle sue interfacce, dei suoi formati di dati, e del comportamento delle sue funzioni principali, interamente con parole proprie, senza alcun codice originale o pseudocodice copiato letteralmente nel documento.

La seconda è una sessione di build, avviata da zero, senza memoria della prima. Dalle solo il file di specifica, nient'altro: non il binario originale, non la trascrizione della prima sessione, non l'output grezzo di REA. Chiedile di costruire una nuova implementazione indipendente che soddisfi la specifica, e di dirti quando qualcosa in quella specifica è ambiguo invece di indovinare silenziosamente cosa deve aver fatto il programma originale.

Mantenere queste come sessioni genuinamente separate, non due fasi di una lunga conversazione unica, è la parte che conta. Una singola sessione che ha sia studiato l'originale che poi scritto la sostituzione ha sfumato esattamente il confine che il clean-room design esiste per mantenere netto, poiché non c'è modo di dimostrare, a posteriori, che la seconda metà non si sia appoggiata alla prima.

Sii lucido su cosa ti garantisce realmente questo approccio. Un flusso di lavoro disciplinato in due sessioni è una prassi che supporta un eventuale argomento clean-room se qualcuno dovesse mai chiedere come è stato costruito qualcosa. Non è di per sé una garanzia legale, e non sostituisce il far valutare da un vero avvocato qualsiasi cosa tu intenda pubblicare o vendere.

Definisci le Aspettative

Limiti Onesti di Questo Flusso di Lavoro

REA e il processo descritto in questa guida riducono il rischio; nessuno dei due lo elimina. Tieni a mente questi limiti una volta che hai qualcosa aperto.

Può perdersi dettagli su applicazioni grandi

Un'applicazione grande ha una superficie maggiore di quanto una singola passata di analisi riesca probabilmente a coprire. Considera un'esecuzione pulita come un campione di ciò che c'è, non una prova che non sia stato perso nulla.

Considera l'output come piste, non conclusioni

Una prova che rimanda a un file, una funzione, o una chiamata è un posto dove andare a guardare, non un fatto accertato di per sé. Verifica qualsiasi cosa su cui intendi effettivamente fare affidamento leggendo tu stesso l'output reale.

Usa molto contesto

L'analisi dettagliata di binari e bytecode produce molto testo rapidamente. Aspettati che il contesto di una sessione si riempia in fretta su qualsiasi cosa oltre una piccola app, e pianifica un flusso di lavoro in due sessioni tenendo conto di questo.

Sia il software che la legge continuano a cambiare

I comandi di REA, il suo requisito di Node.js, e ciò che può leggere cambieranno tutti tra le varie versioni, e anche il quadro legale attorno al reverse engineering si sposta. Riverifica entrambi prima di fare affidamento su qualsiasi cosa tu legga oggi.

Un secondo paio di occhi aiuta comunque

Per qualsiasi cosa oltre un esperimento personale, un revisore umano che capisca sia il codice che il limite legale vale più di un ulteriore prompt attento.

Esercitati con Prompt Precisi e Verificabili Prima di Provarlo Sul Serio

Prima di puntare qualsiasi strumento di reverse engineering su qualcosa che non possiedi completamente, aiuta avere già l'abitudine di dare a un agente un compito preciso e verificare tu stesso il suo output contro la realtà. La prima lezione gratuita di Nightschool AI ripercorre esattamente questo tipo di prompting attento con Claude Code di Anthropic.

Domande frequenti

Cosa significa davvero il reverse engineering?

Significa studiare un software finito per capire come funziona, di solito senza avere il suo codice sorgente originale o i documenti di progettazione. Le persone lo fanno per la ricerca sulla sicurezza, per far interoperare qualcosa con un software che non controllano, per mantenere utilizzabile un vecchio software, o semplicemente per capire cosa sta facendo un programma non documentato.

Il reverse engineering è legale?

Dipende molto da cosa studi, come lo studi, dove ti trovi, e cosa fai con ciò che apprendi. Studiare come funziona qualcosa viene trattato in modo diverso dal copiarne il codice o gli asset protetti. Questa guida non è una consulenza legale; parla con un vero avvocato prima di fare affidamento su qualsiasi parte di essa per qualcosa di reale.

Cos'è REA, lo strumento trattato in questa guida?

REA è un server MCP e uno strumento da riga di comando open source, pubblicato su github.com/morluto/rea con licenza MIT, che permette a un agente come Claude Code di Anthropic di ispezionare binari, applicazioni e altro software e restituire prove, come un file, una funzione, o una chiamata, invece di un'ipotesi in linguaggio semplice.

Quale versione di Node.js richiede REA?

Secondo il README di REA, al momento della scrittura, richiede Node.js 22.x (>=22.23.4), 24.x (>=24.22.1), o 26.12.1+, più npm. Verifica il README live prima di installare, poiché requisiti di versione come questo cambiano tra le release.

Come installo REA in Claude Code?

Esegui npx rea-agents setup, scegli con quali agenti registrarlo, rivedi le modifiche che propone prima di approvarle, e riavvia il tuo agente dopo. Per una CLI persistente invece, npm install --global rea-agents seguito da rea --help, e rea update in seguito per cambiare versione in modo deliberato.

Cos'è un flusso di lavoro clean-room, e perché usare due sessioni?

Una sessione di specifica studia il software originale e scrive una specifica in linguaggio semplice del suo comportamento, senza alcun codice originale copiato all'interno. Una sessione di build separata, senza memoria della prima e senza accesso all'originale, costruisce nuovo codice partendo solo da quella specifica. Mantenere le due sessioni genuinamente separate supporta un eventuale argomento clean-room; una sessione unica e mescolata non lo fa.

Con cosa non aiuterà REA?

Secondo il suo DISCLAIMER.md, REA non supporta e non aiuterà a eludere DRM, controlli di licenza o sistemi anti-cheat, né a copiare software proprietario o i suoi asset protetti. Afferma anche che il suo output non concede alcun diritto sul programma originale, e che dovrebbe essere usato solo su software che possiedi, che hai scritto, o che sei autorizzato a esaminare.

Quali sono i limiti onesti di REA?

Può perdersi dettagli su applicazioni grandi, quindi un'esecuzione pulita è un campione, non una garanzia. Il suo output è una pista che vale la pena verificare, non una conclusione accertata. L'analisi dettagliata produce anche molto testo, quindi può consumare rapidamente il contesto di una sessione, specialmente su qualsiasi cosa oltre una piccola app.

Questa guida è affiliata ad Anthropic o ai creatori di REA?

No. Questa è una guida educativa indipendente di Nightschool AI. Cita Claude Code di Anthropic e il progetto open source REA solo per descrivere come funzionano effettivamente, senza alcuna affiliazione, partnership, o sostegno da parte di Anthropic o dei creatori di REA in nessuna delle due direzioni.

Esercita le Abitudini Prima di Fare Reverse Engineering di Qualcosa di Reale

Un compito preciso, una specifica che puoi effettivamente verificare, e un sano sospetto verso la tua stessa prima risposta contano qui più di qualsiasi singolo strumento.

Nightschool AI è una piattaforma di apprendimento indipendente e non è affiliata, approvata o sponsorizzata da Anthropic. Claude è un marchio di Anthropic, PBC. Cerchi la Claude Academy ufficiale di Anthropic? La trovi su academy.claude.com.