
एमुलेशन-आधारित VM एक्सप्लोरर, हैंडलर प्रोफाइलर, और डीवर्चुअलाइज़ेशन के लिए प्रायोगिक LLVM रीकंपाइलर के साथ VMProtect 2-संरक्षित बाइनरीज़ को अनपैक और डीऑबफस्केट करें।
यह रिपॉज़िटरी VMProtect 2-संरक्षित बाइनरी के साथ काम करने के लिए विरासती (legacy) टूलों का संग्रह है।
ये टूल VMProtect 2 से संरक्षित सॉफ़्टवेयर को अनपैक करने, विश्लेषण करने और प्रयोगात्मक डीवर्चुअलाइज़ेशन (devirtualization) को सक्षम बनाते हैं। इस संग्रह के मूल में vmprofiler है, एक उपयोगिता लाइब्रेरी जो अन्य सभी टूलों द्वारा उपयोग किया जाने वाला आधारभूत लॉजिक प्रदान करती है। यह VM हैंडलर, हैंडलर टेबल, ट्रांसफ़ॉर्म और अधिक जैसे प्रमुख VMProtect 2 घटकों की पहचान करने के लिए ज़िम्मेदार है।
इस 4+ वर्ष पुराने प्रोजेक्ट से सीखे गए पाठ उन लोगों तक पहुँचाए जाने चाहिए जो डीवर्चुअलाइज़ेशन में रुचि रखते हैं।
यह प्रोजेक्ट व्यक्तिगत VM हैंडलर की पहचान करने का प्रयास करता है। यह दृष्टिकोण भंगुर है, स्केल नहीं होता, और वर्चुअल मशीन आर्किटेक्चर में परिवर्तनों (कई हैंडलरों को आपस में जोड़ना, जटिल हैंडलर, आदि) से पराजित किया जा सकता है। इसके बजाय, मैं न्यूनतम VM-विशिष्ट डीऑबफस्केशन लॉजिक के साथ एक वृद्धिशील लिफ्टिंग और कंट्रोल-फ़्लो पुनर्प्राप्ति रणनीति की वकालत करता हूँ। Saturn, Colton द्वारा Dna, Triton, और Mergen जैसे टूलों ने बहुत कम या बिना किसी VM-विशिष्ट हैंडलर पहचान के VMProtect को सफलतापूर्वक डीऑबफस्केट किया है। यह रिपॉज़िटरी VMProtect 2 की आर्किटेक्चर का दस्तावेजीकरण करती है और एक सावधानी के रूप में कार्य करती है: ऐसे डीवर्चुअलाइज़ेशन टूलिंग बनाने से बचें जो वर्चुअल-मशीन-विशिष्ट हैंडलर की पहचान पर भारी निर्भर हों।
VMProtect डीवर्चुअलाइज़ेशन के लिए एक अर्ध-सामान्य (semi-generic) दृष्टिकोण के लिए एक मज़बूत फ्रेमवर्क की आवश्यकता होती है जो लोड/स्टोर प्रचार, सेक्शन कॉन्स्टेंट प्रचार, DCE, और कुछ अन्य सरल अनुकूलन का समर्थन करता है। कई लोग LLVM का उपयोग करके नेटिव में वापस कंपाइल करने का प्रयास करते हैं; हालाँकि, मेरा मानना है कि यह दृष्टिकोण हमेशा कम-वांछनीय आउटपुट देगा। हमारे पास अपना स्वयं का फ्रेमवर्क, blare2 है, जो स्वच्छ 1:1 लिफ्ट और लोअरिंग क्षमताएँ प्रदान करता है जिनका हम अपने डीऑबफस्केशन उद्देश्यों के लिए उपयोग करते हैं। यदि आप डीऑबफस्केशन के लिए परामर्श सेवाओं में रुचि रखते हैं, तो हम यह प्रदान कर सकते हैं, बशर्ते हमारे पास इसे देने के लिए समय-सारणी उपलब्ध हो।
vmemu
एक Unicorn Engine-आधारित वर्चुअल मशीन अन्वेषण टूल।
यह आपको निर्दिष्ट vmenter के भीतर संरक्षित प्रोग्रामों को अनपैक करने और कंट्रोल फ़्लो का विश्लेषण करने की अनुमति देता है।
यह टूल दिए गए VM एंट्री के कंट्रोल फ़्लो ग्राफ़ वाली एक .vmp2 फ़ाइल उत्पन्न करता है।
परिणामी .vmp2 फ़ाइल को फिर vmdevirt को पास किया जा सकता है ताकि फ़ंक्शन को वापस नेटिव x86 में रीकंपाइल किया जा सके और मूल बाइनरी में पुनः एकीकृत किया जा सके। कृपया ध्यान दें कि यह केवल एक साधारण ट्रेसर नहीं है जो किसी फ़ंक्शन के माध्यम से केवल एक ही पथ खोजेगा; यह वास्तव में वर्चुअल jcc की पहचान करता है और सभी वर्चुअलाइज़्ड कंट्रोल फ़्लो का अन्वेषण करेगा।
vmdevirt
.vmp2 फ़ाइलों के लिए एक प्रयोगात्मक LLVM-आधारित रीकंपाइलर।
यद्यपि यह कार्यात्मक है, इसे अत्यधिक प्रयोगात्मक और अस्थिर माना जाता है, और यह दृष्टिकोण आम तौर पर अनुशंसित नहीं है।
vmassembler
उपयोगकर्ता-परिभाषित वर्चुअल मशीन संचालनों को एन्कोड करने के लिए एक प्रयोगात्मक असेंबलर।
यह प्रोजेक्ट VMProtect 2 वर्चुअल मशीन आर्किटेक्चर की गहन तकनीकी समझ प्रदर्शित करता है।
vmhook
रनटाइम पर VMProtect 2 वर्चुअल मशीन में हुक लगाने के लिए डिज़ाइन किया गया एक टूल, जो व्यक्तिगत VM हैंडलरों की विस्तृत आंतरिक जाँच (introspection) को सक्षम बनाता है।
कृपया इस पृष्ठ के निर्देशों का पालन करें।
vmhook के लिए Visual Studios 2022vmassembler, vmemu, vmprofiler और vmprofiler-cli के लिए कॉन्फ़िगरेशन:
cmake -B build
cmake --build build
vmdevirt के साथ (LLVM डाउनलोड और बिल्ड करेगा!):
cmake -B build -DBUILD_VMDEVIRT=ON -DLLVM_BUILD_TYPE=Release
cmake --build build
vmprofiler-qt के साथ:
cmake -B build -DBUILD_VMPROFILER_QT=ON
cmake --build build
दोनों वैकल्पिक मॉड्यूल:
cmake -B build -DBUILD_VMDEVIRT=ON -DBUILD_VMPROFILER_QT=ON -DLLVM_BUILD_TYPE=Release
cmake --build build
ये टूल केवल शैक्षिक और अनुसंधान उद्देश्यों के लिए प्रदान किए गए हैं। इनका उपयोग किसी भी अवैध गतिविधियों, अनधिकृत पहुँच, या DMCA या अन्य कानूनों के उल्लंघन के लिए नहीं किया जाना चाहिए। टूल स्वयं किसी भी DMCA विनियमन का उल्लंघन नहीं करते हैं। सभी कार्य मेरी मौलिक रचना हैं, और इन टूलों के उपयोगकर्ताओं द्वारा की गई कोई भी कार्रवाई पूरी तरह से उन उपयोगकर्ताओं की ज़िम्मेदारी है और लेखक के कार्यों या इरादों को प्रतिबिंबित नहीं करती है।
vmprofiler
मुख्य उपयोगिता लाइब्रेरी जो अन्य सभी टूलों को शक्ति प्रदान करती है।
इसमें VM हैंडलर पैटर्न मिलान, हैंडलर टेबल निष्कर्षण, डेड कोड एलिमिनेशन (DCE), और अन्य आवश्यक विश्लेषण रूटीन शामिल हैं।
vmprofiler-cli
vmprofiler के लिए एक कमांड-लाइन इंटरफ़ेस, जो उपयोगकर्ताओं को निकाली गई जानकारी को टेक्स्टुअल प्रारूप में प्रदर्शित और निरीक्षण करने की अनुमति देता है।
vmprofiler-qt
VMProtect 2 बाइटकोड के लिए एक Qt-आधारित ग्राफ़िकल डिसअसेंबलर, जो वर्चुअलाइज़्ड कोड का एक इंटरैक्टिव और दृश्य अन्वेषण प्रदान करता है।