Bindiffhelper
Extensão Ghidra que usa o Bindiff em seu projeto Ghidra para encontrar funções correspondentes e renomeá -las automaticamente (Bindiff 6, 7, 8 suportadas). Confira o manual do Bindiff para ver como ele funciona e como corresponde a funções / blocos básicos. No entanto, com essa extensão, o Bindiff é automatizado a partir de Ghidra, para que você não precise diferenciar seus binários.
Por favor, relate bugs através do recurso de problema no Github
O que faz / Changelog
v0.6
- Atualize a biblioteca de driver SQLite, agora deve ser executada no Apple Silicon
- Apoie as diferenças textuais externas entre as funções descompiladas (ver #24)
- Atualizações da interface do usuário
v0.5
- Suporte Bindiff 8
- Lançamento para Ghidra 11.1
v0.4.3
- Lançamento para Ghidra 11.0
v0.4.2
- Adicione a função para importar todas as funções (não apenas as verificadas na tabela)
- Adicione a função para alternar a caixa de seleção para vários elementos na tabela
- Atualização para apoiar o Ghidra 10.3
v0.4.1
- Atualização para apoiar o Gradle 7.5 e Ghidra 10.1
v0.4.0
- Suporte Bindiff 7 e Ghidra 10
v0.3.2
- Corrigido um bug em que a diferença com um arquivo diferente do mesmo projeto não funcionou
- Corrigido um bug em que arquivos com nomes curtos (<3 caracteres>) não poderiam ser difundidos
v0.3.1
- Corrigido uma falha ao abrir um arquivo através da opção "do projeto"
v0.3
- Colorir funções correspondentes na listagem
- Adicione comentários às funções correspondentes na lista de vinculação ao outro binário
- Corrigido um bug em que a biblioteca Protobuf estava faltando em algumas construções
- Novo menu de carregamento de arquivo
v0.2
- Corrija um bug no qual o arquivo a ser importado precisava ser verificado.
- Aumentar o tamanho da caixa de diálogo de seleção de arquivos do projeto
v0.1
- Bindiff, o binário aberto em Ghidra com outro binário do mesmo projeto Ghidra, mostra resultados e nomes de funções de importação
- Abra um arquivo Bindiff, criado com o Bindiff 6, a partir de dois arquivos .binexport e importe os nomes de funções correspondentes em Ghidra
Próximos lançamentos
- Importar nomes de funções e parâmetros de função (tipo e nome)
- Compare o binário aberto em ghidra com um .binexport externo (da IDA, por exemplo)
- Comunicação com o Bindiff 6 GUI para mostrar gráficos para as diferentes funções
Como instalar
Faça o download do .zip-File do lançamento, se for compatível com a sua versão Ghidra, caso contrário, veja como construir abaixo.
- Open Ghidra
- Na janela principal : vá para o arquivo-> Instalar extensões ...
- Clique no +-Button no canto superior direito e selecione o arquivo zip bindiffhelper
- Feche o gerente do plug -in. Reinicie Ghidra para carregar o novo plugin
- Veja o uso abaixo
Recomendou outras ferramentas
- Binários de plug -in binexport ou compilados da fonte para sua versão específica de ghidra
- Bindiff (https://zynamics.com/software.html)
Sem eles, você só poderá importar arquivos .Bindiff e não exportar e diferenciar automaticamente o seu projeto Ghidra
Uso
Verifique se o plug-in está carregado no Code Explorer, abrindo um arquivo em Ghidra e no Code Explorer ir para o arquivo-> Configurar
Clique no pequeno plug-icon no canto superior direito:
E verifique se a caixa de seleção ao lado de BindiffHelPerplugin está marcada.
Importar externo .bindiff
Os arquivos .binexport correspondentes precisam estar na mesma pasta.
Abra o arquivo no qual deseja importar nomes no navegador de código e depois vá para Window-> BindiffHelper
Use o botão aberto do Bindiff ou do item de menu e selecione seu arquivo .bindiff.
Selecione todos os nomes de funções que deseja importar e clique no botão Nomes de importação no canto superior direito ou no item de menu.
Compare entre arquivos no projeto Ghidra
Vá para Window-> BindiffHelper , verifique se não há avisos sobre Binexport ou Bindiff e clique no botão Abrir no Projeto .
Selecione o outro arquivo da árvore e clique em OK.
Como construir
Requisitos:
- Instalação Ghidra (https://ghidra-sre.org) ou compilada da fonte
- Alguns JDK. Pode haver certas restrições, dependendo de como seu Ghidra foi construído e de que outros plugins você está usando. Eu recomendo o uso do Temurin 21 LTS, pois isso atualmente parece funcionar com Binexport e Bindiffhelper.
- gradle (testado com 7,5, 8.10)
Clone o repositório
Clone recursivamente o repositório, pois depende do BINEXPORT para a respectiva definição de buffer de protocolo.
git clone --recurse-submodules https://github.com/ubfx/BinDiffHelper.git
Construa
Você precisa definir a variável de ambiente GHIDRA_INSTALL_DIR para a instalação de ghidra dir. Se você tiver JDKs diferentes instalados, verifique se a variável de ambiente JAVA_HOME aponta para a que sua instalação de Ghidra usa.
A extensão será criada para essa versão ghidra especificamente.
E então vá a pasta Bindiffhelper em sua concha e faça
Isso criará o Binexport no respectivo submódulo e Bindiffhelper no diretório pai. Deveria ter havido um arquivo .zip criado no diretório Dist. Use esse arquivo .zip para instalar de acordo com as instruções acima.
Configuração de desenvolvimento / depuração
Às vezes é útil poder depurar a extensão junto com Ghidra, aqui estão algumas anotações sobre isso:
- Clone e construa Ghidra e deixe a gradle criar projetos Eclipse, de acordo com o DevGuide
- Importe os projetos para o Eclipse (verifique se ele possui plugins relevantes para desenvolvimento de extensão)
- Construir e instalar ghidradev
- Desembale -o Ghidra Build e vincule Ghidradev a ele. Talvez tenha que definir
GHIDRA_INSTALL_DIR - Run Ghidra do Eclipse e instale a extensão Binexport
- Crie BindiffHelper Eclipse Project com
gradle build eclipse - Importe -o para o Eclipse e use Ghidradev para vinculá -lo à construção ghidra
- Debug as-> ghidra
Ao depurar Ghidra com a extensão fora do eclipse, a extensão é carregada automaticamente no ghidra (não passe pela instalação usual de extensão). No entanto, o plug -in deve ser ativado no Code Explorer.
Referências
- https://github.com/google/bindiff/releases
- https://www.zynamics.com/bindiff/manual/
- https://github.com/google/binexport/
Ícones de: ícones livres de fatcow