MASTG-TOOL-0033: Ghidra

Ghidra é um conjunto de ferramentas de engenharia reversa de software (SRE) de código aberto desenvolvido pela Diretoria de Pesquisa da Agência de Segurança Nacional (NSA) dos Estados Unidos. O Ghidra é uma ferramenta versátil que inclui um desmontador, um decompilador e um mecanismo de script integrado para uso avançado. Consulte o guia de instalação para saber como instalá-lo e também veja a cola (cheat sheet) para uma primeira visão geral dos comandos e atalhos disponíveis. Nesta seção, faremos um passo a passo sobre como criar um projeto, visualizar a desmontagem e o código decompilado de um binário.

Inicie o Ghidra usando ghidraRun (*nix) ou ghidraRun.bat (Windows), dependendo da plataforma em que você está. Quando o Ghidra for iniciado, crie um novo projeto especificando o diretório do projeto. Você será recebido por uma janela como mostrado abaixo:

No seu novo Projeto Ativo, você pode importar um binário de aplicativo indo em File -> Import File e escolhendo o arquivo desejado.

Se o arquivo puder ser processado corretamente, o Ghidra mostrará metainformações sobre o binário antes de iniciar a análise.

Para obter o código desmontado do arquivo binário escolhido acima, clique duas vezes no arquivo importado na janela Active Project. Clique em yes e analyze para a análise automática nas janelas subsequentes. A análise automática levará algum tempo, dependendo do tamanho do binário, e o progresso pode ser acompanhado no canto inferior direito da janela do navegador de código. Uma vez concluída a análise automática, você pode começar a explorar o binário.

As janelas mais importantes para explorar um binário no Ghidra são a Listing (Desmontagem), a Symbol Tree e a Decompiler, que mostra a versão decompilada da função selecionada para desmontagem. A opção Display Function Graph mostra o gráfico de fluxo de controle da função selecionada.

Há muitas outras funcionalidades disponíveis no Ghidra, e a maioria delas pode ser explorada abrindo o menu Window. Por exemplo, se você quiser examinar as strings presentes no binário, abra a opção Defined Strings. Discutiremos outras funcionalidades avançadas ao analisar vários binários para as plataformas Android e iOS nos próximos capítulos.