Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
donut — x86, x64, या AMD64+x86 पोजीशन-इंडिपेंडेंट शेलकोड उत्पन्न करता है जो .NET असेंब्लियों, PE फ़ाइलों, और अन्य Windows पेलोड्स को मेमोरी से लोड करता है और उन्हें पैरामीटर के साथ चलाता है। | Kitploit
उपकरण/GitHubGitHub/thewover/donut
मेमोरी फोरेंसिकपेलोड जनरेशनशोषणआईडीएस/आईपीएस से बचनाशेलकोडपोस्ट-शोषणपेनिट्रेशन टेस्टिंगरेड टीमिंगशेलकोड जनरेशनपेलोड डेवलपमेंटआईडीएस/आईपीएस से बचना में शीर्ष #7
4.7k753151 साल पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
पेलोड डेवलपमेंट में शीर्ष #1
पेलोड जनरेशन में शीर्ष #2
शेलकोड में शीर्ष #1
शेलकोड जनरेशन में शीर्ष #2
GitHubthewover/donut

donut

x86, x64, या AMD64+x86 पोजीशन-इंडिपेंडेंट शेलकोड उत्पन्न करता है जो .NET असेंब्लियों, PE फ़ाइलों, और अन्य Windows पेलोड्स को मेमोरी से लोड करता है और उन्हें पैरामीटर के साथ चलाता है।

रिपॉजिटरी देखें

Issues Contributors Stars Forks License Chat Github All Releases Twitter URL

Alt text

वर्तमान संस्करण: v1.1

विषय सूची

  1. परिचय
  2. यह कैसे काम करता है
  3. निर्माण
  4. उपयोग
  5. उप-परियोजनाएँ
  6. Donut के साथ विकास
  7. प्रश्न और चर्चा
  8. अस्वीकरण

1. परिचय

Donut एक स्थिति-स्वतंत्र कोड है जो VBScript, JScript, EXE, DLL फ़ाइलों और dotNET असेंबलीज़ का इन-मेमोरी निष्पादन सक्षम बनाता है। Donut द्वारा बनाया गया मॉड्यूल या तो HTTP सर्वर से स्टेज किया जा सकता है या लोडर के अंदर ही एम्बेड किया जा सकता है। मॉड्यूल वैकल्पिक रूप से Chaskey ब्लॉक सिफर और 128-बिट यादृच्छिक रूप से उत्पन्न कुंजी का उपयोग करके एन्क्रिप्ट किया जाता है। फ़ाइल को मेमोरी में लोड और निष्पादित करने के बाद, मूल संदर्भ को मिटा दिया जाता है ताकि मेमोरी स्कैनर को धोखा दिया जा सके। जनरेटर और लोडर निम्नलिखित सुविधाओं का समर्थन करते हैं:

  • aPLib और LZNT1, Xpress, Xpress Huffman (RtlCompressBuffer के माध्यम से) के साथ इनपुट फ़ाइलों का संपीड़न।
  • API हैश और स्ट्रिंग्स के निर्माण के लिए एन्ट्रॉपी का उपयोग।
  • फ़ाइलों का 128-बिट सममित एन्क्रिप्शन।
  • देशी PE हेडर को अधिलेखित करना।
  • देशी PE को MEM_IMAGE मेमोरी में संग्रहीत करना।
  • एंटीमैलवेयर स्कैन इंटरफ़ेस (AMSI) और विंडोज लॉकडाउन पॉलिसी (WLDP) को पैच करना।
  • विंडोज के लिए इवेंट ट्रेसिंग (ETW) को पैच करना।
  • EXE फ़ाइलों के लिए कमांड लाइन को पैच करना।
  • होस्ट प्रक्रिया की समाप्ति से बचने के लिए एग्ज़िट-संबंधित API को पैच करना।
  • एकाधिक आउटपुट प्रारूप: C, Ruby, Python, PowerShell, Base64, C#, हेक्साडेसिमल, और UUID स्ट्रिंग।

लिनक्स और विंडोज दोनों के लिए डायनामिक और स्टैटिक लाइब्रेरीज़ उपलब्ध हैं जिन्हें आप अपनी परियोजनाओं में एकीकृत कर सकते हैं। एक पायथन मॉड्यूल भी है जिसके बारे में आप पायथन एक्सटेंशन के निर्माण और उपयोग में अधिक पढ़ सकते हैं।

