Volver a actualizaciones
Nuevo releaseAug 18, 2026

diaphora v3.4.2

Diaphora, la herramienta de comparación de programas gratuita y de código abierto más avanzada.

Compartir

δiaphora

Instalación

Instálalo con el gestor de plugins de Hex-Rays:

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

Instalación manual: descarga el código y colócalo en tu directorio plugins/.

Diaphora (διαφορά, griego para 'diferencia') versión 3.5 es la herramienta de diffing de programas (funcionando como plugin de IDA) más avanzada disponible a día de hoy (2026). Fue publicada en 2015 y se ha mantenido activamente desde entonces: Diaphora lleva ya 11 años siendo portada a cada una de las versiones menores de IDA desde la 6.8 hasta la 9.5.

Diaphora es compatible con versiones de IDA >= 7.4 porque el código solo se ejecuta en Python 3.X (Python 3.11 fue la última versión probada).

Características únicas

Diaphora tiene muchas de las características más comunes de diffing de programas (bindiffing) que cabría esperar, como:

  • Diffing de ensamblador.
  • Diffing de grafos de flujo de control.
  • Portado de nombres de símbolos y comentarios.
  • Adición de 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 las funciones, etc...

Sin embargo, Diaphora también tiene muchas características que son únicas y no están disponibles en ninguna otra herramienta pública. La siguiente es una lista no exhaustiva de características únicas:

  • Capacidad de portar structs, enums, unions y typedefs.
  • Detección de vulnerabilidades potencialmente corregidas para sesiones de patch diffing.
  • 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 el proceso de exportación como para el de diffing).
  • ...

Donaciones

Puedes ayudar (o agradecer) al autor de Diaphora haciendo una donación. Si te apetece hacerlo, puedes usar uno de los siguientes enlaces:

  • Liberapay
  • Donate

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

Problemas de licencia

Si tu empresa no permite el uso de 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 con nombre de IDA). Para más detalles, contacta conmigo en [email protected].

Recuerda que no soy yo quien te impide usar Diaphora: es tu empresa. Gracias por tu comprensión.

Wiki

Si estás buscando cómo automatizar el proceso de exportación o de diffing, o quieres acelerar las operaciones, etc... Quizá quieras echar un vistazo a la wiki, donde se responden ese tipo de preguntas.

Capturas de pantalla

Diaphora encontrando la función exacta donde se parcheó una vulnerabilidad en CVE-2020-1350:

CVE-2020-1350

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

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 de retransmisión en "ProcessRelayForwardMessage()" no es mayor o igual que 32 (0x20), como se muestra en el siguiente diffing de pseudocódigo:

CVE-2023-28231

Diaphora realizando diffing del microcódigo de Hex-Ray:

Diffing de microcódigo en un grafo

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

Ensamblador, pseudocódigo y microcódigo

Diffing de CVE-2023-21768 con Diaphora 3.0:

Diffing de CVE-2023-21768 con #Diaphora 3.0

Esta es una captura de pantalla de Diaphora realizando diffing de la vulnerabilidad del kernel de iOS PEGASUS corregida en iOS 9.3.5:

Diffing de iOS 9.3.5

Y esta es una captura de pantalla antigua de Diaphora realizando diffing del boletín de Microsoft MS15-034:

Diaphora realizando diffing de MS15-034

Estas son algunas capturas de pantalla de Diaphora realizando diffing del boletín de Microsoft MS15-050, extraídas de la entrada del blog Analyzing MS15-050 With Diaphora de Alex Ionescu.

Diaphora realizando diffing de MS15-050, mejores coincidencias Diaphora realizando diffing de MS15-050, coincidencias parciales Diaphora realizando diffing de MS15-050, diffing de pseudocódigo

Diaphora realizando diffing de un LuaBot, coincidencias y pseudocódigo

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

Diaphora realizando diffing de iBoot de iOS 10.3.3 contra iOS 11.0

Categorías