التوثيق
/
تشويش VM
/

VM Debug Protection

VM Debug Protection

Pro

شاهد

Obfuscator.io Advanced Defenses: Self-Defending, Debug Protection, Domain Lock

شاهد على YouTube

يضيف الخيار vmDebugProtection إجراءات مضادة للتنقيح إلى بيئة تشغيل الآلة الافتراضية، مما يجعل الهندسة العكسية لكودك المحمي أصعب بكثير. وتحدد الفئات debugger وautomation وsandbox في vmDefenseReaction طريقة تفاعل كل عملية كشف.

عند ضبط browserEnvironment.hosting على 'remote' (v7.14.1+)، تربط Debug Protection البناء أيضًا بتقديمه من مضيف بعيد: فالنسخة المقدَّمة من مضيف تطوير محلي تُعامَل على أنها عدم تطابق في بيئة التشغيل، فتستجيب دفاعات الأتمتة.

تعمل هذه الدفاعات أيضًا ضد وكلائك وأدوات الأتمتة والمنقِّحات الخاصة بك. فقد توقف التنفيذ، أو ترمي أخطاء لا علاقة لها بالسبب، أو تُنتج نتائج غير صحيحة. استخدم بناءً منفصلًا للاختبارات الوظيفية؛ وتعرض صفحة الاختبار وCI الخيارات التي يتجاوزها ذلك البناء.

كشف أداة الفحص

بدءًا من الإصدار 8.0.0 من المشوِّش، يقبل vmDebugProtection كائنًا إلى جانب القيمة المنطقية. وتمرير كائن يُبقي Debug Protection مفعّلة مع تخفيف كاشف واحد فقط:

JavaScript

يكشف inspectorDetection (مفعَّل افتراضيًا) أداة فحص متصلة عبر Chrome DevTools Protocol أو مُنقِّحًا نشطًا، ويستجيب لها. فتح أدوات المطوّر في المتصفح يُنشئ جلسة من هذا النوع، لذا تُكشف أداة الفحص المفتوحة ويُستجاب لها. أبقِه مفعّلًا في الإنتاج، ولا تعطّله إلا إذا كان مستخدموك يفتحون أدوات المطوّر لأسباب مشروعة. في لوحة التحكم، هذا هو المفتاح الفرعي Inspector Detection ضمن VM Debug Protection (v8.0.0+)، ويظهر بمجرد تفعيل Debug Protection.

أُطر الأتمتة. عندما يكون inspectorDetection مفعّلًا (وهو الافتراضي)، يُكشف التحكم في الصفحة المحمية بأداة قائمة على CDP (مثل Puppeteer وPlaywright وSelenium/ChromeDriver) على أنه أداة فحص متصلة. لا يعطّل vmDebugProtection: { inspectorDetection: false } سوى كاشف أداة الفحص وحده؛ إذ يظل كاشف الأتمتة في Debug Protection قادرًا على الاستجابة لمتصفح خاضع للتحكم. ولبناءات الاختبارات الآلية، اتبع الاختبار وCI، الذي يعطّل vmDebugProtection وvmSelfDefending.

سياسة أمان المحتوى

إذا كانت سياسة أمان المحتوى (CSP) لديك تمنع التقييم الديناميكي (دون unsafe-eval)، فاستخدم الهدف browser-no-eval وتحقق من الناتج في ظل تلك السياسة. يستخدم هذا الهدف بديلًا للفحوص التي تعتمد عادةً على التقييم الديناميكي. وينطبق الأمر نفسه على إضافات المتصفح ذات سياسة CSP المقيِّدة: استخدم browser-no-eval لأفضل توافق.