
diaphora v3.4.2
Diaphora, a mais avançada ferramenta de diffing de programas gratuita e de código aberto.
δ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.pyeplugins/diaphora_plugin.cfgpara o diretório de plugins do IDA. - Edite
diaphora_plugin.cfge 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:
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:

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

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:

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

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

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:
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.

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