Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/nccgroup/winstrument
تحليل الثغرات الأمنيةتحليل الشفرة الديناميكي (DAST)الهندسة العكسيةتحليل الملفات الثنائية
GitHubnccgroup/winstrument

Winstrument

Winstrument هو إطار عمل من البرامج النصية المعيارية للمساعدة في تزويد برامج Windows بالأدوات باستخدام Frida للهندسة العكسية وتحليل سطح الهجوم.

عرض المستودع
6896منذ 6 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Winstrument

Winstrument هو إطار عمل من السكربتات المعيارية للمساعدة في فحص برمجيات Windows باستخدام Frida لأغراض الهندسة العكسية وتحليل سطح الهجوم.

المحتويات

  • التثبيت
  • الاستخدام
  • هيكل المشروع
  • الوحدات
  • سطر الأوامر
  • استكشاف الأخطاء وإصلاحها
  • حقوق النشر

التثبيت

يدعم هذا المشروع Python 3.7. إذا كان لديك Python و pip مثبتين بالفعل، فببساطة:

root@kitploit:~
pip install winstrument

ثم لتشغيل البرنامج، نفّذ:

root@kitploit:~
winstrument

لاحظ أن الأداة تجريبية حاليًا، وقد تتجمد أحيانًا أو تواجه مشكلات استقرار أخرى.

في بعض الحالات، مثل تثبيت جديد لنظام Windows 10، قد تواجه خطأ SSL في pip عند تثبيت Frida. إذا حدث ذلك، راجع استكشاف الأخطاء وإصلاحها أدناه.

الاستخدام

لتشغيل بيئة Winstrument التفاعلية (REPL)، شغّل winstrument. فيما يلي مثال سريع لفحص notepad.exe باستخدام وحدة . للحصول على معلومات كاملة حول أوامر سطر الأوامر المتاحة، راجع أدناه.

registry
قسم سطر الأوامر
root@kitploit:~
PS C:\winstrument> winstrument
> set target C:\Windows\System32\notepad.exe
> use registry
> run
Spawned 1144
instrumented process with pid: 1144 and path: C:\Windows\System32\notepad.exe

<User closes notepad from GUI>

detached from 1144 for reason process-terminated
> show registry
module    time               target                           function          hkey                subkey                                                                       value
--------  -----------------  -------------------------------  ----------------  ------------------  ---------------------------------------------------------------------------  ---------------------------------
registry  2019-08-19 07:03:07  C:\Windows\System32\notepad.exe  RegGetValueW      0x2f4               SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize                 AppsUseLightTheme
<...>

في المثال أعلاه، يحدد المستخدم العملية المستهدفة، وفي هذه الحالة notepad.exe. ثم يشير إلى رغبته في استخدام وحدة registry، التي تُعدّد استدعاءات النظام المتعلقة بالسجل (Registry) التي يقوم بها البرنامج. بعد انتهاء العملية (يقوم المستخدم بإغلاق Notepad)، يمكن عرض المخرجات المخزنة باستخدام show registry.

هيكل المشروع

يقوم ملف Python الرئيسي winstrument.py بتهيئة جهاز Frida وإنشاء مثيل للعملية المستهدفة. يوفر cmdline.py واجهة سطر أوامر باستخدام cmd2. هذه هي نقطة الدخول الرئيسية للسكربت عند تشغيل Winstrument مباشرة من سطر الأوامر. الأوامر موثقة أدناه.

ثم يمر عبر كل وحدة مفعّلة، وينشئ مثيلًا لها، ويستدعي طريقة load_scripts() الخاصة بتلك الوحدة لفحص العملية. أخيرًا، يستدعي get_output() و on_finish() لكل وحدة عند فصلها عن الهدف.

توجد الوحدات في ملفات .py داخل مجلد modules/. تتكون الوحدة من فئة فرعية من base_module.BaseInstrumentation والتي تعرّف الكود المراد حقنه، ومعالجة الرسائل لذلك الكود المحقون، والمخرجات. يتم تعريف واجهات برمجة الوحدات بمزيد من التفصيل في قسم "الوحدات" أدناه.

تخزّن كل وحدة بيانات وصفية مثل وصفها في modules/metadata.toml. يجب أن يكون عنوان القسم هو اسم الوحدة (دون تمييز بين الأحرف الكبيرة والصغيرة). على سبيل المثال، هذا هو القسم المقابل لوحدة dlls:

root@kitploit:~
[DLLS]
description = """Hooks LoadLibrary-family system calls and outputs DLL loads where part of the search path might be
writable by the current user or a low-privileged user group."""

يقوم البرنامج بتخزين الإعدادات في settings.toml داخل %APPDATA%/winstrument. نظرًا لأن معظم الوحدات، إن لم تكن جميعها، ستقوم بحقن Javascript في العملية المستهدفة، فإن مجلد modules/js/ يحتوي على مقاطع Javascript الخاصة بـ Frida والتي يتم تحميلها وحقنها بواسطة الوحدات. يجب أن تحمل هذه الملفات نفس اسم الوحدة، أي أن وحدة dlls.py ستستخدم JS من js/dlls.js.

الوحدات

