
أداة تتيح مقارنة معلومات الرموز والأنواع واستدعاءات النظام للملفات الثنائية لمايكروسوفت ويندوز عبر إصدارات مختلفة من نظام التشغيل، باستخدام واجهة ويب و/أو نماذج لغوية كبيرة (LLMs).
WinDiff هي أداة مفتوحة المصدر تعتمد على الويب وتسمح بتصفح ومقارنة معلومات الرموز والأنواع واستدعاءات النظام لثنائيات مايكروسوفت ويندوز عبر إصدارات مختلفة من نظام التشغيل. يتم تحديث قاعدة بيانات الثنائيات تلقائياً لتضمين معلومات من أحدث تحديثات ويندوز (بما في ذلك Insider Preview).
كان مستوحى من ntdiff وأصبح ممكناً بمساعدة Winbindex.
يتكون WinDiff من جزأين: أداة سطر أوامر مكتوبة بلغة Rust وواجهة أمامية ويب مكتوبة بلغة TypeScript باستخدام إطار العمل Next.js.
تُستخدم أداة سطر الأوامر لإنشاء قواعد بيانات JSON مضغوطة من ملف تكوين وتعتمد على Winbindex للعثور على الملفات التنفيذية المحمولة (PEs) وملفات قواعد بيانات التصحيح (PDBs) المطلوبة وتنزيلها. يتم إعادة بناء الأنواع باستخدام resym. الفكرة من وراء أداة سطر الأوامر هي القدرة على تحديث وإعادة إنشاء قواعد البيانات بسهولة عند إصدار إصدارات جديدة من ويندوز. يقع كود أداة سطر الأوامر في دليل windiff_cli.
تُستخدم الواجهة الأمامية لتصور البيانات التي تولدها أداة سطر الأوامر بطريقة سهلة الاستخدام. تتبع الواجهة الأمامية نفس مبدأ ntdiff، حيث تسمح بتصفح المعلومات المستخرجة من ملفات PEs وPDBs الرسمية لشركة مايكروسوفت لإصدارات معينة من مايكروسوفت ويندوز وتسمح أيضاً بمقارنة هذه المعلومات بين الإصدارات. يقع كود الواجهة الأمامية في دليل windiff_frontend.
يجلب إجراء مجدول في GitHub تحديثات جديدة من Winbindex كل يوم ويقوم بتحديث ملف التكوين المستخدم لإنشاء النسخة الحية من WinDiff. حالياً، بسبب قيود التخزين والحوسبة (للخطط المجانية)، فقط KB وتحديثات Insider Preview التي يقل عمرها عن عام واحد يتم الاحتفاظ بها للنسخة الحية. يمكنك بالطبع إعادة بناء نسخة محلية من WinDiff بنفسك، دون هذه القيود إذا أردت. انظر القسم التالي لذلك.
ملاحظة: لا يوفر Winbindex روابط تنزيل فريدة لـ 100% من الملفات المفهرسة، لذلك قد يحدث أن تكون معلومات بعض ملفات PEs غير متاحة في WinDiff بسبب ذلك. ومع ذلك، بمجرد وجود هذه الملفات التنفيذية المحمولة على 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) التي تهدف إلى إضافة ثنائيات جديدة لتتبعها في التكوين الحي.
يحتوي المستودع على مهارة وكيل تحول WinDiff إلى مساعد آلي للبحث الأمني. بدلاً من النقر بنفسك عبر واجهة الفروق، يمكنك أن تطلب من Claude Code مقارنة إصدارين من ويندوز وكتابة ما تغير — ولماذا يهم.
توجد المهارة في .claude/skills/windiff-version-diff-analysis/. عند فتح هذا المستودع في Claude Code، يتم تحميلها تلقائياً وتنشط عند طلبات مثل:
ntoskrnl.exe بين 21H2 و 24H2 وأخبرني ما الجديد."win32k.sys / ci.dll مما يهم برامج EDR أو مكافحة الغش؟"عند وجود إصدارين، تقوم المهارة بتشغيل windiff_cli لإنشاء قواعد البيانات، ومقارنتها، وإنتاج تقرير يفسر دلتا الرموز/الأنواع/استدعاءات النظام الخام باستخدام معرفة مكونات ويندوز الداخلية (بادئات API، أدوار المكونات)، موجهة لثلاثة جماهير: مطوري مكافحة البرمجيات الخبيثة/EDR، مطوري مكافحة الغش، وباحثي الثغرات الأمنية. يسلط الضوء على استدعاءات النظام الجديدة، أعلام التخفيف الجديدة (بما في ذلك البتات المخبأة داخل هياكل الحقول البتية المجهولة، المرتبطة بأصلها مثل _EPROCESS::MitigationFlags2Values)، تليمترية ETW/استخبارات التهديدات الجديدة واستدعاءات النواة، تغييرات سلامة الكود، ومكونات جديدة كلياً.
إليك تقرير تم إنشاؤه بواسطة Claude Opus 4.7 للطلب "قارن ntoskrnl.exe بين 25H2 و 26H1 وأخبرني ما الجديد. اكتب تقريرك في ملف ماركداون": ntoskrnl_25H2_to_26H1.md
منطق المقارنة الأساسي للمهارة هو سكربت Python مستقل بدون تبعيات، يمكن استخدامه بمفرده مع أي قواعد بيانات أنتجتها windiff_cli:
# List the OS versions / binaries available in a database directory
python3 .claude/skills/windiff-version-diff-analysis/scripts/windiff_diff.py \
windiff_frontend/public --list
# Diff one binary between two OS versions ("version_update_architecture" suffixes)
python3 .claude/skills/windiff-version-diff-analysis/scripts/windiff_diff.py \
windiff_frontend/public ntoskrnl.exe 21H2_BASE_amd64 22H2_BASE_amd64
يطبع ملخصاً readable بشرياً إلى stderr و JSON منظم (الصادرات المضافة/المزالة، الرموز، الوحدات، استدعاءات النظام، وتغييرات الأنواع/الحقول البتية المحللة) إلى stdout. راجع SKILL.md الخاص بالمهارة للحصول على سير العمل الكامل والمواد المرجعية.