Ghidra: como analisar um programa sem ter seu código-fonte

Ghidra permite analisar programas compilados sem ter seu código-fonte: você pode examinar suas instruções, descompilar funções e explorar sua lógica.

É útil quando uma investigação o leva a um binário: um executável legado, uma biblioteca nativa ou um componente cujo comportamento não é explicado pela documentação. Você tem o programa. O que precisa é de uma forma de examinar o que ele faz.

O que é Ghidra e para que serve?

Ghidra é uma ferramenta gratuita e de código aberto para engenharia reversa de software, criada e mantida pela Direção de Pesquisa da NSA.

Reúne funcionalidades para inspecionar instruções de máquina, reconstruir código de alto nível, visualizar a estrutura de um programa e automatizar análises. Suporta diferentes arquiteturas de processador e formatos de executáveis, tanto em sessões interativas quanto em processos automatizados. Você pode consultar suas capacidades no repositório oficial.

Para um desenvolvedor, é bom começar com uma pergunta concreta. De onde vem este erro? O que acontece antes de essa função retornar um resultado? Qual parte de um componente nativo processa determinada entrada?

Essas perguntas delimitam a investigação. Entender um executável desconhecido completo na primeira tentativa é um trabalho muito maior.

O que é engenharia reversa?

A engenharia reversa consiste em estudar um sistema existente para entender como está construído ou como funciona. Neste caso, você examina partes do programa compilado e analisa suas instruções para reconstruir uma explicação de seu comportamento.

Ghidra fornece ferramentas para esse processo, também conhecido como reverse engineering. Uma aplicação prática é investigar software cujo código-fonte você não possui disponível.

É possível recuperar o código-fonte com Ghidra?

Ghidra gera uma representação similar a C das funções compiladas; você não deve esperar que ele reconstrua o projeto original.

Seu descompilador reconstrói expressões, variáveis e chamadas de funções a partir do binário. O resultado muda conforme você fornece informações, como nomes, tipos de dados e assinaturas de funções. As visualizações de montagem e código descompilado estão conectadas, o que permite examinar as instruções por trás de uma expressão de alto nível. Assim é descrito na documentação oficial do descompilador.

Trate esse resultado como uma análise que você vai refinando. Uma função legível é um bom ponto de partida, mas ainda é necessário revisar os tipos e nomes inferidos. Entender o que ela faz exige verificar a evidência por trás dessa representação.

A distinção importa ao ler uma condição ou uma chamada: o código pode parecer tão familiar que o leve a confiar em uma interpretação antes de verificá-la.

Como instalar Ghidra?

Baixe a distribuição oficial e siga a documentação dessa versão.

No momento de preparar esta nota, 16 de setembro de 2026, GitHub identifica Ghidra 12.1.3 como a versão publicada mais recente. Baixe o ZIP da distribuição em Assets na página de versões. Os arquivos de código-fonte gerados automaticamente não são a distribuição pronta para executar.

Para essa versão:

  1. Instale o JDK 21 de 64 bits indicado em sua documentação.
  2. Extraia a distribuição em uma pasta nova, sem sobrescrever uma instalação anterior.
  3. No Windows, execute ghidraRun.bat. No Linux ou macOS, execute ./ghidraRun a partir da pasta extraída, uma vez atendidos os requisitos da sua plataforma.

Há uma diferença entre plataformas: o guia dessa versão inclui componentes nativos pré-compilados para Windows e Linux x86-64; para macOS e Linux ARM64 indica que você deve compilá-los. Siga as instruções específicas do guia de instalação da versão. As funcionalidades do depurador e de PyGhidra também requerem Python.

Como usar Ghidra para analisar um programa?

Crie um projeto local, importe um executável pequeno e deixe que Ghidra realize a análise inicial.

Para o primeiro exercício, use um programa nativo pequeno que você tenha compilado. Mantenha seu código-fonte para contrastar sua interpretação com algo que conhece.

  1. Selecione File → New Project, escolha Non-Shared e atribua um nome e local ao projeto.
  2. Selecione File → Import File… e importe o executável. Verifique o formato e a linguagem detectados.
  3. Abra o programa importado em CodeBrowser e aceite a proposta de análise.
  4. Selecione uma função e examine sua representação descompilada junto à montagem.

A análise automática identifica funções e referências cruzadas seguindo o fluxo do código. Se Ghidra não reconhecer o arquivo e o apresentar como um binário sem formato, você terá que indicar a combinação apropriada de linguagem e compilador. Para este primeiro exercício, escolha um executável que ele reconheça. O procedimento é desenvolvido no guia oficial para iniciantes.

Defina um objetivo concreto: encontre uma bifurcação que reconheça do seu programa e explique o que a controla. Depois, compare sua explicação com o código-fonte.

Assim você obtém um primeiro resultado útil sem ter que entender todas as funções que o compilador incluiu.

Como automatizar a análise com Ghidra?

Ghidra permite executar análises em lote sem interface gráfica, em modo headless, e PyGhidra oferece acesso via Python 3. Ambas as opções estão documentadas entre seus modos de execução.

Concluir primeiro uma investigação manual. Quando souber que informações precisa obter de forma repetida, terá uma base mais clara para decidir o que automatizar.

Uma boa primeira sessão termina com um resultado modesto e verificável: você identificou uma função, entendeu uma decisão que ela toma e contrastou essa interpretação com o programa. É um primeiro passo útil para trabalhar com software cujo código-fonte você não pode consultar.