2. यह कैसे काम करता है

Donut में प्रत्येक समर्थित फ़ाइल प्रकार के लिए अलग-अलग लोडर होते हैं। dotNET EXE/DLL असेंबली के लिए, Donut कॉमन लैंग्वेज रनटाइम (CLR) को लोड करने के लिए अनमैनेज्ड CLR होस्टिंग API का उपयोग करता है। एक बार CLR होस्ट प्रक्रिया में लोड हो जाने के बाद, एक नया एप्लीकेशन डोमेन बनाया जाता है ताकि डिस्पोज़ेबल AppDomains में असेंबली को चलाया जा सके। जब AppDomain तैयार हो जाता है, तो dotNET असेंबली को AppDomain.Load_3 विधि के माध्यम से लोड किया जाता है। अंत में, EXE के लिए एंट्री पॉइंट या DLL के लिए उपयोगकर्ता द्वारा निर्दिष्ट सार्वजनिक विधि को किसी भी अतिरिक्त पैरामीटर के साथ आमंत्रित किया जाता है। अनमैनेज्ड CLR होस्टिंग API के दस्तावेज़ीकरण के लिए MSDN देखें। CLR होस्ट के एक स्टैंडअलोन उदाहरण के लिए, यहाँ कोड देखें।

VBScript और JScript फ़ाइलों को IActiveScript इंटरफ़ेस का उपयोग करके निष्पादित किया जाता है। विंडोज स्क्रिप्ट होस्ट (wscript/cscript) द्वारा प्रदान की गई कुछ विधियों के लिए न्यूनतम समर्थन भी है। एक स्टैंडअलोन उदाहरण के लिए, यहाँ कोड देखें। अधिक विस्तृत विवरण के लिए, पढ़ें: जावास्क्रिप्ट, VBScript, JScript और XSL का इन-मेमोरी निष्पादन

अनमैनेज्ड या देशी EXE/DLL फ़ाइलों को विलंबित आयात, TLS और कमांड लाइन को पैच करने के समर्थन के साथ एक कस्टम PE लोडर का उपयोग करके निष्पादित किया जाता है। केवल वे फ़ाइलें समर्थित हैं जिनमें रिलोकेशन जानकारी होती है। अधिक जानकारी के लिए DLL का इन-मेमोरी निष्पादन पढ़ें।

लोडर मेमोरी में निष्पादित दुर्भावनापूर्ण फ़ाइलों का पता लगाने से बचने में मदद करने के लिए AMSI और WLDP को अक्षम कर सकता है। अधिक जानकारी के लिए, रेड टीम्स .NET डायनामिक कोड के लिए AMSI और WLDP को कैसे बायपास करती हैं पढ़ें। यह aPLib या RtlDecompressBuffer API का उपयोग करके मेमोरी में फ़ाइलों के डीकंप्रेसन का भी समर्थन करता है। अधिक जानकारी के लिए डेटा संपीड़न पढ़ें।

v1.0 के अनुसार, ETW को भी बायपास किया गया है। AMSI/WLDP की तरह, यह एक मॉड्यूलर सिस्टम है जो आपको डिफ़ॉल्ट बायपास को अपने स्वयं के साथ बदलने की अनुमति देता है। डिफ़ॉल्ट बायपास XPN के शोध से लिया गया है। अधिक जानकारी के लिए अपने .NET को छिपाना - ETW पढ़ें।

