
مكتبة مضادة لتصحيح الأخطاء (anti-debugging) خفية في مساحة المستخدم (userland) بلغة C/C++ تعتمد بالكامل على استدعاءات النظام (syscalls) لنظام Windows، مصممة لحماية البرمجيات من الهندسة العكسية
antidbg هي مكتبة مضادة للتنقيح (anti-debugging) تعمل في وضع المستخدم (user-mode) على نظام Windows بمعمارية x64، مصممة لحماية البرمجيات من التنقيح.
اعتبر المكتبة أساسًا لحماية برنامجك المضادة للتنقيح، وليست دفاعك الوحيد.
المكتبة:
يفترض نموذج التهديد أن المنقّح (debugger) قد يعترض البرمجيات المحمية بهذا النظام من أي مستوى صلاحيات، وتكون الكشوفات أقل فعالية كلما ارتفع مستوى الصلاحيات.
تم تحصين هذا البرنامج لتجاوز الاعتراض البسيط عند CPL > 0، من خلال:
RAX عبر كشف و/أو الكتابة فوق ردود نداء الأدوات غير الشرعية..text المراقَبة عبر إجراء مقارنة على القرص مقابل في الذاكرة.VEH، SEH، LPTOP_LEVEL_EXCEPTION_FILTER) ونقاط التوقف البرمجية.PAGE_GUARD.TLS callbacks من ارتباط المنقّح، وإجراء فحص لعنوان بداية الخيط.DbgBreakPoint وDbgUiRemoteBreakin، لتحطيم العملية أو العودة.إذا كانت الطريقة الوحيدة لإجراء فحص ما هي استخدام دالة مُصدَّرة غير قابلة للاستدعاء عبر syscall، فإن الدالة المعنية تُهندَس عكسيًا يدويًا وتُعاد بناؤها لتعمل في مساحة عنوان الوحدة النمطية لخيط الحماية. تُستعرض جميع بنى الذاكرة في وضع المستخدم عبر استبطان الذاكرة المباشر بدلًا من استخدام واجهات API.
تترك روتينات الحماية صراحةً بعض مسارات التنفيذ دون حماية ضد خطافات وضع المستخدم، لتكون بمثابة مصائد ذاكرة (memory honeypots). تُستخدم لمقارنة الحالة ولإرباك المهاجمين.
تعمل روتينات الحماية بشكل شبه عشوائي. تُحدَّد العشوائية عبر ASLR المعتمد على العتاد الخالص، وسلوك المكدس، وقليل من الرياضيات؛ دون استدعاء النواة، أو استخدام واجهات API في وضع المستخدم، أو إصدار تعليمات خروج شرطية أو غير شرطية من قِبل الـ hypervisors.
عند كشف انتهاك أمني، تُحطّم منظومة الحماية العملية الحالية عبر استدعاء INT 29h مع STATUS_SXS_EARLY_DEACTIVATION، متجاوزةً جميع معالجات الاستثناءات. في بعض الحالات، تُدرج أيضًا APC في النواة لإنهاء العملية الحالية.
توجد في نقطة الدخول الرئيسية (abdg.c) لهذه المكتبة، مشروحة بالترتيب.
شروحات موجزة؛ قد يُجري كشف معيّن فحوصات إضافية/فرعية أكثر مما هو مشروح هنا.
يمكنك العثور على مزيد من الشيفرة المصدرية لمفاهيم كشف أخرى في مجلد antidebug\archived.