Windiff es una herramienta basada en la web de código abierto que permite navegar y comparar la información de símbolo, tipo y syscall de los binarios de Microsoft Windows en diferentes versiones del sistema operativo. La base de datos binaria se actualiza automáticamente para incluir información de las últimas actualizaciones de Windows (incluida la vista previa de Insider).
Fue inspirado en NTDIFF e hizo posible con la ayuda de WinBindex.

Windiff está hecho de dos partes: una herramienta CLI escrita en Rust y un interfaz web escrito en TypeScript utilizando el marco Next.js.
La herramienta CLI se utiliza para generar bases de datos JSON comprimidas fuera de un archivo de configuración y depende de Winbindex para encontrar y descargar los PE (y PDB) requeridos. Los tipos se reconstruyen usando resym . La idea detrás de la herramienta CLI es poder actualizar y regenerar fácilmente las bases de datos a medida que se lanzan nuevas versiones de Windows. El código de la herramienta CLI está en el directorio windiff_cli .
El frontend se utiliza para visualizar los datos generados por la herramienta CLI, de manera fácil de usar. El frontend sigue el mismo principio que ntdiff , ya que permite navegar información extraída de Microsoft PES y PDB oficial para ciertas versiones de Microsoft Windows y también permite comparar esta información entre versiones. El código del frontend está en el directorio windiff_frontend .
Una acción de GitHub programada obtiene nuevas actualizaciones de Winbindex todos los días y actualiza el archivo de configuración utilizado para generar la versión en vivo de Windiff. Actualmente, debido a las limitaciones de almacenamiento y de cómputo (planes gratuitos), solo se mantienen actualizaciones de vista previa de KB e Insider de menos de un año para la versión en vivo. Por supuesto, puede reconstruir una versión local de Windiff usted mismo, sin esas limitaciones si es necesario. Vea la siguiente sección para eso.
Nota: Winbindex no proporciona enlaces de descarga únicos para el 100% de los archivos indexados, por lo que podría suceder que la información de algunos PE no esté disponible en Windiff debido a eso. Sin embargo, tan pronto como estos PE estén en Virustotal, Winbindex podrá proporcionarles enlaces de descarga únicos para ellos y luego se integrarán en Windiff automáticamente.
La construcción completa de Windiff es "autodocumentada" en ci/build_frontend.sh , que es el script de compilación utilizado para construir la versión en vivo de Windiff. Esto es lo que hay dentro:
# Resolve the project's root folder
PROJECT_ROOT= $( git rev-parse --show-toplevel )
# Generate databases
cd " $PROJECT_ROOT /windiff_cli "
cargo run --release " $PROJECT_ROOT /ci/db_configuration.json " " $PROJECT_ROOT /windiff_frontend/public/ "
# Build the frontend
cd " $PROJECT_ROOT /windiff_frontend "
npm ci
npm run build El archivo de configuración utilizado para generar los datos para la versión en vivo de Windiff se encuentra aquí: ci/db_configuration.json , pero puede personalizarlos o usar el suyo propio. Los PRS destinados a agregar nuevos binarios para rastrear en la configuración en vivo son bienvenidos.