
diaphora v3.4.2
Diaphora, la herramienta de comparación de programas gratuita y de código abierto más avanzada.
δiaphora
Instalación
Instala con el gestor de plugins de Hex-Rays:
hcli plugin install https://github.com/joxeankoret/diaphora/archive/refs/tags/3.4.2.zip
Las instrucciones de instalación manual están más abajo.
Diaphora (διαφορά, 'diferencia' en griego) versión 3.4 es la herramienta de diffing de programas más avanzada (que funciona como plugin de IDA) disponible a día de hoy (2026). Se publicó por primera vez durante SyScan 2015 y se ha mantenido activamente desde entonces: Diaphora ha sido portada durante 11 años ya a cada versión menor de IDA desde la 6.8 hasta la 9.4.
Diaphora es compatible con versiones de IDA >= 7.4 porque el código solo funciona en Python 3.X (Python 3.11 fue la última versión probada).
Características únicas
Diaphora tiene muchas de las características de diffing de programas (bindiffing) más comunes que podrías esperar, como:
- Diffing de ensamblador.
- Diffing de grafos de flujo de control.
- Transferencia de nombres de símbolos y comentarios.
- Añadir coincidencias manuales.
- Cálculo del ratio de similitud.
- Automatización por lotes.
- Cálculo de coincidencias de grafos de llamadas.
- Docenas de heurísticas basadas en teoría de grafos, ensamblador, bytes, características de funciones, etc...
Sin embargo, Diaphora también tiene muchas características únicas, no disponibles en ninguna otra herramienta pública. La siguiente es una lista no exhaustiva de características únicas:
- Capacidad de transferir structs, enums, unions y typedefs.
- Detección de vulnerabilidades potencialmente corregidas para sesiones de diffing de parches.
- Soporte para unidades de compilación (encontrar y comparar unidades de compilación).
- Soporte de microcódigo.
- Diffing en paralelo.
- Heurísticas basadas en pseudocódigo.
- Generación de parches de pseudocódigo.
- Diffing de pseudocódigos (¡con resaltado de sintaxis!).
- Soporte de scripting (tanto para los procesos de exportación como de diffing).
- ...
Instalación
Diaphora no requiere instalación: solo descarga el código y ejecuta el script diaphora.py desde IDA o desde la línea de comandos (solo para comparar bases de datos ya exportadas). Sin embargo, se puede integrar como plugin en IDA haciendo lo siguiente:
- Copia
plugins/diaphora_plugin.pyyplugins/diaphora_plugin.cfgal directorio de plugins de IDA. - Edita
diaphora_plugin.cfgy establece el valor de path al directorio de Diaphora.
Donaciones
Puedes ayudar (o agradecer) al autor de Diaphora haciendo una donación. Si te apetece hacerlo, puedes usar uno de los siguientes enlaces:
Soporte
No dudes en abrir issues en Github si tienes algún problema o necesitas ayuda. Si prefieres chatear de forma interactiva, puedes usar el siguiente canal de Discord: https://discord.gg/atg34w2xjV
Licencia
Las versiones de Diaphora anteriores a la 1.2.4, incluida la versión 1.2.4, estaban licenciadas bajo la GNU GPL versión 3. Desde la versión 2.0, Diaphora está licenciada bajo la GNU Affero GPL versión 3. La licencia se ha cambiado para que las empresas que quieran modificar y adaptar Diaphora no puedan ofrecer servicios web basados en estas versiones modificadas sin contribuir con los cambios.
Para el 99.99% de los usuarios, el cambio de licencia no les afecta en absoluto. Si tu empresa necesita un modelo de licencia diferente, consulta la siguiente sección...
Soporte comercial y consultoría
Se ofrece soporte comercial y consultoría para empresas legales. Si necesitas soporte o consultoría para problemas con tu objetivo, para desarrollar productos basados en Diaphora, para usar Diaphora internamente interactuando con tus propias herramientas, para proyectos de detección de plagio, etc... puedes contactarme en [email protected] para más detalles.
Problemas de licencia
Si tu empresa no permite usar la licencia AGPL, puedes obtener licencias comerciales de Diaphora para usarla en tu empresa o para usarla como particular en cualquier empresa en la que trabajes (concepto similar a las licencias nominativas de IDA). Para más detalles, por favor contacta conmigo en [email protected].
Por favor, recuerda que no soy yo quien te impide usar Diaphora: es tu empresa. Gracias por tu comprensión.
Wiki
Si buscas cómo automatizar el proceso de exportación o diffing, o quieres acelerar las operaciones, etc... Quizás quieras echar un vistazo a la wiki donde se responden estas preguntas.
Capturas de pantalla
Diaphora encontrando la función exacta donde se parcheó una vulnerabilidad en CVE-2020-1350:

Diaphora, de nuevo, encontrando la función exacta donde se corrigió CVE-2023-28231:

CVE-2023-28231. Como se explica en un blog de ZDI, la vulnerabilidad se corrigió comprobando que el número de mensajes de reenvío relay en "ProcessRelayForwardMessage()" no sea mayor o igual que 32 (0x20), como se muestra en el siguiente diffing de pseudocódigo:

Diaphora haciendo diffing de microcódigo de Hex-Rays:

Diffing de ensamblador, pseudocódigo y microcódigo:

Diffing de CVE-2023-21768 con Diaphora 3.0:

Esta es una captura de pantalla de Diaphora comparando la vulnerabilidad del kernel de iOS PEGASUS corregida en iOS 9.3.5:
Y esta es una captura de pantalla antigua de Diaphora comparando el boletín de Microsoft MS15-034:
Diaphora comparando MS15-034
Estas son algunas capturas de pantalla de Diaphora comparando el boletín de Microsoft MS15-050, extraídas de la entrada de blog Analyzing MS15-050 With Diaphora de Alex Ionescu.

Aquí hay una captura de pantalla de Diaphora comparando iBoot de iOS 10.3.3 contra iOS 11.0: