WinDiff es una herramienta de código abierto basada en web que permite explorar y comparar la información de símbolos, tipos y llamadas al sistema de archivos binarios de Microsoft Windows de diferentes versiones del sistema operativo. La base de datos binaria se actualiza automáticamente para incluir información de las últimas actualizaciones de Windows, incluidas Insider Previews.
está inspirado en ntdiff y fue posible gracias a la ayuda de Índice de Wenbin.
Tabla de Contenidos
cómo funciona
WinDiff consta de dos partes: una herramienta CLI escrita en Rust y una interfaz web escrita en TypeScript utilizando el marco Next.js.
La herramienta CLI se utiliza para generar una base de datos JSON comprimida a partir del archivo de configuración y se basa en Winbindex
Busque y descargue el PE (y PDB) requerido.El tipo se reconstruye usando resym
. La idea detrás de la herramienta CLI es poder actualizar y regenerar fácilmente el repositorio cuando se lanza una nueva versión de Windows. El código de la herramienta CLI se encuentra en windiff_cli
Tabla de contenido.
La interfaz se utiliza para visualizar los datos generados por la herramienta CLI de una manera fácil de usar.La parte delantera sigue los mismos principios. ntdiff
porque permite explorar información extraída de Microsoft PE y PDB oficiales para ciertas versiones de Microsoft Windows, y también permite comparar esta información entre versiones.El código de interfaz se encuentra en windiff_frontend
Tabla de contenido.
Acción programada de GitHub para obtener nuevas actualizaciones de Winbindex
Los archivos de configuración utilizados para generar versiones en vivo de WinDiff se actualizan diariamente. Actualmente, debido a limitaciones de almacenamiento y computación (plan gratuito), solo base de conocimiento y conservar las actualizaciones de Insider Preview durante menos de un año Para la versión en vivo. Por supuesto, si es necesario, puedes reconstruir tú mismo la versión nativa de WinDiff sin estas restricciones. Consulte la siguiente sección.
notas: Winbindex
No existe un enlace de descarga único para archivos 100% indexados, por lo que puede haber casos en los que cierta información de PE no esté disponible en WinDiff. Sin embargo, una vez que estos PE aparecen en VirusTotal, Winbindex
Podrás proporcionarles un enlace de descarga único y luego se integrarán automáticamente en WinDiff.
cómo construir
requisitos previos
- Óxido 1.68 o superior
- Node.js 16.8 o superior
línea de comando
La versión completa de WinDiff está «autodocumentada» en ci/build_frontend.sh
, que es el script de compilación utilizado para crear una versión activa de WinDiff. Esto es lo que hay 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
El archivo de configuración utilizado para generar datos de la versión en vivo de WinDiff se encuentra aquí: ci/db_configuration.json
, pero puedes personalizarlo o utilizar el tuyo propio. Son bienvenidos los PR para agregar archivos binarios para el seguimiento en la configuración en vivo.