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

Browser Environment

Browser Environment

Pro
v7.9.0+

أعلِن عن كيفية تقديم نسخة الإنتاج حتى يتمكن الكود المحمي من ربط سلامته بها.

شاهد

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

شاهد على YouTube

يعلن خيار browserEnvironment حقائق عن البيئة التي تُقدَّم فيها نسخة الإنتاج، بحيث يمكن للكود المحمي أن يربط نفسه بها أو يتفاعل معها. إنه كائن صغير، ويسري مفعول كل حقل منه مع حماية محددة واحدة - أما بمفرده فلا يفعل الخيار شيئًا:

JavaScript

transport

المخطط الذي يقدّم عبره موقع الإنتاج لديك الحزمة - 'http' أو 'https'. يسري مفعوله مع vmSelfDefending.

مع 'https'، فإن نسخة يقدّمها من يقوم بالهندسة العكسية عبر HTTP عادي لن تعمل بشكل صحيح. أما 'http' أو ترك الحقل غير مضبوط فلا يضيف تلك الحماية.

النسخة التي تُعلِن transport: 'https' تعمل بشكل صحيح فقط حيث تُقدَّم فعليًا عبر https:. وأي مخطط آخر يفسدها، لذا لا تُعلِن ذلك إلا عندما يكون كل سياق يُحمِّل نسخة الإنتاج لديك عبر HTTPS. ويُستثنى من ذلك:

  • http:// العادي، بما في ذلك http://localhost أثناء التطوير؛
  • file:// - Electron وCordova وغيرها من التطبيقات المحزومة؛
  • عمليات التضمين blob: وabout: - حزمة تعمل داخل إطار about:blank أو srcdoc.

إعادة التوجيه من HTTP إلى HTTPS من جهة العميل تعرض صفحة HTTP أولًا، لذا يجب ألا تعمل الحزمة قبل اكتمال إعادة التوجيه.

hosting

المكان الذي تُقدَّم منه حزمة الإنتاج - 'remote' أو 'local'. يسري مفعوله مع vmDebugProtection، وعلى الهدفين browser وbrowser-no-eval فقط. يتطلب إصدار المشوِّش 7.14.1 أو أحدث.

مع 'remote'، تُعامَل النسخة المقدَّمة من مضيف تطوير محلي على أنها عدم تطابق في بيئة التشغيل، وتتفاعل دفاعات الأتمتة وفق ما هو مضبوط في vmDefenseReaction (راجع قياسات دفاع VM وردود أفعاله). أما 'local' أو ترك الحقل غير مضبوط فلا يضيف تلك الحماية.

النسخة التي تُعلِن hosting: 'remote' تعمل بشكل صحيح فقط عند تحميلها من مضيف بعيد. الحزمة المفتوحة من خادم تطوير محلي تُعامَل على أنها عدم تطابق عن قصد، لذا لا تُعلِن ذلك إلا عندما يكون كل سياق يُحمِّل نسخة الإنتاج لديك مُقدَّمًا عن بُعد، وأبقِه بعيدًا عن النسخ التي تستخدمها للتطوير المحلي والاختبار وCI.

hookedBuiltins

اضبطه على true لتعلن أن بيئة التشغيل التي يعمل فيها بناء الإنتاج لديك تستبدل دوال المتصفح الأصلية المدمجة بأغلفة JavaScript بشكل مشروع - آلية مكافحة العبث الخاصة بالتطبيق نفسه، أو الصفحة المضيفة، أو إضافات المتصفح الأخرى التي تشارك مجال التنفيذ (realm) نفسه. يسري مع vmSelfDefending. يتطلب إصدار المشوِّش 7.15.0 أو أحدث.

عادةً يعامل Self Defending أي دالة أصلية مدمجة مُستبدَلة على أنها عبث ويمنع البناء من العمل. مع hookedBuiltins: true يتسامح مع مثل هذه البيئة ويستمر الكود المحمي في العمل. أما false أو الحقل غير المضبوط فيحافظ على السلوك الصارم.

JavaScript

يخفف hookedBuiltins عمدًا من كشف اعتراض الدوال المدمجة: بمجرد ضبطه، لن يُوقَف أيضًا من يغلّف تلك الدوال المدمجة نفسها ليفحص كودك. ولا يتأثر التحويل إلى الآلة الافتراضية ولا مكافحة التنقيح ولا حماية السلامة. فعّله فقط عندما يكون معروفًا أن بيئة التشغيل في الإنتاج لديك تعترض الدوال المدمجة (hook) وأن هذا الضمان الأضعف مقبول.

الأهداف المدعومة

ينطبق browserEnvironment فقط على الأهداف browser وbrowser-no-eval وservice-worker. ولا تأثير له مع node وuserscript وbytenode. وhosting أضيق نطاقًا: يُقبل مع service worker لكنه لا يربط شيئًا هناك.

في لوحة التحكم، توجد عناصر التحكم Transport وHosting وHooked Builtins ضمن قسم الدفاعات المتقدمة. ولا يصبح أي منها قابلًا للتحرير إلا بعد تفعيل الحماية المقترنة به - VM Self Defending لعنصرَي Transport وHooked Builtins، وVM Debug Protection لعنصر Hosting - ودعم الهدف له.

المتطلبات

  • يسري transport وhookedBuiltins مع vmSelfDefending، وhosting مع vmDebugProtection؛ ولا تأثير لأيٍّ منها بخلاف ذلك.
  • هدف browser أو browser-no-eval أو service-worker (ويقتصر الحقل hosting على browser أو browser-no-eval).
  • إصدار المشوِّش 7.9.0 أو أحدث للحقل transport، و7.14.1 أو أحدث للحقل hosting، و7.15.0 أو أحدث للحقل hookedBuiltins.

مثال

JavaScript