
مراقب نظام وواجهة برمجة تطبيقات Windows مستقل بدون برامج تشغيل بلغة Rust
مراقب عالي الأداء لنظام Windows وواجهات API بدون برامج تشغيل، مكتوب بلغة Rust.
بديل حديث لـ strace وProcess Monitor في الوقت الفعلي لنظام Windows. مبني بلغة Rust الأصلية دون الحاجة إلى أي برامج تشغيل kernel، ويتميز بواجهة مستخدم طرفية (TUI) في الوقت الفعلي وبث غير مخزّن مؤقتًا للتشخيصات بدون واجهة رسومية.
تُعرّض برامج تشغيل kernel الخاصة بالجهات الخارجية (.sys) النظام لخطر الانهيار (BSOD)، وتوسّع سطح الهجوم، وتتطلب إعفاءات توقيع برامج التشغيل المحظورة في بيئات المؤسسات. يعمل wstrace بنسبة 100% في وضع المستخدم (userland) باستخدام واجهات Win32 غير التدخلية لواجهات برمجة تطبيقات التصحيح وواجهات ETW الأصلية في Windows.
يمكن لحسابات المستخدمين القياسية تشغيل وتتبع أي هدف عبر wstrace run <binary>. ترث العمليات الفرعية المنبثقة مقابض التصحيح (PROCESS_ALL_ACCESS) مباشرةً دون مطالبات UAC. تعتمد القياسات عن بُعد للوحدات (modules) والخيوط (threads) والمقابس (sockets) وعمليات الإدخال/الإخراج (I/O) بالكامل على واجهات Win32 غير المميزة.
رفع الصلاحيات هو مُسرِّع، وليس بوابة:
run وattach (جلسة المستخدم)، والعمليات الفرعية (-C)، وواجهة TUI التفاعلية، والبث.wstrace all) لمراقبة خدمات نظام التشغيل الخلفية وخدمات النظام (daemons).نفّذ الأمر التالي في PowerShell لتثبيت أحدث إصدار تلقائيًا في $HOME\.local\bin وإضافته إلى PATH الخاص بالمستخدم:
irm https://raw.githubusercontent.com/gilnett/wstrace/main/packaging/install.ps1 | iex
التثبيت عبر الحزمة الشخصية:
scoop bucket add gilnett https://github.com/gilnett/scoop-bucket
scoop install wstrace
أو قم بالتثبيت مباشرةً عبر URL:
scoop install https://raw.githubusercontent.com/gilnett/wstrace/main/packaging/scoop/wstrace.json
نزّل الملفات الثنائية المستقلة المُجمَّعة مسبقًا من إصدارات GitHub.
ثبّت مباشرةً من GitHub:
cargo install --git https://github.com/gilnett/wstrace.git
أو ابنِ محليًا من مستودع مستنسخ:
cargo build --release
يقع الملف الثنائي الناتج في target\release\wstrace.exe.
[!NOTE] تتم مزامنة ملفات تعريف Winget وScoop تلقائيًا مع إصدارات GitHub المنشورة.
[!NOTE] تخضع عملية تقديم الحزمة الرسمية حاليًا للمراجعة والتحقق على microsoft/winget-pkgs. وبمجرد الموافقة عليها ودمجها من قبل مشرفي المجتمع، سيكون بالإمكان تثبيتها مباشرة عبر:
winget install gilnett.wstrace
scoop install .\packaging\scoop\wstrace.json
تأكد من أن wstrace متاح في الصدفة الحالية:
wstrace --version
شغّل ملفًا تنفيذيًا مستهدفًا مع قياسات Win32 والنظام في الوقت الفعلي:
wstrace run <executable_path> [-- <arguments>...]
| المفتاح | الإجراء | الوصف |
|---|---|---|
Ctrl+C | نسخ المحدد | ينسخ تفاصيل الحدث المميز إلى حافظة Windows. |
Ctrl+A | نسخ الكل | ينسخ جميع الأحداث المفلترة حاليًا إلى حافظة Windows. |
Ctrl+E / Space | إيقاف مؤقت / استئناف | يجمّد عرض الأحداث دون إسقاط البيانات التليمترية الواردة. |
Ctrl+X | مسح المخزن المؤقت | يفرّغ قائمة الأحداث الحالية من مخزن العرض المؤقت. |
Tab | تدوير الفئات | يفلتر الأحداث: ALL -> FILE -> REG -> NET -> PROC. |
f | الإخفاقات فقط | يقصر العرض على العمليات الفاشلة (مثل رفض الوصول، غير موجود). |
Up / Down | التنقل | يحدد حدثًا للفحص المتعمق. |
q / Esc | الخروج | ينهي جلسة التتبع بشكل نظيف. |
راقب العمليات النشطة، والعمليات المنشأة حديثًا، وعمليات الخروج، والوحدات المحمّلة على مستوى النظام في الوقت الفعلي:
wstrace all
اتصل بعملية موجودة عبر PID أو اسم الملف التنفيذي دون إعادة تشغيلها:
# Attach by PID
wstrace attach -p <PID>
# Attach by process name
wstrace attach -n <process_name.exe>
يكتب الأحداث المباشرة مباشرةً إلى stdout مع رموز ألوان ANSI:
wstrace -m stream [-d <seconds>] run <executable_path>
الدليل الشامل والخيارات المتقدمة: لتصفية المسارات المتقدمة (
--include/--exclude)، وتتبع العمليات الفرعية (-C)، وتقارير JSON (--export-json)، وتصدير الحافظة (--copy)، وخيارات البرمجة النصية، راجع دليل مرجع CLI أو شغّلwstrace --help.
packaging/install.ps1)ToolHelp32Snapshot، OpenProcess، VirtualQueryEx) وتتبع الأحداث في Windows (ETW).x86_64-pc-windows-msvc (Intel / AMD 64-bit)aarch64-pc-windows-msvc (Qualcomm Snapdragon X / Windows on ARM)صُمّم wstrace لتلبية المتطلبات المؤسسية الصارمة للنشر في بيئات المؤسسات عالية الأمان (القطاع المصرفي، والدفاع، والرعاية الصحية، والبنية التحتية الحيوية):
wstrace يعمل دون اتصال بنسبة 100% ومستقل تمامًا. لا يحتفظ بأي خوادم بعيدة، ولا يبدأ أي قياسات أو تحليلات عن بُعد، ولا ينفّذ أي اتصالات شبكية صادرة. أي بيانات حساسة تُرصد أثناء التتبع المباشر (رموز API، ومسارات الملفات، وبيانات الاعتماد، ومحتويات الذاكرة) تبقى محصورة بشكل صارم في ذاكرة الوصول العشوائي المحلية ولا تغادر محطة العمل أبدًا.
على عكس أدوات التتبع التقليدية التي تثبّت برامج تشغيل نواة .sys تابعة لجهات خارجية—مما يقدّم مخاطر انهيار النظام (شاشة الموت الزرقاء / BSOD) وأسطح هجوم أبواب خلفية على مستوى ring-0—يعمل wstrace دون أي برامج تشغيل نواة. فهو يعتمد حصريًا على تصحيح Win32 غير التدخّلي في مساحة المستخدم وواجهات مستهلك ETW الأصلية لنواة Windows.
قياسات التتبع محدودة بشكل صارم بجلسة مستخدم Windows وحدود التحكم الإلزامي في النزاهة (MIC). لا يمكن لجلسات المستخدمين غير المميزين الوصول إلى العمليات ذات النزاهة الأعلى أو فحصها دون رفع صلاحيات المسؤول الصريح، التزامًا صارمًا بمبدأ الامتياز الأدنى.