Windiff는 다양한 버전의 운영 체제에서 Microsoft Windows Binaries의 기호, 유형 및 SYSCALL 정보를 탐색 및 비교할 수있는 오픈 소스 웹 기반 도구입니다. 바이너리 데이터베이스는 최신 Windows 업데이트 (Insider Preview 포함)의 정보를 포함하도록 자동 업데이트됩니다.
그것은 Ntdiff에서 영감을 얻어 Winbindex의 도움으로 가능했습니다.

Windiff는 Rust로 작성된 CLI 도구와 TypeScript로 작성된 웹 프론트 엔드의 두 부분으로 만들어졌습니다. JS 프레임 워크.
CLI 도구는 구성 파일에서 압축 된 JSON 데이터베이스를 생성하는 데 사용되며 Winbindex 를 사용하여 필요한 PES (및 PDB)를 찾아 다운로드합니다. 유형은 resym 사용하여 재구성됩니다. CLI 도구의 아이디어는 새로운 버전의 Windows가 출시 될 때 데이터베이스를 쉽게 업데이트하고 재생할 수 있다는 것입니다. CLI 도구의 코드는 windiff_cli 디렉토리에 있습니다.
프론트 엔드는 CLI 도구에 의해 생성 된 데이터를 사용자 친화적 인 방식으로 시각화하는 데 사용됩니다. 프론트 엔드는 ntdiff 와 동일한 원칙을 따릅니다. 특정 버전의 Microsoft Windows에 대해 공식 Microsoft PES 및 PDB에서 추출한 브라우징 정보를 찾을 수 있으며이 정보를 버전간에 비교할 수 있습니다. 프론트 엔드의 코드는 windiff_frontend 디렉토리에 있습니다.
예정된 GitHub 액션은 매일 Winbindex 의 새로운 업데이트를 가져오고 라이브 버전의 Windiff를 생성하는 데 사용되는 구성 파일을 업데이트합니다. 현재 (무료 계획) 스토리지 및 컴퓨팅 제한으로 인해 KB 및 Insider Preview 업데이트 만 1 년 미만의 라이브 버전에 보관됩니다 . 물론 필요한 경우 그 한계없이 로컬 버전의 Windiff를 직접 재건 할 수 있습니다. 다음 섹션을 참조하십시오.
참고 : Winbindex 색인화 된 파일의 100%에 대한 고유 한 다운로드 링크를 제공하지 않으므로 일부 PES의 정보가 Windiff에서 사용할 수 없을 수 있습니다. 그러나 이러한 PES가 바이러스에 닿 자마자 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 이지만 사용자 정의하거나 직접 사용할 수 있습니다. 라이브 구성에서 추적하기 위해 새로운 바이너리를 추가하는 것을 목표로하는 PR은 환영합니다.