Windiff هي أداة مفتوحة المصدر على شبكة الإنترنت تتيح التصفح ومقارنة معلومات الرمز والنوع والمعلومات الخاصة بـ Microsoft Windows عبر إصدارات مختلفة من نظام التشغيل. يتم تحديث قاعدة البيانات الثنائية تلقائيًا لتضمين معلومات من أحدث تحديثات Windows (بما في ذلك معاينة Insider).
كانت مستوحاة من NTDIFF وأصبحت ممكنة بمساعدة WinBindex.

يتكون Windiff من جزأين: أداة CLI مكتوبة في الصدأ وواجهة ويب مكتوبة في TypeScript باستخدام إطار عمل Next.js.
يتم استخدام أداة CLI لإنشاء قواعد بيانات JSON المضغوطة من ملف التكوين وتعتمد على Winbindex للعثور على PES المطلوبة (و PDBS). يتم إعادة بناء الأنواع باستخدام resym . تتمثل الفكرة وراء أداة CLI في أن تكون قادرًا على تحديث قواعد البيانات وتجديدها بسهولة حيث يتم إصدار إصدارات جديدة من Windows. رمز أداة CLI موجود في دليل windiff_cli .
يتم استخدام الواجهة الأمامية لتصور البيانات التي تم إنشاؤها بواسطة أداة CLI ، بطريقة سهلة الاستخدام. تتبع الواجهة الأمامية نفس مبدأ ntdiff ، حيث تتيح معلومات التصفح المستخرجة من Microsoft PES و PDBs الرسمية لبعض الإصدارات من Microsoft Windows وتسمح أيضًا بمقارنة هذه المعلومات بين الإصدارات. رمز الواجهة الأمامية موجود في دليل windiff_frontend .
يجلب إجراء GitHub المجدول تحديثات جديدة من Winbindex كل يوم ويقوم بتحديث ملف التكوين المستخدم لإنشاء الإصدار المباشر من Windiff. حاليًا ، نظرًا لقيود (خطط مجانية) تخزين وحساب ، يتم الاحتفاظ فقط بتحديثات KB و Insider Preview التي تقل عن عام واحد للإصدار المباشر. يمكنك بالطبع إعادة بناء نسخة محلية من 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 التي تهدف إلى إضافة ثنائيات جديدة إلى تتبع التكوين المباشر.