
إثبات مفهوم يوضح استدعاءات التجهيز على Windows 10 21h1 باستخدام متغير TLS لضمان التقاط جميع syscalls.
استدعاءات الأدوات هي جزء غير موثق بشكل كامل من نظام Windows. جميع التعليمات البرمجية في هذا المستودع منشورة تحت ترخيص MIT. يستخدم هذا المستودع تنسيق مسافات C++ على نمط Google.
نرحب بطلبات السحب (PRs) إذا وجدت مشكلات أو أخطاء أو تعتقد أنه يجب إضافة ميزة معينة.
استدعاءات الأدوات تسمح لك بالتعامل مع جميع استدعاءات النظام (والاستثناءات!) التي تُرسل بواسطة عملية قمت بوضع استدعاء عليها.
بالطبع، سيتم التقاط كل استدعاء نظام، لذا أثناء تنفيذ الاستدعاء، لا ينبغي عادةً إصدار أي استدعاءات نظام أخرى داخله إلا إذا كنت تريد الدخول في تكرار لا نهائي.
هذا من شأنه أن يحد بشكل كبير مما يمكنك فعله داخل الاستدعاء، أو على الأقل يشكل تحديًا في التصميم، ولكن في الفقرة التالية سترى حلًا أنيقًا إلى حد ما للمشكلة.
هذا الحل ليس خاليًا من العيوب، حيث يمكن لمهاجم محتمل أن يقوم عن قصد بتعيين المتغير لتعطيل الاستدعاء، لكنه شبه مثالي لأغراض التحليل.
أحد الحلول لهذه المشكلة يمكن أن يكون تعيين علامة (flag) إلى صحيح/خطأ تُمكّن أو تُعطّل قدرات التحليل للاستدعاء، مما يسمح بشكل أساسي بمرور كل استدعاء نظام إذا كان استدعاء نظام آخر قيد المعالجة بالفعل.
لكن هذا سيسمح بمرور معظم استدعاءات النظام.
هذا المستودع، بدلاً من ذلك، يحل مشكلة عدم القدرة على إصدار استدعاءات نظام داخل استدعاء أداة عن طريق تعيين متغير يعتمد على TLS، مما يضمن معالجة جميع استدعاءات النظام من جميع الخيوط بينما نكون قادرين على استدعائها بأنفسنا. استدعاءات النظام الوحيدة التي سنفوتها هي تلك التي سنصدرها من داخل الاستدعاء، والتي (في معظم الحالات، مثل تلك التي نحلل فيها برامج) لا نهتم بها غالبًا.
استدعاءات الأدوات لديها العديد من الاستخدامات المحتملة، أحدها يمكن أن يكون لأغراض مكافحة الغش، يمكنك تحليل استدعاءات النظام القادمة من العملية، وتحديد ما إذا كانت تأتي من مساحة عنوان غير مشروعة أو تُستخدم لأغراض ضارة دون الحاجة إلى ملء DLLs النظام بتصحيحات البايت و hooks.
يمكنك أيضًا استخدامها للحصول على تنفيذ كود داخل عملية، إذا كان بإمكانك تخصيص وكتابة في الذاكرة ثم تعيين معلومات العملية، ستتمكن من اختطاف خيط يقوم بتنفيذ استدعاء نظام عن طريق جعله يستدعي استدعاءًا خاصًا بك.
بالطبع، لا أؤيد استخدام أي كود في هذا المستودع أو مستودعاتي الأخرى لتطوير برامج غش أو ضارة.
ما تفعله بهذا هو مسؤوليتك الشخصية.