डिफ़ॉल्ट रूप से, लोडर अनमैनेज्ड PE के PE हेडर को अधिलेखित कर देगा (आधार पते से `IMAGE_OPTIONAL_HEADER.SizeOfHeaders` तक)। यदि कोई डिकॉय मॉड्यूल (मॉड्यूल ओवरलोडिंग) का उपयोग नहीं किया जाता है, तो PE हेडर शून्य कर दिए जाएंगे। यदि डिकॉय मॉड्यूल का उपयोग किया जाता है, तो डिकॉय मॉड्यूल के PE हेडर का उपयोग पेलोड मॉड्यूल के हेडर को अधिलेखित करने के लिए किया जाएगा। यह मेमोरी में मॉड्यूल के PE हेडर की तुलना डिस्क पर उनकी फ़ाइल बैकिंग से करके पता लगाने को रोकने के लिए है। उपयोगकर्ता अनुरोध कर सकता है कि सभी PE हेडर अपनी मूल स्थिति में संरक्षित रहें। यह उन परिदृश्यों के लिए सहायक है जहाँ पेलोड मॉड्यूल को अपने PE हेडर तक पहुँचने की आवश्यकता होती है, जैसे कि एम्बेडेड PE संसाधनों को देखते समय।

जनरेटर का उपयोग करके विस्तृत वॉकथ्रू और Donut ट्रेडक्राफ्ट को कैसे प्रभावित करता है, इसके लिए Donut - .NET असेंबली को शेलकोड के रूप में इंजेक्ट करना पढ़ें। लोडर के बारे में अधिक जानकारी के लिए, मेमोरी से .NET असेंबली लोड करना पढ़ें।

जो लोग आंतरिक कार्यप्रणाली के बारे में अधिक जानना चाहते हैं, वे डेवलपर नोट्स देखें।

3. निर्माण

बिल्ड दो प्रकार के होते हैं। यदि आप Donut को डीबग करना चाहते हैं, तो कृपया यहाँ दस्तावेज़ीकरण देखें। यदि नहीं, तो रिलीज़ बिल्ड के लिए पढ़ना जारी रखें।

क्लोन करें

विंडोज कमांड प्रॉम्प्ट या लिनक्स टर्मिनल से, रिपॉजिटरी को क्लोन करें।

root@kitploit:~
 
  git clone http://github.com/thewover/donut.git

अगला कदम आपके ऑपरेटिंग सिस्टम और आपके द्वारा उपयोग किए जाने वाले कंपाइलर पर निर्भर करता है। वर्तमान में, Donut के लिए जनरेटर और लोडर टेम्पलेट को Microsoft Visual Studio 2019 और MingGW-64 दोनों के साथ सफलतापूर्वक संकलित किया जा सकता है। अपने स्वयं के C/C++ प्रोजेक्ट में लाइब्रेरीज़ का उपयोग करने के लिए, कृपया यहाँ दिए गए उदाहरण देखें।

Windows

लोडर टेम्पलेट, डायनामिक लाइब्रेरी donut.dll, स्टैटिक लाइब्रेरी donut.lib और जनरेटर donut.exe उत्पन्न करने के लिए। x64 Microsoft Visual Studio डेवलपर कमांड प्रॉम्प्ट प्रारंभ करें, उस निर्देशिका में बदलें जहाँ आपने Donut रिपॉजिटरी को क्लोन किया है और निम्नलिखित दर्ज करें:

root@kitploit:~
  nmake -f Makefile.msvc

वही करने के लिए, विंडोज या लिनक्स पर MinGW-64 का उपयोग करके, उस निर्देशिका में बदलें जहाँ आपने Donut रिपॉजिटरी को क्लोन किया है और निम्नलिखित दर्ज करें:

root@kitploit:~
  make -f Makefile.mingw

Linux

डायनामिक लाइब्रेरी donut.so, स्टैटिक लाइब्रेरी donut.a और जनरेटर donut उत्पन्न करने के लिए। उस निर्देशिका में बदलें जहाँ आपने Donut रिपॉजिटरी को क्लोन किया है और बस make टाइप करें।

पायथन मॉड्यूल

Donut को पायथन मॉड्यूल के रूप में स्थापित और उपयोग किया जा सकता है। स्रोत से स्थापित करने के लिए Python3 के लिए pip की आवश्यकता होती है। पहले, सुनिश्चित करें कि donut-shellcode के पुराने संस्करण स्थापित नहीं हैं, इसके लिए लिनक्स टर्मिनल या Microsoft Visual Studio कमांड प्रॉम्प्ट पर निम्नलिखित कमांड जारी करें।

root@kitploit:~
  pip3 uninstall donut-shellcode

