Voltar às atualizações
New releaseAug 18, 2026

diaphora v3.4.2

Diaphora, a mais avançada ferramenta de diffing de programas gratuita e de código aberto.

Compartilhar

δiaphora

Instalação

Instale com o gerenciador de plugins do Hex-Rays:

hcli plugin install https://github.com/joxeankoret/diaphora/archive/refs/tags/3.4.2.zip

As instruções de instalação manual estão abaixo.

Diaphora (διαφορά, 'diferença' em grego) versão 3.4 é a ferramenta de diffing de programas mais avançada (funcionando como um plugin do IDA) disponível atualmente (2026). Foi lançada pela primeira vez durante a SyScan 2015 e tem sido mantida ativamente desde então: Diaphora já foi portada há 11 anos para todas as versões menores do IDA desde a 6.8 até a 9.4.

Diaphora suporta versões do IDA >= 7.4 porque o código só roda em Python 3.X (Python 3.11 foi a última versão testada).

Funcionalidades Únicas

Diaphora tem muitos dos recursos mais comuns de diffing de programas (bindiffing) que você pode esperar, como:

  • Diffing de assembly.
  • Diffing de grafos de fluxo de controle.
  • Portar nomes de símbolos e comentários.
  • Adicionar correspondências manuais.
  • Cálculo da taxa de similaridade.
  • Automação em lote.
  • Cálculo de correspondência de grafo de chamadas.
  • Dezenas de heurísticas baseadas em teoria dos grafos, assembly, bytes, características de funções, etc...

No entanto, Diaphora também possui muitos recursos exclusivos, indisponíveis em qualquer outra ferramenta pública. A seguir está uma lista não exaustiva de recursos exclusivos:

  • Capacidade de portar structs, enums, unions e typedefs.
  • Detecção de vulnerabilidades potencialmente corrigidas em sessões de diffing de patches.
  • Suporte para unidades de compilação (encontrar e comparar unidades de compilação).
  • Suporte a microcódigo.
  • Diffing paralelo.
  • Heurísticas baseadas em pseudocódigo.
  • Geração de patches de pseudocódigo.
  • Diffing de pseudocódigos (com realce de sintaxe!).
  • Suporte a scripts (tanto para os processos de exportação quanto de diffing).
  • ...

Instalação

Diaphora não requer instalação: basta baixar o código e executar o script diaphora.py de dentro do IDA ou na linha de comando (apenas para comparar bancos de dados já exportados). No entanto, ele pode ser integrado como um plugin no IDA fazendo o seguinte:

  • Copie plugins/diaphora_plugin.py e plugins/diaphora_plugin.cfg para o diretório de plugins do IDA.
  • Edite diaphora_plugin.cfg e defina o valor de path para o diretório do Diaphora.

Doações

Você pode ajudar (ou agradecer) o autor do Diaphora fazendo uma doação. Se quiser, pode usar um dos seguintes links:

  • Liberapay
  • Donate

Suporte

Sinta-se à vontade para abrir issues no Github se tiver algum problema ou precisar de ajuda. Se preferir conversar interativamente, você pode usar o seguinte canal do Discord: https://discord.gg/atg34w2xjV

Licenciamento

As versões do Diaphora anteriores à 1.2.4, incluindo a versão 1.2.4, foram licenciadas sob a GNU GPL versão 3. Desde a versão 2.0, o Diaphora é licenciado sob a licença GNU Affero GPL versão 3. A licença foi alterada para que empresas que queiram modificar e adaptar o Diaphora não possam oferecer serviços web baseados nessas versões modificadas sem contribuir de volta com as alterações.

Para 99,99% dos usuários, a mudança de licença não os afeta em nada. Se a sua empresa precisar de um modelo de licenciamento diferente, consulte a próxima seção...

Suporte Comercial e Consultoria

Suporte comercial e consultoria são oferecidos para empresas legítimas. Se você precisar de suporte ou consultoria para problemas com seu alvo, para desenvolver produtos baseados no Diaphora, para usar o Diaphora internamente interagindo com suas próprias ferramentas, para projetos de detecção de plágio, etc..., você pode entrar em contato comigo em [email protected] para mais detalhes.

Problemas de Licenciamento

Se a sua empresa não permite o uso da licença AGPL, você pode obter licenças comerciais do Diaphora para usá-lo em sua empresa ou para usá-lo como particular em qualquer empresa em que trabalhe (conceito semelhante às licenças nominais do IDA). Para mais detalhes, entre em contato comigo em [email protected].

Lembre-se de que não sou eu que estou impedindo você de usar o Diaphora: é a sua empresa. Obrigado pela compreensão.

Wiki

Se você procura saber como automatizar o processo de exportação ou diffing, ou quer acelerar operações, etc..., talvez queira dar uma olhada na wiki, onde essas perguntas são respondidas.

Capturas de Tela

Diaphora encontrando a função exata onde uma vulnerabilidade foi corrigida no CVE-2020-1350:

CVE-2020-1350

Diaphora, novamente, encontrando a função exata onde a CVE-2023-28231 foi corrigida:

CVE-2023-28231

CVE-2023-28231. Como explicado em um blog da ZDI, a vulnerabilidade foi corrigida verificando se o número de mensagens de encaminhamento de relay em "ProcessRelayForwardMessage()" não é maior ou igual a 32 (0x20), como mostrado no seguinte diffing de pseudocódigo:

CVE-2023-28231

Diaphora fazendo diffing de microcódigo do Hex-Rays:

Diffing de microcódigo em um grafo

Diffing de assembly, pseudocódigo e microcódigo:

Assembly, pseudocódigo e microcódigo

Diffing da CVE-2023-21768 com Diaphora 3.0:

Diffing da CVE-2023-21768 com #Diaphora 3.0

Esta é uma captura de tela do Diaphora comparando a vulnerabilidade do kernel do iOS PEGASUS corrigida no iOS 9.3.5:

Comparando a correção do iOS 9.3.5

E esta é uma captura de tela antiga do Diaphora comparando o boletim da Microsoft MS15-034:

Diaphora comparando MS15-034

Estas são algumas capturas de tela do Diaphora comparando o boletim da Microsoft MS15-050, extraídas do post do blog Analisando MS15-050 com Diaphora de Alex Ionescu.

Diaphora comparando MS15-050, melhores correspondências Diaphora comparando MS15-050, correspondências parciais Diaphora comparando MS15-050, diffing de pseudocódigo

Diaphora comparando um LuaBot, correspondências e pseudocódigo

Aqui está uma captura de tela do Diaphora comparando iBoot do iOS 10.3.3 com iOS 11.0:

Diaphora comparando iBoot do iOS 10.3.3 com iOS 11.0

Categorias