Estou tentando aprender a usar a ferramenta BinDiff , mas consigo ” t descobrir como abrir dois binários para fazer a comparação. Enquanto folheio o manual, parece que preciso do IDA Pro para isso.
Posso usar o BinDiff sem o IDA Pro (digamos, apenas com o IDA grátis)?
Comentários
- related: alternativas ao BinDiff reverseengineering.stackexchange.com/q/26196/3934 ?
Resposta
Sim, agora isso é possível com o Ghidra.
A versão mais recente, BinDiff 6 , tem suporte experimental para o desmontador Ghidra. Ele vem com uma extensão que permite exportar a desmontagem do Ghidra no formato .BinExport necessário para a comparação.
Software necessário
- BinDiff 6 do site do zynamics
- Um Java runtime recente (OpenJDK 11 ou posterior)
- Ghidra 9.1.2 ( https://ghidra-sre.org/releaseNotes_9.1.2.html )
Instalando a extensão Ghidra
Após instalar o BinDiff, localize o “BinExport” extensão em sua pasta de instalação.
Os padrões são
- Windows:
C:\Program Files\BinDiff\extra\ghidra - Linux:
/opt/bindiff/extra/ghidra - macOS:
/Applications/BinDiff/Extra/Ghidra
Se você localizou o ghidra_BinExport.zip arquivo, a extensão pode ser instalada como qualquer outra extensão Ghidra:
- Inicie o Ghidra e selecione
File|Install Extensions.... - Clique no botão
+paraAdd extension. -
No
Select Extensioncaixa de diálogo, navegue até o diretório que contémghidra_BinExport.zip. -
Selecione o .zip arquivo e clique em
OK - Clique em
OKpara confirmar e novamente para descartar a mensagem de reinicialização. Em seguida, reinicie o Ghidra.
Uso
Esta versão do exportador baseado em Java para Ghidra tem os seguintes recursos em comparação com a versão C ++ nativa para IDA Pro:
| | Ghidra | IDA | | --------------------------------------- | ------ | --- | | Protocol Buffer based full export | ✓¹ | ✓ | | Statistics text file | - | ✓ | | Text format for debugging | - | ✓ | | BinNavi export into PostgreSQL database | - | ✓ | ¹ No operand trees
Verificando a versão de instalação
- No Ghidra, selecione
File|Install Extensions.... - Verifique se
BinExportestá listado e tem oInstall Path
Invocação
- No Ghidra, abra um projeto ou crie um novo.
- Se ainda não tiver feito, abra o binário para exportar em a ferramenta Navegador de código e execute a análise inicial do Ghidra. Você pode querer habilitar a opção “localizador de instrução agressivo” para obter melhor cobertura na exportação.
- Na visualização do projeto, clique com o botão direito do mouse no binário para exporte e selecione
Export... - Na lista suspensa, selecione
Binary BinExport (v2) for BinDiff - Selecione um caminho para o arquivo de saída. Este pode ser o nome do arquivo original, como
.BinExportserá anexado. - Clique em
OK.
BinDiff Arquivos exportados
Os arquivos exportados agora podem ser comparados e os resultados exibidos em sua IU:
- Exporte dois binários seguindo as instruções acima. As etapas a seguir pressupõem
primary.BinExportesecondary.BinExport. -
Na linha de comando, execute o mecanismo BinDiff com
bindiff primary.BinExport secondary.BinExportIsso criará um arquivo
primary_vs_secondary.BinDiffno diretório atual. O comandobindiffdeve estar no caminho do sistema. -
Inicie a IU do BinDiff por meio de
bindiff --uiou usando o iniciador para seu sistema operacional. -
Crie um novo espaço de trabalho ou abra um existente.
-
Selecione
Diffs|Add Existing Diff.... -
Em
Choose Diff, selecione oprimary_vs_secondary.BinDiffcriado na etapa 2. -
Clique em
OK, seguido porAdd. O diff agora é mostrado na visualização em árvore à esquerda e pode ser aberto com um clique duplo nele. -
Use o BinDiff normalmente para exibir o gráfico de chamada ou gráficos de fluxo de funções correspondentes .
Código aberto
Finalmente, a extensão BinExport (e também o plugin IDA Pro) é código aberto e está disponível no GitHub . A tag v11 corresponde ao BinDiff 6.
Comentários
- Obrigado. Eu ' d ficaria tão feliz em me livrar da dependência do IDA Pro!