पुराने संस्करणों की अनुपस्थिति की पुष्टि करने के बाद, निम्नलिखित कमांड जारी करें।

root@kitploit:~
  pip3 install .

आप Donut को PyPi रिपॉजिटरी से प्राप्त करके पायथन मॉड्यूल के रूप में भी स्थापित कर सकते हैं।

root@kitploit:~
  pip3 install donut-shellcode

अधिक जानकारी के लिए, कृपया पायथन एक्सटेंशन के निर्माण और उपयोग देखें।

Docker

डॉकर कंटेनर का निर्माण।

root@kitploit:~
  docker build -t donut .

Donut चलाना।

root@kitploit:~
  docker run -it --rm -v "${PWD}:/workdir" donut -h

सहायक उपकरण

Donut में कई अन्य निष्पादन योग्य शामिल हैं जिन्हें अलग से बनाया जा सकता है। इनमें "hash.exe", "encrypt.exe", "inject.exe", और "inject_local.exe" शामिल हैं। पहले दो का उपयोग शेलकोड निर्माण में किया जाता है। अंतिम दो Donut शेलकोड के परीक्षण में सहायता के लिए प्रदान किए गए हैं। "inject.exe" एक रॉ बाइनरी फ़ाइल (loader.bin) को उसके PID या प्रक्रिया नाम द्वारा किसी प्रक्रिया में इंजेक्ट करेगा। "inject_local.exe" एक रॉ बाइनरी फ़ाइल को अपनी प्रक्रिया में इंजेक्ट करेगा।

इन सहायक निष्पादन योग्य फ़ाइलों को अलग से बनाने के लिए आप MSVC मेकफ़ाइल का उपयोग कर सकते हैं। उदाहरण के लिए, अपने Donut शेलकोड का परीक्षण करने के लिए "inject_local.exe" बनाने के लिए, आप चला सकते हैं।

root@kitploit:~
  nmake inject_local -f Makefile.msvc

रिलीज़

Donut के प्रत्येक रिलीज़ संस्करण के लिए टैग प्रदान किए गए हैं जिनमें संकलित निष्पादन योग्य फ़ाइलें हैं।

  • v0.9.3, TBD
  • v0.9.2, Bear Claw
  • v0.9.1, Apple Fritter
  • v0.9.0, प्रारंभिक रिलीज़

वर्तमान में, दो अन्य जनरेटर उपलब्ध हैं।

  • n1xbyte द्वारा C# जनरेटर
  • awgh द्वारा Go जनरेटर

4. उपयोग

निम्न तालिका जनरेटर के कमांड लाइन संस्करण द्वारा समर्थित स्विच को सूचीबद्ध करती है।

पेलोड आवश्यकताएँ

Donut द्वारा आपके पेलोड को सफलतापूर्वक लोड करने के लिए कुछ विशिष्ट आवश्यकताएँ हैं।

.NET असेंबली

  • एंट्री पॉइंट विधि को केवल स्ट्रिंग्स को तर्क के रूप में लेना चाहिए, या कोई तर्क नहीं लेना चाहिए।
  • एंट्री पॉइंट विधि को सार्वजनिक और स्टैटिक के रूप में चिह्नित किया जाना चाहिए।
  • एंट्री पॉइंट विधि वाले वर्ग को सार्वजनिक के रूप में चिह्नित किया जाना चाहिए।
  • असेंबली मिश्रित असेंबली (प्रबंधित और देशी कोड दोनों) नहीं होनी चाहिए।
  • इस प्रकार, असेंबली में कोई अनमैनेज्ड एक्सपोर्ट नहीं होना चाहिए।

देशी EXE/DLL

  • Cygwin के साथ निर्मित बाइनरी समर्थित नहीं हैं।

Cygwin निष्पादन योग्य फ़ाइलें आरंभीकरण रूटीन का उपयोग करती हैं जो होस्ट प्रक्रिया के डिस्क से चलने की अपेक्षा करती हैं। यदि मेमोरी से निष्पादित किया जाता है, तो होस्ट प्रक्रिया संभवतः क्रैश हो जाएगी।

