Windiff是一種基於開源Web的工具,允許在操作系統的不同版本中瀏覽和比較Microsoft Windows二進製文件的符號,類型和SYSCALL信息。二進制數據庫會自動更新,以包含來自最新Windows更新(包括Insider Preview)的信息。
它的靈感來自NTDIFF,並在Winbindex的幫助下成為可能。

Windiff由兩個部分組成:使用Rust編寫的CLI工具和使用Next.js Framework用打字稿編寫的Web前端。
CLI工具用於從配置文件中生成壓縮JSON數據庫,並依靠Winbindex查找和下載所需的PES(和PDB)。使用resym重建類型。 CLI工具背後的想法是能夠輕鬆更新並重新生成數據庫,因為發布了新版本的Windows版本。 CLI工具的代碼位於windiff_cli目錄中。
前端用於以用戶友好的方式可視化CLI工俱生成的數據。前端遵循與ntdiff相同的原理,因為它允許從Microsoft PES和PDB中提取的某些版本的Microsoft Windows瀏覽信息,還允許在版本之間比較此信息。前端代碼在windiff_frontend目錄中。
計劃的GitHub Action每天從Winbindex獲取新的更新,並更新用於生成實時版Windiff的配置文件。目前,由於(免費計劃)存儲和計算限制,因此只保留了少於一年曆史的KB和Insider預覽更新。當然,您可以自己重建當地版Windiff,如果需要的話,就無需這些限制。請參閱下一節。
注意: Winbindex不能為100%的索引文件提供唯一的下載鏈接,因此可能會因此,某些PES的信息在Windiff中無法使用。但是,一旦這些PES在Virustotal上, Winbindex就可以為它們提供唯一的下載鏈接,然後將它們自動集成到Windiff中。
Windiff的完整構建在ci/build_frontend.sh中是“自我證明”的,這是用於構建Windiff實時版本的構建腳本。這是裡面的東西:
# 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用於生成Windiff實時版本的數據的配置文件位於這裡: ci/db_configuration.json ,但您可以自定義或使用自己的。歡迎旨在添加新的二進製文件以在實時配置中跟踪的PRS。