REA vs Ghidra: qual fluxo de engenharia reversa é adequado?
Compare REA e Ghidra por tarefa, entradas, saídas, controle manual, requisitos de configuração e a opção de usar o Ghidra por meio do REA.
Novidades nesta página
- — Publicamos casos da comunidade com fontes, guias práticos e limites claros das evidências.
Use o Ghidra quando quiser explorar e editar diretamente um projeto de análise de binários nativos; use o REA quando quiser que um agente de programação ou uma CLI investigue software e retorne conclusões com evidências. O REA pode usar o Ghidra como provedor de análise de código nativo, então as duas ferramentas podem fazer parte do mesmo fluxo de trabalho.
Esta é uma comparação independente da comunidade. O repositório do REA e o repositório do Ghidra são as fontes primárias para os recursos e requisitos atuais.
Qual é a diferença entre REA e Ghidra?
O Ghidra é uma plataforma de engenharia reversa de software com desmontagem, descompilação, grafos, scripts e análise interativa ou automatizada. O ambiente de análise do próprio Ghidra dá ao analista controle direto sobre a investigação. O README oficial do Ghidra descreve o suporte a processadores, formatos de executáveis e extensões.
O REA é um servidor MCP e uma CLI que abrangem várias categorias de alvos, incluindo binários nativos, aplicativos JavaScript/Electron, páginas de navegador e assemblies gerenciados. Um agente de programação chama as ferramentas do REA, recebe conclusões e limitações e decide o que inspecionar em seguida. Para análise aprofundada de código nativo, o REA se conecta a uma instalação compatível do Ghidra, Hopper ou IDA. O guia do REA para código nativo explica essa relação com o provedor.
| Do que você precisa? | Melhor ponto de partida | Entrada | Saída ou vantagem |
|---|---|---|---|
| Rastrear manualmente funções e grafos de binários | Ghidra diretamente | Binário compatível | Ambiente completo de análise interativa e controle direto do projeto |
| Perguntar a um agente por que um recurso nativo se comporta de determinada maneira | REA com um provedor compatível de análise de código nativo | Binário e pergunta específica | Conclusões orientadas pelo agente, evidências e explicação |
| Manter e desenvolver um projeto de análise ao longo do tempo | Ghidra diretamente | Programa importado e alterações do analista | Fluxo de trabalho com projeto persistente sob seu controle |
| Inspecionar um módulo Electron ou caminho IPC | Fluxo de trabalho JavaScript do REA | Pasta do aplicativo ou ASAR | Módulos, relações e localizações no código-fonte sem um mecanismo de análise de código nativo |
| Criar scripts para análise reproduzível de código nativo | Qualquer um, dependendo do controle necessário | Binário e script de análise ou solicitação à CLI | Scripts do Ghidra ou resultados estruturados da CLI do REA |
Quando o Ghidra é a melhor escolha?
Escolha o Ghidra diretamente quando o trabalho depender de exploração visual contínua, alterações detalhadas do analista, scripts personalizados ou uma base de dados persistente do programa. A interface nativa do Ghidra expõe o próprio projeto de análise. Um analista experiente pode inspecionar instruções e grafos sem transformar cada ação em uma solicitação a um agente.
Usar o REA com o Ghidra não disponibiliza todos os recursos do Ghidra por meio do MCP. A documentação do provedor no REA descreve as operações verificadas e as restrições do sistema hospedeiro. O fluxo de trabalho documentado do REA sem interface gráfica usa um projeto temporário; ele não abre seu projeto de usuário existente. Prefira a interface direta do Ghidra quando manter esse projeto existente for um requisito.
O Ghidra também tem seus próprios fluxos de automação e scripts. Seria incorreto afirmar que o Ghidra é apenas manual. O diferencial útil do REA é sua interface comum de agente e CLI para diferentes tipos de alvo, e não um acesso exclusivo à automação.
Quando o REA é o melhor ponto de partida?
O REA é útil para uma pergunta específica que passa da inspeção à implementação. Por exemplo, um agente pode investigar um cálculo, identificar instruções e referências relevantes, explicar uma regra e escrever uma pequena implementação para você testar. A conclusão do agente ainda precisa ser conferida em comparação com o comportamento original.
O estudo de caso oficial de DX-Ball rastreia uma chamada de áudio até uma função auxiliar que converte posição em panorâmica de áudio e reconstrói esse cálculo em C. O projeto relata 3,205 casos de teste contra o x86 original e correspondência em todos os 63 bytes compilados da função. Esses resultados pertencem àquele exemplo específico; eles não estabelecem uma taxa geral de sucesso do REA nem uma vantagem de desempenho sobre o Ghidra.
O REA também oferece fluxos de trabalho além da descompilação de código nativo. Para um aplicativo Electron, a análise estática de JavaScript pode identificar módulos e relações IPC sem iniciar o Ghidra. Isso torna o REA um ponto de entrada conveniente quando sua investigação abrange o empacotamento do aplicativo, JavaScript e componentes nativos selecionados. A tabela de alvos do REA lista os pré-requisitos separados.
Como usar o Ghidra por meio do REA?
Instale uma versão do Ghidra e um JDK compatíveis com a documentação do provedor no REA e configure o REA para usar essa instalação. A configuração do REA pode registrar caminhos existentes verificados; ela não baixa nem instala o Ghidra ou o Java para você. O guia oficial de configuração contém as instruções atuais de configuração.
Não presuma que a versão mais recente do Ghidra seja automaticamente compatível com o pacote do REA instalado. Os requisitos da versão atual do próprio Ghidra e a faixa de versões do provedor testada pelo REA têm finalidades diferentes. Na data deste artigo, o guia de instalação do branch main do REA descreve uma verificação do provedor Ghidra 12.1.x; consulte esse guia e os recursos do servidor instalado antes de escolher as versões.
Após configurar o provedor, um diagnóstico específico é:
npx -y rea-agents@latest doctor --provider ghidra --json
As operações que usam o Ghidra podem precisar de tempo para importação e análise automática na primeira consulta. Binários grandes podem exigir um limite de tempo maior para a inicialização do provedor, enquanto um cliente MCP pode ter seu próprio limite de tempo menor para a requisição. Use as orientações documentadas sobre limites de tempo e recuperação ao diagnosticar essa situação.
Quais limites devem influenciar sua decisão?
O suporte a provedores do REA varia conforme o sistema hospedeiro e o alvo. O escopo Ghidra P0 do REA no Windows é explicitamente experimental e mais restrito que o suporte geral do Ghidra a plataformas e formatos. Leia o guia do provedor para Windows, em vez de deduzir a compatibilidade pela capacidade do Ghidra de importar um arquivo manualmente.
O branch main do REA também pode descrever recursos mais recentes que o pacote npm instalado por @latest. O fato de uma versão do pacote funcionar não comprova, por si só, que todas as operações do branch main estão disponíveis. Confira a distinção entre a versão publicada e o branch main e os esquemas das ferramentas conectadas.
Ambos os fluxos de trabalho exigem discernimento. Pseudocódigo descompilado não é o código-fonte original, comportamentos indiretos podem continuar sem explicação e um agente de programação pode interpretar incorretamente evidências corretas. Confirme conclusões importantes com instruções relevantes, referências e uma verificação controlada do comportamento.
Quais perguntas as pessoas fazem sobre REA e Ghidra?
O REA substitui o Ghidra?
O REA pode usar o Ghidra como mecanismo e não substitui seu ambiente interativo completo. Escolha a interface adequada à tarefa ou combine as duas.
Alguma das ferramentas é gratuita?
O código de autoria do REA é licenciado sob a licença MIT. O Ghidra é um projeto de código aberto com sua licença publicada e avisos de terceiros. O acesso a modelos do agente de programação e provedores comerciais opcionais, como Hopper ou IDA, têm termos separados. Veja a licença do REA e a licença do Ghidra.
Posso inspecionar JavaScript sem o Ghidra?
Sim. O fluxo de trabalho estático do REA para JavaScript/Electron usa Node.js e npm, não um descompilador de código nativo. Um complemento nativo nesse aplicativo é um alvo de análise separado, com seus próprios requisitos.
Qual ferramenta um iniciante deve experimentar primeiro?
Para aprender assembly e análise manual de binários, comece pelos materiais do próprio Ghidra. Para aprender uma investigação com agente orientada por perguntas, comece pelo exemplo do Notes no REA ou pelo nosso guia de configuração do REA. Um alvo menor e uma pergunta verificável tornam qualquer um dos caminhos mais fácil de avaliar.