अनमैनेज्ड DLL

  • एक उपयोगकर्ता-निर्दिष्ट एंट्री पॉइंट विधि को केवल एक स्ट्रिंग को तर्क के रूप में लेना चाहिए, या कोई तर्क नहीं लेना चाहिए। हमने एक उदाहरण प्रदान किया है।

5. उप-परियोजनाएँ

Donut के साथ चार सहयोगी परियोजनाएँ प्रदान की गई हैं:

6. Donut के साथ विकास

आप अधिक प्रकार के पेलोड के लिए समर्थन जोड़ना चाह सकते हैं, हमारी सुविधा सेट बदल सकते हैं, या Donut को अपने मौजूदा टूलिंग में एकीकृत कर सकते हैं। हमने डेवलपर दस्तावेज़ीकरण प्रदान किया है। अतिरिक्त सुविधाएँ पाठक के लिए अभ्यास के रूप में छोड़ दी गई हैं। हमारे सुझाव:

  • पर्यावरणीय कीइंग जोड़ें।
  • हर बार शेलकोड उत्पन्न होने पर लोडर को अस्पष्ट करके Donut को पॉलीमॉर्फिक बनाएं।
  • Donut को अपने पसंदीदा RAT/C2 फ्रेमवर्क में एक मॉड्यूल के रूप में एकीकृत करें।

7. प्रश्न और चर्चा

यदि आपके पास Donut के बारे में कोई प्रश्न या टिप्पणी है। BloodHound Gang Slack में #Donut चैनल से जुड़ें।

8. अस्वीकरण

हम इस सॉफ़्टवेयर या तकनीक के किसी भी दुरुपयोग के लिए जिम्मेदार नहीं हैं। Donut को CLR इंजेक्शन और शेलकोड के माध्यम से इन-मेमोरी लोडिंग के प्रदर्शन के रूप में प्रदान किया जाता है ताकि रेड टीम के सदस्यों को विरोधियों का अनुकरण करने और डिफेंडरों को एनालिटिक्स और शमन बनाने के लिए संदर्भ का एक फ्रेम प्रदान किया जा सके। इससे अनिवार्य रूप से मैलवेयर लेखकों और खतरे वाले कलाकारों द्वारा इसके दुरुपयोग का जोखिम रहता है। हालाँकि, हमारा मानना है कि शुद्ध लाभ जोखिम से अधिक है। उम्मीद है कि यह सही है। यदि EDR या AV उत्पाद हस्ताक्षर या व्यवहार पैटर्न के माध्यम से Donut का पता लगाने में सक्षम हैं, तो हम हस्ताक्षर या पता लगाने के तरीकों का मुकाबला करने के लिए Donut को अपडेट नहीं करेंगे। नाराज होने से बचने के लिए, कृपया पूछें नहीं।

