
अपने कॉपी-विरोधी DRM मैलवेयर बनाएं
यह रिपॉजिटरी एक तकनीक का उपयोग करती है जो किसी प्रोग्राम की Import Address Table (IAT) को संशोधित करती है, आयातित फ़ंक्शन नामों को उनके संबंधित ऑर्डिनल्स से प्रतिस्थापित करती है, जिसके परिणामस्वरूप एक बाइनरी बनती है जो केवल ऑर्डिनल्स के माध्यम से फ़ंक्शन आयात करती है।
यह तकनीक विभिन्न प्रणालियों पर ऑर्डिनल मानों में अंतर के कारण सैंडबॉक्स सिस्टम द्वारा बाइनरी के सफलतापूर्वक विश्लेषण किए जाने की संभावनाओं को कम कर देती है। यह विरोधाभास Windows Loader को या तो सही फ़ंक्शन पता लगाने में विफल कर देता है या गलत फ़ंक्शन प्राप्त करवा देता है, जिससे सैंडबॉक्स वातावरण में बाइनरी टूट जाती है। अंत में, यह तकनीक बाइनरी को रिवर्स इंजीनियर करना अधिक चुनौतीपूर्ण बना देती है।
इस रिपॉजिटरी में दो प्रोजेक्ट शामिल हैं:
डिस्क से एक PE फ़ाइल पढ़ता है और उसके नाम-आयातित फ़ंक्शनों को उनके ऑर्डिनल मानों के साथ अधिलेखित कर देता है। उत्पन्न प्रोग्राम केवल उस सिस्टम पर चलेगा जहाँ आयातित फ़ंक्शनों के ऑर्डिनल मान उस सिस्टम के समान हों जिसने इसे उत्पन्न किया है।
TechTestBuilder.exe प्रोग्राम का उपयोग करके mimikatzDRM.exe उत्पन्न करना, जो mimikatz.exe है लेकिन इसमें ऑर्डिनल-आयातित फ़ंक्शन हैं।

mimikatzDRM.exe को इसे उत्पन्न करने वाले सिस्टम से भिन्न सिस्टम पर चलाने पर निम्नलिखित त्रुटि उत्पन्न होगी।

यह प्रोजेक्ट पहली बार निष्पादित होने पर स्वयं DRM तकनीक का उपयोग करता है। इसका मतलब है कि इस बाइनरी को अन्य मशीनों पर आसानी से निष्पादित नहीं किया जा सकता है। OrdinalDRMBin.exe निम्नलिखित चरणों को लागू करता है:
जाँचता है कि क्या स्थानीय प्रोग्राम में कोई नाम-आयातित फ़ंक्शन है, यदि नहीं, तो यह IAT पैच लागू करना छोड़ देगा।
स्वयं को डिस्क से पढ़ता है, और सभी नाम-आयातित फ़ंक्शनों को ऑर्डिनल-आयातित में परिवर्तित करता है।
स्वयं को डिस्क से हटा देता है।
नई इमेज लिखता है जहाँ सभी फ़ंक्शन ऑर्डिनल द्वारा आयात किए जाते हैं।
OrdinalDRMBin.exe को निष्पादित किए बिना दिखाती है। ध्यान दें कि फ़ंक्शन नाम से आयात किए गए हैं।

OrdinalDRMBin.exe को निष्पादित करने के बाद दिखाती है। ध्यान दें कि फ़ंक्शन अब अपने ऑर्डिनल्स द्वारा आयात किए गए हैं।

जैसा कि उल्लेख किया गया है, जिन सिस्टमों में उत्पन्न इम्प्लीमेंटेशन के सभी आयातित फ़ंक्शनों के लिए सटीक ऑर्डिनल मान होते हैं, वे सुरक्षित बाइनरी को चलाने में सक्षम होंगे। हालाँकि, ऐसा होने की संभावना को विभिन्न DLLs से फ़ंक्शन आयात करके कम किया जा सकता है। इस उद्देश्य के लिए IAT Camouflage मॉड्यूल में उपयोग की गई वही विधि अपनाई जा सकती है।