.NET अनुप्रयोगों की सुरक्षा - फिर भी, हेरिंग को किस में लपेटना है?
इस समीक्षा के बावजूद। मैंने पर्यवेक्षकों की अपनी समीक्षा लिखने का फैसला किया, क्योंकि मैं उपरोक्त को न केवल सतही मानता हूं, बल्कि भ्रामक भी हूं।
एक सवाल प्रासंगिक है - क्या यह उत्पाद इतनी अच्छी तरह से अवसादन से सुरक्षित है? यह देखते हुए कि पर्यवेक्षकों के निर्माता ईमानदारी से चेतावनी देते हैं - विधानसभा असंतुष्ट रहती है। और यह .Net अनुप्रयोग सुरक्षा समस्या की आधारशिला है। कुल सुरक्षा विभिन्न वातावरणों में असेंबली शुरू करने की असुविधा की ओर ले जाती है, आक्षेप से कोड की सशर्त खुलेपन की ओर जाता है। यह कोड की प्राप्ति, इसकी पठनीयता और सुरक्षा को हटाने की समस्या को हल करने के लिए बनी हुई है।
तो हमारे पास क्या है:
.Net अनुप्रयोगों की सुरक्षा के लिए 2 वर्गों के कार्यक्रम हैं:
- रक्षक (मूल प्रोसेसर आवरण)
इसी तरह की मशीनों को एक ओब्यूफैक्टर के साथ संयोजन में भी वितरित किया जाता है, जो कमजोर है (आमतौर पर विधानसभा सदस्यों का नाम बदलने की पेशकश करता है, अब और नहीं)। रैपर विभिन्न प्रकार के हो सकते हैं, इसे समालैंडर प्रोटेक्टर में सबसे अधिक सुरुचिपूर्ण ढंग से प्रस्तुत किया जाता है (यहाँ ओब्फ़सैक्टर काफी उच्च गुणवत्ता वाला है), ओफ़्फ़सकेटर की कमजोरी के अर्थ में एक अपवाद समन्दर है, लेकिन यहाँ समस्याएं हो सकती हैं, दोनों डिबगिंग के साथ और स्टार्टअप के साथ।
प्रतिनिधि: कोडवील, समन्दर रक्षक, .नेट रिएक्टर।
लाभ: तथाकथित। डिकम्पाइलर और ILDASM के लिए दुर्गमता। लेकिन तथ्य यह है कि यह दुर्गमता स्पष्ट है। .Net मुख्य मेमोरी (मेमोरी में) में स्थित असेंबली के अधिकारों को प्रतिबंधित करता है, असेंबली को शुरू होने से पहले डिस्क पर कहीं संग्रहीत किया जाना चाहिए - और यहां वे उपलब्ध हो जाते हैं।
नुकसान: अधिक कठोर नीतियों के साथ वातावरण में असेंबली शुरू करने के साथ बहुत सारी समस्याएं, अपर्याप्त एंटीवायरस प्रतिक्रिया, इस तथ्य की ओर जाता है कि उपयोगकर्ता इस तरह से संरक्षित उत्पादों से डरने लगता है, एक सुरक्षित असेंबली को डीबग करने में असमर्थता। प्लस - 32-बिट और 64-बिट वातावरण दोनों में काम करने के लिए एक सुरक्षित विधानसभा बनाने में असमर्थता। या तो एक या दूसरे, हालांकि डेवलपर 32-बिट और 64-बिट वातावरण दोनों में काम करने के लिए AnyCPU कॉन्फ़िगरेशन में प्रोग्राम को संकलित कर सकता है। खैर, वास्तव में - स्पष्ट लाभ। ट्रेडर निर्माता आमतौर पर एक ट्रेडर के साथ उनकी रक्षा करने से पहले असेंबली को बाधित करने की सलाह देते हैं, जिससे सुरक्षा की भेद्यता को पहचानते हैं।
- ऑबफस्केटर
वे सुरक्षा विधियों को पेश करते हैं जो कि .Net पर्यावरण के लिए अधिक स्वाभाविक हैं, जिसके बाद असेंबली को लॉन्च और डीबगिंग के लिए अतिरिक्त ऐड-ऑन और shamanism की आवश्यकता नहीं होती है।
एक। स्टैंड-अलोन ऑबफ्यूज़ेटर जो मेटाडेटा तक पहुंचने के लिए एमएस सेवाओं और इंटरफेस का उपयोग नहीं करते हैं और ओफ़्सेलेटेड असेंबलियों को उत्पन्न करने के लिए उपयोग करते हैं, अर्थात्, उनके पास अपने स्वयं के एक्सेस मशीन, पार्सर्स, जनरेटर और अन्य उपकरण हैं।
प्रतिनिधि: Spices.Net Obfuscator, Dotfuscator, {SmartAssembly}
लाभ: सुरक्षा उपकरणों की पसंद में बाहरी सेवाओं से स्वतंत्रता, सुरक्षा के लिए एक विस्तृत श्रृंखला और गैर-मानक दृष्टिकोण।
नुकसान: जिम्मेदार निर्माता ईमानदारी से चेतावनी देते हैं और कोड असंतुष्ट रहता है (यदि ILDASM नहीं है, तो कुछ कारीगर disassembler द्वारा स्रोत कोड SSCLI या मोनो में लिया जा सकता है)।
ख। एमएस सेवाओं पर निर्भर (यहां सूची बड़ी है - ILASM / ILDASM के संचालन से, COM के माध्यम से पहुंच, साथ ही .Net 2.0 से सेवाओं का उपयोग)। ऐसे लोगों की कार्यक्षमता स्पष्ट रूप से सीमित है, क्योंकि सेवाएं ई कुछ गैर-मानक पेंच करने की क्षमता प्रदान करती हैं।
प्रतिनिधि: सलामैंडर ओफ्फुसेटर, स्केटर.नेट, वाइजओवल के डिमॉनर (यह अच्छी गुणवत्ता की, हालांकि अग्रणी में से एक है) लगभग अज्ञात अज्ञात पर्यवेक्षक है।
लाभ: मुझे नहीं पता, लेकिन किसी भी मामले में, सलामैंडर एक अच्छा पर्यवेक्षक प्रदान करता है।
नुकसान: अस्थिरता, सेवाओं पर निर्भरता, और इसलिए धन में सीमित (समन्दर विभिन्न प्लेटफार्मों से विधानसभाओं वाली परियोजनाओं के साथ काम नहीं कर सकता है, उदाहरण के लिए .Net 2.0 और .Net 1.1)। प्लस - पैराग्राफ के समान नुकसान ए)।
डेवलपर्स के लिए सिफारिशें
उनमें से कुछ हैं: विकास की शुरुआत में, याद रखें कि परियोजना को बाधित किया जाएगा। इसका मतलब यह है कि विधानसभा के कुछ सदस्यों की दृश्यता को विनियमित किया जाना चाहिए, जिसका अर्थ है कि इसे बाधित किया जाना चाहिए और यह नहीं होना चाहिए। प्रसूति के लिए मुख्य समस्या प्रतिबिंब / क्रमांकन का उपयोग है। .नेट, फोन करने के तरीकों के लिए संभावनाओं का एक गुच्छा प्रदान करता है, संरचित भंडारण और डेटा पढ़ने के लिए कक्षाओं का उपयोग करते हुए, उन्हें नाम से एक्सेस करता है। पर्यवेक्षक ऐसी चीजों को नहीं पहचान सकता है, इसलिए कोडिंग प्रक्रिया में कुछ नियमों का उपयोग करने के लिए यह आवश्यक है कि ऐसे मामलों को मोटे तौर पर आसानी से बाहर रखा जाए:
- क्रमांकन-प्रतिबिंब में काम करने वाले वर्गों को एक अलग विधानसभा में रखा जाना चाहिए। यह मुश्किल नहीं है, क्योंकि इन वर्गों और उनके सदस्यों के पास वैसे भी सार्वजनिक दृश्यता होनी चाहिए। सदस्यों के पास वैसे भी सार्वजनिक दृश्यता होनी चाहिए।
- वर्गों को घोषित करना मुश्किल नहीं है जो एक विशिष्ट नाम स्थान के तहत घोषित करने के लिए क्रमांकन-प्रतिबिंब में काम करते हैं और इस मामले में उन्हें ओफ़्फ़िकेशन से बाहर करने के लिए, और सभी थोक में।
- यदि कोड में क्रमांकन-प्रतिबिंब का उपयोग करना आवश्यक है, तो विशेष विशेषताओं के साथ ऐसे तरीकों को चिह्नित करना बेहतर है। सुरक्षित दरवाजे को प्लाईवुड के दरवाजे पर न रखें। अपने व्यामोह को मॉडरेट करें। आक्षेप के बाद प्राप्त असेंबली का अध्ययन करना बेहतर है, कक्षाओं और उनके सदस्यों की जांच करें - क्या आपने पूछताछ से सब कुछ छिपाया है, सेटिंग्स को अनुकूलित करें ताकि आपकी ज़रूरत की सभी चीज़ों को अस्पष्ट, छिपी और छिपी हो। ILDASM, एक परावर्तक के साथ इसे खोलने का प्रयास करें, जैसा कि आप इन उत्पादों से देख सकते हैं। ILDASM से डंप करने का प्रयास करें (यदि संभव हो) - उत्पन्न फ़ाइल देखें। यह समझने के लिए आवश्यक है कि कोड को ढालना, या डिकम्पाइलर के साथ कोड का एक टुकड़ा लेने के लिए अपनी विधानसभा से कुछ और बनाना कितना मुश्किल होगा।
अब शेष राशि के बारे में। ठीक है, रिफ्लेक्टर ले लो, Spices.Net ले लो - यहाँ वे एक नियमित पर्यवेक्षक द्वारा संरक्षित हैं, न कि एक रक्षक और जैसा कि पिछले ब्राउज़र ने लिखा है - सब कुछ आसानी से winDbg में दिखाई देता है। क्या बात है? किसी ने कुछ परावर्तक रहस्य सीखे (और प्रो संस्करण अभी मुक्त नहीं है), क्या किसी ने Spices.Net रहस्य सीखा? लेकिन ये एप्लिकेशन शुद्ध आईएल में देशी प्रोसेसर कोड (समन्दर के विपरीत) के बिना लिखे गए हैं।
- मैं ओफ़्फ़्यूसैटर्स के परीक्षण के बारे में कुछ बातें भी कहना चाहता हूं - यदि आपने एक निश्चित उत्पाद की कोशिश की, जिसके बाद आपको टूटी हुई असेंबली मिली, तो यह उत्पाद के निर्माता से संपर्क करने के लिए समझ में आता है, सबसे पहले, यह निर्माता के लिए ऐसी समस्याओं को हल करने के लिए रोटी है, और दूसरी बात, छूट प्राप्त करने का एक वास्तविक मौका है (यदि निर्माता ग्राहकों के बारे में सोचता है), अगर सभी उत्पाद मुफ्त हैं - तो सहयोग हमेशा भुगतान किया जाता है। निर्माता को आपकी समस्या को हल करने का मौका दें, यह पारस्परिक रूप से फायदेमंद है।
अब - तुलना
मैं तुरंत कह सकता हूं कि मेज पर पर्यवेक्षकों के कई प्रतिनिधियों को शामिल नहीं किया गया था, बस अपना समय बर्बाद करने के लिए नहीं। हां, और Dotfuscator को इस सूची में शामिल किया गया है क्योंकि यह केवल एक Microsoft-प्रचारित उत्पाद है, हालांकि यह सभी का दावा नहीं हो सकता है। कंपनी द्वारा $ 1M - (IMHO, सौदा इसके लायक नहीं था) के बाद रेड-गेट की खरीद के बाद स्मार्ट असेंबली के भविष्य को भी स्पष्ट नहीं कहा जा सकता है। अब प्रतिक्षेपक को शायद ही कभी अपडेट किया जाता है (जो प्लग-इन के व्यापक सेट को छोड़कर अच्छा है), जिसे स्मार्टआसचिव के साथ देखा जा सकता है। SQL में शामिल एक कंपनी obfuscators-decompilers के बाजार में क्यों आएगी (हालांकि Obfuscator-Decompiler पैकेज एक उत्पादक दृष्टिकोण है, यह समन्दर में है, यह Spices.Net में है) - मुझे इसकी कल्पना नहीं है, बाजार काफी विशिष्ट है और कई आशाजनक परियोजनाएं इस पर पहले ही मर चुकी हैं। उदाहरण के लिए, Decompiler.Net (यहां तक कि सलामेंडर के कंपित पदों के लिए, उदाहरण के लिए, उन्होंने वी-स्पॉट एलिमिनेशन तकनीक जारी नहीं की थी, हालांकि इस समीक्षा में लेखक लिखते हैं कि उन्हें इस पर गर्व है (केवल सवाल यह है कि उन्होंने क्या जारी किया है, या उन्होंने इसे जारी नहीं किया है) उन्होंने कुछ लागू किया और पेटेंट आवेदन 9Rays.Net, वास्तव में) द्वारा किया गया था।
तो:
अवसरों | Dotfuscator | Spices.Net Obfuscator | सलामैंडर ऑबफसकटर | {} SmartAssembly |
---|---|---|---|---|
परीक्षण संस्करण में | दरअसल कम्युनिटी एडिशन c न्यूनतर सेट। | एक पूर्ण दृश्य देता है, कार्यक्षमता में सीमित नहीं है (यह केवल एक विशेष वॉटरमार्क के साथ obfuscated असेंबलियों को चिह्नित करता है - "Spices.bfuscator द्वारा Obfuscated। व्यावसायिक उपयोग के लिए नहीं") और एक पूर्ण सेट में आता है - GUI, VS एकीकरण, MSBuild एकीकरण, कंसोल और SDK।
गैर-लाभकारी कार्यक्रमों की सुरक्षा के लिए मुफ्त में इस्तेमाल किया जा सकता है। | सीमाएं - कंसोल संस्करण प्रदान किया गया है। | क्रियात्मक सीमाएँ। |
इंटरफ़ेस, स्वचालन, एकीकरण | इंटरफ़ेस बहुत नहीं है। संक्षेप में - बदसूरत (अच्छी तरह से, यहाँ vsyu और रंग के लिए ...)।
कंसोल संस्करण मौजूद है। नियमों को लागू करने की संभावना है, बल्कि भ्रमित करने वाली है। नियम लागू करना, बल्कि भ्रमित करना। कोई स्वचालन नहीं है। MSBuild में एकीकरण, ऐड-इन के रूप में वीएस के साथ एकीकरण, जो वर्तमान परियोजना की निर्माण-प्रक्रिया में एकीकृत नहीं करता है। | यह GUI संस्करण में Spices.Net और कंसोल में भाग के रूप में दिया गया है। GUI संस्करण असेंबलियों की खोज के लिए कई अतिरिक्त उपकरण प्रदान करता है।
स्वचालन है - एक उदाहरण C # में प्रदान किया गया है कि कैसे Spices.Net Obfuscator का उपयोग करके अपने स्वयं के ओबफसेंटर को लिखा जाए। इसके अलावा, ObfuscationEvents (वीएस बिल्ड इवेंट्स के समान) समर्थित हैं, जिससे आप ओफ़्स्क्यूशन प्रक्रिया के चरणों के बीच कस्टम क्रियाएं सम्मिलित कर सकते हैं। MSBuild और VS में एकीकरण मौजूद है - आप सीधे प्रॉजेक्ट गुणों में ऑबफेकेशन विकल्प कॉन्फ़िगर कर सकते हैं, किसी भी सॉल्यूशन प्रोजेक्ट को सक्षम / अक्षम कर सकते हैं, और आम तौर पर ऑबफैक्शन बंद कर सकते हैं। | एक जीयूआई में आता है।
एक सांत्वना है। कोई स्वचालन नहीं है। कोई एकीकरण नहीं है। | अच्छा जादूगर-शैली सरल इंटरफ़ेस।
सांत्वना मौजूद है। कोई स्वचालन नहीं है। कोई एकीकरण भी नहीं है। |
छेड़छाड़ प्रतिरोध | स्निच मॉड्यूल एंटरप्राइज को दिया जाता है और कॉर्पोरेट चोरी को रोकने के लिए डिज़ाइन किया गया है। साधारण सॉफ्टवेयर के लिए, इस कार्यक्रम के लिए इंटरनेट तक पहुंच को अक्षम करना या केवल सुरक्षा को हटा देना पर्याप्त है क्योंकि यह काफी आसान है। | वहाँ है हैक किया गया, नाम बदला गया, या छेड़छाड़ की गई असेंबली काम करना बंद कर देती है। ILASM / ILDASM राउंडट्रिप और असेंबली का सरल नाम बदलने (यानी पहचान बदलने - दोनों के खिलाफ संरक्षण - इसमें विधानसभा का मजबूत नाम और साथ ही संस्करण संख्या के मामले में इसका नाम और पूरा नाम दोनों शामिल हैं)।
और यहां क्या दिलचस्प है: इस तकनीक की शुरुआत के बाद, Spices.Net के हैक किए गए संस्करण अब नहीं मिल सकते हैं, और समन्दर और स्मार्टआसान (ओह हाँ, नियंत्रण प्रवाह की पेशकश!) - कृपया वेयरज़ पर झूठ बोलें। | नहीं। | नहीं। |
स्ट्रिंग एन्क्रिप्शन | वहाँ है | वहाँ है इसके अतिरिक्त - संसाधन सुरक्षा (एन्क्रिप्शन और संपीड़न के बिना, लेकिन काम करता है
छेड़छाड़ प्रतिरोधी) | वहाँ है | वहाँ है इसके अतिरिक्त - संसाधनों का संपीड़न और एन्क्रिप्शन। |
एंटीइलडास्म, एंटी-डीकॉम्पिलेशन | एंटीइलडास्म है, विघटन का कोई प्रतिकार नहीं है। | AntiILDASM है, विघटन का विरोध है (परावर्तक नहीं लेता है, लेकिन समन्दर डिस्मोपर आंशिक रूप से आंशिक रूप से कर सकता है। स्वचालित रूप से Spices.Net Decompiler के खिलाफ सुरक्षा करता है)। | AntILDASM है, स्वचालित रूप से सैलामैंडर Decompiler के खिलाफ की रक्षा करता है। | एंटिलस्म है |
अप्रयुक्त कोड और घोषणाओं को हटाना (छंटाई) | कर सकते हैं | शायद लचीले ढंग से | कर सकते हैं | हो सकता है कि। |
सॉफ्टवेयर वॉटरमार्किंग | कर सकते हैं | कर सकते हैं (विरोधी नकली संरक्षण के साथ - वह है, TamperProof प्रौद्योगिकी का उपयोग किया जाता है) | नहीं | नहीं |
नियंत्रण प्रवाह अवरोध | डिकम्पाइलर्स द्वारा आंशिक रूप से पहचाने जाने योग्य हैं। | इसके बजाय, कोडनामाइज़र तकनीक को डिकंपाइलर्स से निपटने के एक अधिक प्रभावी साधन के रूप में प्रस्तावित किया गया है। | हां, लेकिन डिकंपाइलर्स द्वारा पहचानने योग्य।
उल्लेखित वी-स्पॉट एलिमिनेशन - एक अवास्तविक तकनीक जो स्पाइस.नेट कोडअनॉनमाइज़र में लागू होती है | हां, लेकिन डिकंपाइलर्स द्वारा पहचानने योग्य |
मिश्रित-कोड असेंबली के साथ काम करें | बहुत अच्छा नहीं, कोई आकार अनुकूलन नहीं | शायद आकार अनुकूलन के साथ | हां, लेकिन यह अस्थिर है | शायद सीमित (त्रुटि रिपोर्टिंग समान कोड में नहीं डाली गई है) |
64-बिट समर्थन | वहाँ है | वहाँ है | नहीं | नहीं |
Deobfuscation स्टैकट्रेस | एंटरप्राइज़ मानचित्र के आधार पर, एंटरप्राइज़ में सामुदायिक संस्करण में नहीं, लेकिन बहुत सुविधाजनक नहीं है | एक उपकरण है Spices.Net और एक अधिक विस्तृत मुफ्त समाधान प्रदान करता है। | नहीं | एक कार्यान्वित त्रुटि रिपोर्टिंग मॉड्यूल है। अनूठी विशेषता। |
लाभ | वीएस के साथ हर डिलीवरी में आता है। प्रत्येक नए संस्करण के लिए - अन्य obfuscators के विपरीत .Net बहुत पहले निकलता है - एक अंदरूनी सूत्र। | सुरक्षात्मक उपकरणों का बड़ा चयन। दो तकनीकें जो अन्य पर्यवेक्षक पेश नहीं करते हैं। अपने स्वयं के सभ्य डिकंपाइलर होने से आपको यह समझने की अनुमति मिलती है कि पर्यवेक्षक जानता है कि क्या संरक्षित करने की आवश्यकता है। यह कि पर्यवेक्षक जानता है कि क्या संरक्षित करने की आवश्यकता है।
प्लसस में, मैं रूसी में परिचालन सहायता और समस्याओं को हल करने में रचनात्मक नाम भी दे सकता हूं। | सबसे पुराना प्रतिनिधि, सुरक्षा का एक अच्छा गुण। | सरल, छोटे डेवलपर्स की बुनियादी जरूरतों को पूरा करता है और उनके लिए कैद है, लेकिन इस वजह से, लघुता अनम्य है, हालांकि इसमें सुरक्षात्मक उपकरणों का एक अच्छा शस्त्रागार है। |
कमियों | अनुचित रूप से महंगा। सुविधाओं और कारीगरी की सूची कीमत से मेल नहीं खाती है।
समर्थन मुक्त नहीं है। | सेटिंग्स और टूल की बहुतायत कभी-कभी बंद हो जाती है। पेशेवर उपयोग के लिए पैनापन, छोटे डेवलपर्स की जरूरतों के लिए नहीं। हालांकि सिर्फ उनके लिए
सब कुछ कंसोल संस्करण में है। | सेटिंग्स की सुस्पष्टता, पुराना होना। .Net 2.0 की रिलीज़ के साथ, लोगों ने पहले से ही इस परियोजना को छोड़ दिया, लेकिन फिर Obfuscator + रक्षक के संयोजन के साथ छोड़ दिया। विभिन्न .Net संस्करणों की परियोजनाओं के साथ काम नहीं कर सकता। हाल के संस्करणों पर .Net अस्थिर है।
समर्थन पर संपर्क करना मुश्किल और लंबा है। | इस अच्छे उत्पाद का भविष्य अस्पष्ट है। एकीकरण की कमी, छेड़छाड़-प्रतिरोध प्रदर्शन को नीचा दिखाता है। लेकिन पहली चीज जो वे पेश कर सकते थे, वह एक रिफ्लेक्टर से सुरक्षा थी। यह एक बहुत शक्तिशाली विशेषता होगी।
बहुत अनुकूल समर्थन हुआ करता था, अब मुझे पता नहीं है। |
कीमतों के बारे में
विशेष रूप से कीमतों की तुलना नहीं की। Dotfuskator की कीमतें अधिक हैं और समर्थन की कीमतें ऐसी हैं कि वे बाधा के रूप में काम करते हैं, जाहिर है, वे बड़े कॉर्पोरेट व्यवसाय पर ध्यान केंद्रित करते हैं। बाकी निर्माताओं के लिए, मैं कह सकता हूं कि सिद्धांत के लिए जगह है "कीमत वह है जो विक्रेता और खरीदार दोनों के लिए उपयुक्त है।" यह बातचीत करने के लिए लंबे समय से अभ्यास किया जाता है कि, उदाहरण के लिए, भारतीयों को पूर्णता में महारत हासिल है और इस बात की चिंता नहीं है कि 150 रुपये में 400 डॉलर का उत्पाद कैसे खरीदा जाए। छात्रों के लिए अघोषित छूट (शैक्षणिक छूट), सभी प्रकार के एमवीपी और एमसीपी के लिए, उपयोगकर्ता समूहों और समुदायों के सदस्यों के लिए, गैर-लाभकारी संगठनों, क्षेत्रीय और राष्ट्रीय के लिए, एक ब्लॉग पर उल्लेख करने और थोड़े समय के लिए किसी उत्पाद के लोगो को पोस्ट करने के लिए है। बेशक, निर्माता साइट पर इसके बारे में नहीं लिखता है। अंत में, आप एक समस्या फ़ाइल प्रदान कर सकते हैं या इसके विपरीत - एक सुरक्षा छेद की रिपोर्ट कर सकते हैं, निर्माता के साथ कोई भी सहयोग जिसके कारण उत्पाद की गुणवत्ता में सुधार की सराहना की जाएगी।
छूट के लिए पूछने की कोशिश करें, लेकिन आप इसे पा लेंगे। अ छा!
PS एक अनुभवी और अच्छे व्यक्ति को निमंत्रण देने की इच्छा है जो इस लेख के निर्माण में सक्रिय रूप से भाग लेता है - कृपया मुझसे संपर्क करें।