كما هو موضح أعلاه، كل وحدة هي فئة فرعية من BaseInstrumentation الموجودة في base_module.py

يجب على كل وحدة تعريف اسمها (اسم ملفي python و js دون الامتداد) كخاصية فئة ثابتة تسمى modulename. يمكن للوحدات استخدام أو تجاوز الطرق التالية من BaseInstrumentation:

  • __init__(self,*args,**kwargs) - بالإضافة إلى أي كود تهيئة خاص بالوحدة، يجب على هذا المُنشئ استدعاء super().__init__(*args,**kwargs).
  • load_script(self) - هذه الطريقة لا يُفترض عمومًا أن تحتاج إلى تجاوز، لأن التنفيذ في BaseInstrumentation يجب أن يكون كافيًا لمعظم حالات الاستخدام. للتثبيت على أحداث Frida، قم بتجاوز register_callbacks() بدلًا من ذلك. يجب استخدام load_script لتحميل ملف javascript المراد الفحص به، واستدعاء session.create_script من Frida، وإضافة أي دوال استدعاء مرغوبة، ثم استدعاء طريقة load() الخاصة بكائن السكربت لتنفيذ الفحص.
  • register_callbacks(self) - تُستدعى بواسطة BaseInstrumentation.load_script قبل تحميل السكربت في العملية المستهدفة. تُستخدم لتسجيل الأحداث مثل _session.on('message') وغيرها. النسخة في BaseInstrumentation تضيف خطافًا (hook) لحدث on_message افتراضيًا.
  • write_message(message) - تستقبل رسالة شبيهة بـ JSON على شكل dict، وتكتبها في قاعدة بيانات sqlite وتحفظها لإخراجها لاحقًا.
  • post_load(self) - تُستدعى بواسطة BaseInstrumentation.load_script بعد تحميل السكربت داخل العملية المستهدفة. يمكن استخدامها، على سبيل المثال، لاستدعاء طرق RPC المُصدَّرة من السكربت.
  • get_output(self) - تُستدعى بواسطة السكربت الرئيسي عند فصل الهدف. يجب أن تُرجع هذه الطريقة قائمة، حيث كل عنصر هو كائن MoudleMessage واحد (من data/module_message.py). عمومًا لا تحتاج إلى تجاوز.
  • on_message(self,message,data) - معالجة استدعاء لحدث message في Frida، والذي يتم تشغيله بواسطة send داخل JS المحقون.
  • on_finish(self) - معالجة استدعاء تُستدعى بواسطة السكربت الرئيسي عند فصل الهدف. قم بأي عمليات تنظيف مطلوبة هنا.

سطر الأوامر

توفر واجهة Winstrument الأوامر التالية:

  • list - عرض جميع الوحدات المتاحة والمحمّلة
  • load <modulename>/use <modulename> - تفعيل الوحدة ذات الاسم المعطى
  • unload <modulename> - تعطيل الوحدة ذات الاسم المعطى
  • set [setting [value]] - بدون وسائط، يعرض جميع الإعدادات وقيمها. مع وسيط واحد، يعرض قيمة setting. مع وسيطين، يعيّن setting إلى value. تبقى الإعدادات محفوظة عبر عمليات تشغيل متعددة.
  • show [modulename [format]] - عرض المدخلات المخزنة من modulename بالتنسيق format المحدد. شغّله دون وسائط لعرض قائمة بتنسيقات العرض (formatters).
  • info <modulename> - يطبع وصفًا للوحدة ذات الاسم المعطى.
  • run - بدء الفحص (instrumentation).
  • q/quit/exit - إنهاء سطر الأوامر (من الواضح).

استكشاف الأخطاء وإصلاحها

يفشل Pip مع رسالة "SSL Certificate Verify Failed" عند تثبيت Frida

يبدو أن هذا يحدث غالبًا على تثبيت جديد لنظام Windows. يحاول setup.py الخاص بـ Frida سحب ملف .egg من https://files.pythonhosted.org. في بعض الحالات، يفشل ذلك لأن شهادة SSL لهذا النطاق لا يتم التحقق منها. يبدو أن هذا أحد الآثار الجانبية للطريقة التي يقوم بها Windows بتحميل الشهادات الجذرية (root CAs). يبدو أن Windows لا يوفّر جميع الشهادات الجذرية في التثبيت الافتراضي، مفضلًا سحبها عند الحاجة أثناء زيارة المواقع. ونتيجة لذلك، قد لا تكون الشهادة الجذرية التي وقّعت شهادة SSL الخاصة بـ files.pythonhosted.org موجودة في مخزن الثقة بالنظام.

لحل هذه المشكلة، قم بزيارة https://files.pythonhosted.org يدويًا في Edge أو Chrome لدفع Windows إلى إضافة الشهادة الجذرية إلى مخزن الثقة لديه، ثم جرّب pip install مرة أخرى. لاحظ أن زيارة الصفحة في Firefox لن تعمل، لأن Firefox يستخدم مخزن الثقة الخاص به بدلاً من مخزن النظام.

حقوق النشر

Winstrument مرخّص بموجب GPLv3. لمزيد من التفاصيل، راجع ملف LICENSE.

تنزيل الأداة