Windiff-это веб-инструмент с открытым исходным кодом, который позволяет просматривать и сравнивать символы, типа и Syscall Информацию о двоичных файлах Microsoft Windows в разных версиях операционной системы. Двоичная база данных автоматически обновляется, чтобы включить информацию из последних обновлений Windows (включая Insider Preview).
Он был вдохновлен NTDIFF и стал возможным с помощью WinBindex.

Windiff изготовлен из двух частей: инструмент CLI, написанный в Rust, и веб -фронт, написанный в TypeScript с использованием Framework Next.js.
Инструмент CLI используется для генерации сжатых баз данных JSON из файла конфигурации и опирается на Winbindex , чтобы найти и загрузить требуемые PES (и PDBS). Типы реконструируются с использованием resym . Идея инструмента CLI состоит в том, чтобы иметь возможность легко обновлять и регенерировать базы данных, когда выпускаются новые версии Windows. Код инструмента CLI находится в каталоге windiff_cli .
Фронталь используется для визуализации данных, сгенерированных инструментом CLI, удобным для пользователя. Frontend следует тому же принципу, что и ntdiff , поскольку он позволяет просмотреть информацию, извлеченную из официальных Microsoft PES и PDBS для определенных версий Microsoft Windows, а также позволяет сравнивать эту информацию между версиями. Код фронта находится в каталоге windiff_frontend .
Запланированное действие GitHub получает новые обновления от Winbindex каждый день и обновляет файл конфигурации, используемый для генерации живой версии Windiff. В настоящее время, из -за (бесплатных планов) хранения и ограничений на вычисление, только KB и инсайдерские предварительные обновления менее одного года сохраняются для живой версии. Вы, конечно, можете перестроить местную версию Windiff, без этих ограничений, если вам нужно. Смотрите следующий раздел для этого.
Примечание: Winbindex не предоставляет уникальные ссылки на загрузку для 100% индексированных файлов, поэтому может произойти, что информация некоторых PES недоступна в Windiff из -за этого. Тем не менее, как только эти PE будут на вирустоте, 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, направленные на добавление новых двоичных файлов для отслеживания в живой конфигурации.