Windiff est un outil Web open-source qui permet de naviguer et de comparer les informations de symbole, de type et système des binaires Microsoft Windows sur différentes versions du système d'exploitation. La base de données binaire est automatiquement mise à jour pour inclure les informations des dernières mises à jour Windows (y compris le prévisualisation Insider).
Il a été inspiré par NTDIFF et a rendu possible avec l'aide de Winbindex.

Windiff est composé de deux parties: un outil CLI écrit en rouille et une frontend Web écrite en dactylographie en utilisant le cadre suivant.js.
L'outil CLI est utilisé pour générer des bases de données JSON compressées à partir d'un fichier de configuration et s'appuie sur Winbindex pour trouver et télécharger les PE (et PDB) requis. Les types sont reconstruits à l'aide de resym . L'idée derrière l'outil CLI est de pouvoir mettre à jour et régénérer facilement les bases de données à mesure que les nouvelles versions de Windows sont publiées. Le code de l'outil CLI est dans le répertoire windiff_cli .
Le frontend est utilisé pour visualiser les données générées par l'outil CLI, de manière conviviale. Le frontend suit le même principe que ntdiff , car il permet de parcourir les informations de navigation extraites de Microsoft PES et PDB officiels pour certaines versions de Microsoft Windows et permet également de comparer ces informations entre les versions. Le code du frontend se trouve dans le répertoire windiff_frontend .
Une action GitHub planifiée obtient chaque jour de nouvelles mises à jour de Winbindex et met à jour le fichier de configuration utilisé pour générer la version en direct de Windiff. Actuellement, en raison des limitations de stockage et de calcul (plans gratuits), seule les mises à jour de l'aperçu KB et Insider de moins d'un an sont conservées pour la version en direct. Vous pouvez bien sûr reconstruire une version locale de Windiff vous-même, sans ces limites si vous en avez besoin. Voir la section suivante pour cela.
Remarque: Winbindex ne fournit pas de liens de téléchargement uniques pour 100% des fichiers indexés, il peut donc arriver que les informations de certaines PES ne soient pas disponibles dans Windiff à cause de cela. Cependant, dès que ces PE sont sur Virustotal, Winbindex pourra leur fournir des liens de téléchargement uniques et ils seront ensuite intégrés dans Windiff automatiquement.
La version complète de Windiff est "auto-documentée" dans ci/build_frontend.sh , qui est le script de construction utilisé pour construire la version en direct de Windiff. Voici ce qu'il y a à l'intérieur:
# 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 Le fichier de configuration utilisé pour générer les données de la version en direct de Windiff est situé ici: ci/db_configuration.json , mais vous pouvez le personnaliser ou utiliser le vôtre. Les PR visant à ajouter de nouveaux binaires à suivre dans la configuration en direct sont les bienvenus.