VM Self Defending
देखें
Obfuscator.io Advanced Defenses: Self-Defending, Debug Protection, Domain Lock
vmSelfDefending विकल्प VM रनटाइम में बहुस्तरीय छेड़छाड़ डिटेक्शन, कोड अखंडता जाँच, एंटी-हुकिंग और एंटी-रिवर्स-इंजीनियरिंग सुरक्षा जोड़ता है। vmDebugProtection के साथ मिलाने पर यह मैनुअल और AI की मदद से किए जाने वाले, दोनों तरह के विश्लेषण को काफ़ी कठिन बना देता है।
यह विकल्प vmBytecodeArrayEncoding को ज़बरन चालू कर देता है और VM निष्पादन पर अतिरिक्त भार डालता है। इसे अपने कोड के बार-बार चलने वाले हिस्सों पर मापें।
हर डिटेक्शन कैसे प्रतिक्रिया करता है - और केवल कोड तोड़ने के बजाय डिटेक्शन की रिपोर्ट अपने बैकएंड को कैसे भेजें - यह VM रक्षा उपायों की टेलीमेट्री और प्रतिक्रियाएँ में बताया गया है; vmSelfDefending अपने डिटेक्शन automation, debugger, tamper और integrity प्रतिक्रिया श्रेणियों में भेजता है।
अनुशंसित: अधिकतम सुरक्षा के लिए इसे vmDebugProtection, vmBytecodeArrayEncodingKey और vmBytecodeArrayEncodingKeyGetter के साथ इस्तेमाल करें।
रनटाइम संगतता
संवेदनशील वातावरण डिटेक्शन
यह विकल्प ऑब्फ़स्केटेड कोड को उसके टारगेट रनटाइम वातावरण से बाँध देता है और ऑटोमेशन टूल्स का पता लगाने के लिए उन्नत ब्राउज़र फ़िंगरप्रिंटिंग का उपयोग करता है। इस विकल्प से सुरक्षित कोड इन वातावरणों में चलाने पर जानबूझकर टूट जाएगा:
- हेडलेस ब्राउज़र (headless Chrome/Chromium, PhantomJS)
- ब्राउज़र ऑटोमेशन टूल्स (Puppeteer, Playwright, Cypress, Selenium/ChromeDriver, Nightmare)
- Node.js (जब
targetकोbrowserपर सेट किया गया हो) - jsdom या इसी तरह के सर्वर-साइड DOM एमुलेशन
- ऐसे वातावरण जहाँ नेटिव ब्राउज़र बिल्ट-इन्स को हुक किया गया हो या बदल दिया गया हो (जब तक कि
browserEnvironment.hookedBuiltinsसे घोषित न किया गया हो)
कोड सामान्य ब्राउज़र्स (Chrome, Firefox, Safari, Edge) में सही ढंग से काम करेगा, जिसमें iframes के अंदर लोड होना, ब्राउज़र एक्सटेंशन्स (content scripts) और Web Workers भी शामिल हैं।
वास्तविक रनटाइम के लिए target चुनें। ब्राउज़र और Node बिल्ड्स में अलग-अलग रक्षा उपाय होते हैं: node टारगेट उन उपायों को छोड़ देता है जो केवल ब्राउज़र वाले API पर निर्भर हैं, और Node में चलाया गया browser बिल्ड ऊपर बताए अनुसार टूट जाता है।
जब browserEnvironment.hookedBuiltins को true (v7.15.0+) पर सेट किया जाता है, तो Self Defending ऐसे रनटाइम को सहन करता है जो वैध रूप से नेटिव बिल्ट-इन्स को JavaScript रैपर्स से बदलता है, और उन्हें छेड़छाड़ मानने के बजाय कोड को वहाँ चलने देता है। यह जानबूझकर बिल्ट-इन हुक डिटेक्शन में ढील देता है; VM वर्चुअलाइज़ेशन, एंटी-डिबगिंग और अखंडता सुरक्षाएँ इससे अप्रभावित रहती हैं। इसी विकल्प का transport फ़ील्ड बिल्ड को उस स्कीम से बाँधता है जिस पर वह सर्व होता है।
Self Defending अपने ही आउटपुट की अखंडता जाँचता है, इसलिए बाद में ऑब्फ़स्केटेड कोड को मिनिफ़ाई, फ़ॉर्मैट या किसी और तरह से दोबारा न लिखें। ऐसे टूल्स ऑब्फ़स्केशन चरण से पहले अपने सोर्स पर चलाएँ।
टेस्टिंग और CI
ये रक्षा उपाय आपके अपने एजेंट्स, ऑटोमेशन और डिबगर्स के विरुद्ध भी काम करते हैं। वे निष्पादन रोक सकते हैं, असंबंधित एरर दे सकते हैं, या गलत नतीजे दे सकते हैं। यह विकल्प स्वचालित विश्लेषण को रोकने के लिए बनाया गया है और किसी भी ऑटोमेशन फ़्रेमवर्क के साथ सुरक्षित रूप से उपयोग नहीं किया जा सकता, इसलिए फ़ंक्शनल टेस्ट vmSelfDefending बंद वाले अलग टेस्टिंग बिल्ड पर चलाएँ। उस बिल्ड के लिए ओवरराइड्स का पूरा सेट टेस्टिंग और CI में दिया गया है।