टूल डाउनलोड करें
स्विचतर्कविवरण
-aarchलोडर के लिए लक्ष्य आर्किटेक्चर : 1=x86, 2=amd64, 3=x86+amd64 (डिफ़ॉल्ट)।
-blevelAMSI/WLDP को बायपास करने का व्यवहार : 1=कोई नहीं, 2=विफलता पर रोकें, 3=विफलता पर जारी रखें (डिफ़ॉल्ट)।
-kheadersPE हेडर को संरक्षित करें। 1=अधिलेखित करें (डिफ़ॉल्ट), 2=सभी रखें
-jdecoyमॉड्यूल ओवरलोडिंग के लिए डिकॉय मॉड्यूल का वैकल्पिक पथ।
-cclassवैकल्पिक वर्ग का नाम। (.NET DLL के लिए आवश्यक) नेमस्पेस भी शामिल हो सकता है: जैसे namespace.class
-dname.NET के लिए बनाने के लिए AppDomain का नाम। यदि एन्ट्रॉपी सक्षम है, तो यादृच्छिक रूप से उत्पन्न किया जाएगा।
-elevelएन्ट्रॉपी स्तर। 1=कोई नहीं, 2=यादृच्छिक नाम उत्पन्न करें, 3=यादृच्छिक नाम उत्पन्न करें + सममित एन्क्रिप्शन का उपयोग करें (डिफ़ॉल्ट)
-fformatफ़ाइल में सहेजे गए लोडर का आउटपुट प्रारूप। 1=बाइनरी (डिफ़ॉल्ट), 2=Base64, 3=C, 4=Ruby, 5=Python, 6=PowerShell, 7=C#, 8=हेक्साडेसिमल
-mnameDLL के लिए वैकल्पिक विधि या फ़ंक्शन। (.NET DLL के लिए विधि आवश्यक है)
-nnameHTTP स्टेजिंग के लिए मॉड्यूल का नाम। यदि एन्ट्रॉपी सक्षम है, तो यादृच्छिक रूप से उत्पन्न किया जाता है।
-opathनिर्दिष्ट करता है कि Donut लोडर को कहाँ सहेजे। वर्तमान निर्देशिका में डिफ़ॉल्ट "loader.bin" है।
-pparametersDLL विधि/फ़ंक्शन या EXE के लिए उद्धरणों के अंदर वैकल्पिक पैरामीटर/कमांड लाइन।
-rversionCLR रनटाइम संस्करण। डिफ़ॉल्ट रूप से MetaHeader का उपयोग किया जाता है या यदि कोई उपलब्ध नहीं है तो v4.0.30319।
-sserverHTTP सर्वर का URL जो एक Donut मॉड्यूल होस्ट करेगा। क्रेडेंशियल्स निम्नलिखित प्रारूप में प्रदान किए जा सकते हैं:
root@kitploit:~
https://username:[email protected]/
-tएक अनमैनेज्ड/नेटिव EXE के एंट्रीपॉइंट को एक थ्रेड के रूप में चलाएं और थ्रेड के समाप्त होने की प्रतीक्षा करें।
-wकमांड लाइन UNICODE प्रारूप में अनमैनेज्ड DLL फ़ंक्शन को पास की जाती है। (डिफ़ॉल्ट ANSI है)
-xoptionनिर्धारित करता है कि लोडर को कैसे बाहर निकलना चाहिए। 1=थ्रेड से बाहर निकलें (डिफ़ॉल्ट), 2=प्रक्रिया से बाहर निकलें, 3=बाहर न निकलें या साफ़ न करें और अनिश्चित काल तक अवरुद्ध रहें
-yaddrलोडर के लिए एक नया थ्रेड बनाता है और होस्ट प्रक्रिया के निष्पादन योग्य के सापेक्ष एक ऑफसेट पते पर निष्पादन जारी रखता है। प्रदान किया गया मान ऑफसेट है। यह विकल्प उन लोडरों का समर्थन करता है जो donut के निष्पादन को पूरा करने के बाद होस्ट प्रक्रिया के निष्पादन को फिर से शुरू करना चाहते हैं।
-zengineइनपुट फ़ाइल को पैक/संपीड़ित करें। 1=कोई नहीं, 2=aPLib, 3=LZNT1, 4=Xpress, 5=Xpress Huffman। वर्तमान में, अंतिम तीन केवल विंडोज पर समर्थित हैं।
उपकरणविवरण
DemoCreateProcessपरीक्षण में उपयोग करने के लिए एक नमूना .NET असेंबली। दो कमांड-लाइन पैरामीटर लेता है, प्रत्येक निष्पादित करने के लिए एक प्रोग्राम निर्दिष्ट करता है।
DonutTestDonut के परीक्षण में उपयोग करने के लिए एक सरल C# शेलकोड इंजेक्टर। शेलकोड को base64 एन्कोडेड होना चाहिए और एक स्ट्रिंग के रूप में कॉपी किया जाना चाहिए।
ModuleMonitorएक प्रूफ-ऑफ-कॉन्सेप्ट टूल जो CLR इंजेक्शन का पता लगाता है जैसा कि Donut और Cobalt Strike के execute-assembly जैसे टूल द्वारा किया जाता है।
ProcessManagerएक प्रक्रिया खोज उपकरण जिसका उपयोग आक्रामक ऑपरेटर यह निर्धारित करने के लिए कर सकते हैं कि किसमें इंजेक्ट किया जाए और रक्षात्मक ऑपरेटर यह निर्धारित करने के लिए कर सकते हैं कि क्या चल रहा है, उन प्रक्रियाओं में क्या गुण हैं, और उनमें CLR लोड है या नहीं।