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。