O Windiff é uma ferramenta baseada na Web de código aberto que permite a navegação e comparação de informações de símbolo, tipo e syscall dos binários do Microsoft Windows em diferentes versões do sistema operacional. O banco de dados binário é atualizado automaticamente para incluir informações das atualizações mais recentes do Windows (incluindo visualização do Insider).
Foi inspirado por Ntdiff e possibilitado com a ajuda do WinBindex.

O Windiff é feito de duas partes: uma ferramenta da CLI escrita em ferrugem e um front -end da web escrito em TypeScript usando a estrutura Next.js.
A ferramenta CLI é usada para gerar bancos de dados JSON compactados a partir de um arquivo de configuração e depende do Winbindex para encontrar e baixar os PES necessários (e PDBs). Os tipos são reconstruídos usando resym . A idéia por trás da ferramenta CLI é poder atualizar e regenerar facilmente os bancos de dados à medida que novas versões do Windows são lançadas. O código da ferramenta da CLI está no diretório windiff_cli .
O front-end é usado para visualizar os dados gerados pela ferramenta CLI, de uma maneira fácil de usar. O front -end segue o mesmo princípio que ntdiff , pois permite a navegação de informações extraídas do Microsoft PES e PDBs oficiais para determinadas versões do Microsoft Windows e também permite comparar essas informações entre as versões. O código do front -end está no diretório windiff_frontend .
Uma ação do Github programada busca novas atualizações do Winbindex todos os dias e atualiza o arquivo de configuração usado para gerar a versão ao vivo do Windiff. Atualmente, por causa de (planos gratuitos) de armazenamento e limitações de computação, apenas as atualizações da KB e da pré -visualização com menos de um ano são mantidas para a versão ao vivo. É claro que você pode reconstruir uma versão local do Windiff, sem essas limitações, se necessário. Veja a próxima seção para isso.
Nota: Winbindex não fornece links de download exclusivos para 100% dos arquivos indexados, portanto, pode acontecer que as informações de alguns PES não estejam disponíveis no Windiff por causa disso. No entanto, assim que esses PEs estiverem no Virustotal, Winbindex poderá fornecer links de download exclusivos para eles e eles serão integrados ao Windiff automaticamente.
A construção completa do Windiff é "autocumumada" em ci/build_frontend.sh , que é o script de construção usado para construir a versão ao vivo do Windiff. Aqui está o que está 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 O arquivo de configuração usado para gerar os dados para a versão ao vivo do Windiff está localizado aqui: ci/db_configuration.json , mas você pode personalizá -lo ou usar o seu. Os PRs destinados a adicionar novos binários para rastrear na configuração ao vivo são bem -vindos.