REA e Ghidra a confronto: quale flusso di ingegneria inversa fa per te?
Confronta REA e Ghidra per attività, input, output, controllo manuale, requisiti di configurazione e possibilità di usare Ghidra tramite REA.
Novità in questa pagina
- — Pubblicati casi della community corredati di fonti, guide pratiche e limiti chiari delle evidenze.
Usa Ghidra quando vuoi esplorare e modificare direttamente un progetto di analisi di binari nativi; usa REA quando vuoi che un agente di programmazione o una CLI indaghi sul software e restituisca conclusioni corredate di evidenze. REA può usare Ghidra come provider di analisi nativa, quindi i due strumenti possono far parte dello stesso flusso di lavoro.
Questo è un confronto indipendente della community. Il repository di REA e il repository di Ghidra sono le fonti primarie per le funzionalità e i requisiti attuali.
Qual è la differenza tra REA e Ghidra?
Ghidra è un framework di ingegneria inversa del software con disassemblaggio, decompilazione, grafi, scripting e analisi interattiva o automatizzata. L'ambiente di analisi di Ghidra offre all'analista il controllo diretto dell'indagine. Il README ufficiale di Ghidra descrive il supporto per processori, formati eseguibili ed estensioni.
REA è un server MCP e una CLI che coprono varie famiglie di oggetti di analisi, tra cui binari nativi, applicazioni JavaScript/Electron, pagine del browser e assembly gestiti. Un agente di programmazione chiama gli strumenti di REA, riceve conclusioni e limiti e decide che cosa esaminare dopo. Per l'analisi nativa approfondita, REA si collega a un'installazione supportata di Ghidra, Hopper o IDA. La guida di REA all'analisi nativa spiega questa relazione con i provider.
| Di che cosa hai bisogno? | Punto di partenza più adatto | Input | Output o vantaggio |
|---|---|---|---|
| Seguire manualmente funzioni e grafi di un binario | Ghidra direttamente | Binario supportato | Ambiente completo di analisi interattiva e controllo diretto del progetto |
| Chiedere a un agente perché una funzionalità nativa si comporta in un certo modo | REA con un provider nativo supportato | Binario e domanda circoscritta | Conclusioni guidate dall'agente, evidenze e spiegazione |
| Conservare e sviluppare un progetto di analisi nel tempo | Ghidra direttamente | Programma importato e modifiche dell'analista | Flusso di lavoro persistente del progetto sotto il tuo controllo |
| Esaminare un modulo Electron o un percorso IPC | Flusso di lavoro JavaScript di REA | Cartella dell'app o ASAR | Moduli, relazioni e posizioni nei sorgenti senza un motore nativo |
| Automatizzare con script un'analisi nativa ripetibile | Uno dei due, secondo il controllo necessario | Binario e script di analisi o richiesta CLI | Scripting di Ghidra o risultati strutturati della CLI di REA |
Quando Ghidra è la scelta più adatta?
Scegli Ghidra direttamente quando il lavoro dipende da un'esplorazione visiva continua, modifiche dettagliate dell'analista, script personalizzati o un database persistente del programma. L'interfaccia nativa di Ghidra espone il progetto di analisi stesso. Un analista esperto può esaminare istruzioni e grafi senza tradurre ogni azione in una richiesta all'agente.
Usare REA con Ghidra non rende disponibile ogni funzionalità di Ghidra tramite MCP. La documentazione del provider REA descrive le operazioni verificate e le restrizioni dell'host. Il flusso di lavoro senza interfaccia grafica documentato da REA usa un progetto temporaneo; non apre il tuo progetto utente esistente. Preferisci l'interfaccia diretta di Ghidra quando è necessario mantenere quel progetto esistente.
Ghidra dispone anche di propri flussi di lavoro automatizzati e basati su script. Sarebbe scorretto affermare che Ghidra è solo manuale. La distinzione utile di REA è la sua interfaccia comune per agenti e CLI tra diversi tipi di oggetti di analisi, non l'accesso esclusivo all'automazione.
Quando REA è il punto di partenza più adatto?
REA è utile per una domanda circoscritta che passa dall'analisi all'implementazione. Per esempio, un agente può indagare su un calcolo, identificare istruzioni e riferimenti pertinenti, spiegare una regola e poi scrivere una piccola implementazione che puoi verificare. La conclusione dell'agente richiede comunque controlli rispetto al comportamento originale.
Il caso di studio ufficiale di DX-Ball segue una chiamata audio fino a una funzione ausiliaria che converte la posizione in posizionamento stereo e ricostruisce quel calcolo in C. Il progetto riporta 3,205 casi di test rispetto al comportamento x86 originale e una corrispondenza per tutti i 63 byte compilati della funzione. Questi risultati appartengono a quello specifico esempio svolto; non stabiliscono un tasso di successo generale di REA né un vantaggio prestazionale rispetto a Ghidra.
REA offre anche flussi di lavoro al di fuori della decompilazione nativa. Per un'applicazione Electron, l'analisi statica di JavaScript può identificare moduli e relazioni IPC senza avviare Ghidra. Questo rende REA un comodo punto di ingresso quando l'indagine comprende la struttura dei pacchetti applicativi, JavaScript e componenti nativi selezionati. La tabella degli oggetti di analisi di REA elenca i prerequisiti separati.
Come si usa Ghidra tramite REA?
Installa una versione di Ghidra e un JDK supportati dalla documentazione del provider REA, poi configura REA per usare quell'installazione. La configurazione di REA può registrare percorsi esistenti verificati; non scarica né installa Ghidra o Java per te. La guida ufficiale alla configurazione contiene le istruzioni di configurazione attuali.
Non dare per scontato che l'ultima versione di Ghidra sia automaticamente compatibile con il pacchetto REA installato. I requisiti della versione attuale di Ghidra e l'intervallo di versioni del provider testate da REA hanno scopi diversi. Alla data di questo articolo, la guida all'installazione del ramo main di REA descrive un controllo del provider Ghidra 12.1.x; consulta quella guida e le funzionalità del server installato prima di scegliere le versioni.
Dopo aver configurato il provider, un controllo diagnostico circoscritto è:
npx -y rea-agents@latest doctor --provider ghidra --json
Le operazioni basate su Ghidra possono richiedere tempo per l'importazione e l'analisi automatica alla prima richiesta. Binari di grandi dimensioni possono richiedere un tempo massimo di avvio del provider più lungo, mentre un client MCP può avere un proprio tempo massimo di richiesta più breve. Usa le indicazioni documentate sui tempi massimi e sul ripristino per diagnosticare questa situazione.
Quali limiti dovrebbero influire sulla decisione?
Il supporto dei provider di REA varia in base all'host e all'oggetto dell'analisi. L'ambito Windows Ghidra P0 è esplicitamente sperimentale e più ristretto del supporto complessivo di Ghidra per piattaforme e formati. Leggi la guida al provider Windows, anziché dedurre la compatibilità dalla capacità di Ghidra di importare manualmente un file.
Il ramo main di REA può anche descrivere funzionalità più recenti del pacchetto npm installato da @latest. Il fatto che una versione del pacchetto funzioni non dimostra, da solo, che ogni operazione del ramo main sia disponibile. Controlla la distinzione tra versione pubblicata e ramo main e gli schemi degli strumenti connessi.
Entrambi i flussi di lavoro richiedono giudizio. Lo pseudocodice decompilato non è il codice sorgente originale, i comportamenti indiretti possono rimanere irrisolti e un agente di programmazione può interpretare male evidenze corrette. Conferma le conclusioni importanti con istruzioni pertinenti, riferimenti e una verifica controllata del comportamento.
Quali domande vengono poste su REA e Ghidra?
REA sostituisce Ghidra?
REA può usare Ghidra come motore e non sostituisce il suo ambiente interattivo completo. Scegli l'interfaccia adatta all'attività, oppure combinale.
Uno dei due strumenti è gratuito?
Il codice scritto per REA è distribuito con licenza MIT. Ghidra è un progetto open source con la propria licenza pubblicata e avvisi relativi a terze parti. L'accesso ai modelli degli agenti di programmazione e i provider commerciali opzionali, come Hopper o IDA, hanno condizioni separate. Consulta la licenza di REA e la licenza di Ghidra.
Posso esaminare JavaScript senza Ghidra?
Sì. Il flusso di lavoro statico JavaScript/Electron di REA usa Node.js e npm, non un decompilatore nativo. Un componente aggiuntivo nativo in quell'app è un oggetto di analisi separato con requisiti propri.
Quale strumento dovrebbe provare per primo un principiante?
Per imparare l'assembly e l'analisi manuale dei binari, parti dai materiali di Ghidra. Per imparare a condurre un'indagine con un agente a partire da una domanda, comincia dall'esempio Notes di REA o dalla nostra guida alla configurazione di REA. Un oggetto di analisi più piccolo e una domanda verificabile rendono entrambi i percorsi più facili da valutare.