.NET ओफ़्फ़क्यूशन टूल / स्ट्रेटेजी [बंद]


160

मेरे उत्पाद में कई घटक हैं: ASP.NET, Windows प्रपत्र अनुप्रयोग और Windows सेवा। 95% या तो कोड VB.NET में लिखा गया है।

बौद्धिक संपदा कारणों के लिए, मुझे कोड को बाधित करने की आवश्यकता है, और अब तक मैं डॉटफसकेटर के एक संस्करण का उपयोग कर रहा हूं जो अब 5 साल से अधिक पुराना है। मैं सोच रहा हूं कि यह एक नई पीढ़ी के टूल में जाने का समय है। मैं जो खोज रहा हूं वह आवश्यकताओं की एक सूची है जिसे मुझे नए पर्यवेक्षक की तलाश करते समय विचार करना चाहिए।

मुझे पता है कि मुझे अब तक देखना चाहिए:

  • सीरियलाइज़ेशन / डी-सीरियलाइज़ेशन । अपने वर्तमान समाधान में, मैं बसकिसी भी वर्ग डेटा सदस्यों को बाधित नहीं करने केलिए उपकरण को बताता हूंक्योंकि डेटा को लोड करने में सक्षम नहीं होने का दर्द जो पहले क्रमबद्ध था, बस बहुत बड़ा है।
  • बिल्ड प्रक्रिया के साथ एकीकरण
  • ASP.NET के साथ काम करना । अतीत में, मैंने बदलते .dll नामों के कारण इस समस्या को पाया है (आप अक्सर प्रति पृष्ठ एक है) - जो सभी उपकरण अच्छी तरह से नहीं संभालते हैं।

कई डुप्लिकेट: google.com/…
जॉन राश


अपने कोड को obfuscating के लिए वैकल्पिक समाधान के लिए Agile.net .NET Obfuscator देखें । विशेष रूप से इसकी कोड वर्चुअलाइजेशन सुविधा की जाँच करें।
सूटन बर्नार्ड

आर्मडॉट से ज़ेनकोड तक के ऑबफॉक्टर्स की एक अच्छी सूची यहां देखें SO: stackoverflow.com/a/60054/1480104
आर्टेम

जवाबों:


43

1.1 .Net के साथ वापस आना आवश्यक था: डिकम्पाइलिंग कोड आसान था, और आप असेंबली से, IL, C # कोड तक जा सकते थे और इसे बहुत कम प्रयास के साथ फिर से संकलित किया गया था।

अब .Net 3.5 के साथ मैं निश्चित नहीं हूं। एक 3.5 विधानसभा विघटित करने की कोशिश करें; आपको जो मिल रहा है वह संकलन से एक लंबा रास्ता है।

3.5 से अनुकूलन (1.1 से बेहतर) और जिस तरह से गुमनाम प्रकार, प्रतिनिधियों और इतने पर प्रतिबिंब द्वारा नियंत्रित किया जाता है (वे फिर से शुरू करने के लिए एक बुरा सपना हैं)। लैम्ब्डा एक्सप्रेशंस, कंपाइलर 'मैजिक' जैसे लिनक-सिंटैक्स और var, और C # 2 फ़ंक्शंस को जोड़ें yield( जैसे कि नई कक्षाओं में अपठित नाम वाले परिणाम)। आपका विघटित कोड एक लंबा लंबा रास्ता संकलित करता है।

बहुत सारे समय के साथ एक पेशेवर टीम अभी भी इसे फिर से वापस कर सकती है, लेकिन फिर यह किसी भी आचार संहिता के बारे में सही है। वे किस कोड से बाहर निकले हैं, यह अकल्पनीय होगा और बहुत छोटी होने की संभावना है।

मैं आपकी असेंबली को कुंजी-हस्ताक्षरित करने की सलाह दूंगा (मतलब अगर हैकर एक को फिर से इकट्ठा कर सकते हैं, तो उन्हें सभी को फिर से जोड़ना होगा) लेकिन मुझे नहीं लगता कि इसके लिए मूल्य निर्धारण है।


127
पूरी तरह से असहमत हैं। हस्ताक्षर करने से आपत्ति नहीं हो सकती। हस्ताक्षर करना फिर से आपके कोड को हैक करना है। लेकिन अगर आप विचार, एल्गोरिदम, आदि को छुपाना चाहते हैं, तो आपत्ति करना ही एकमात्र तरीका है।
श्रीके

24
मुझे नहीं लगता कि हस्ताक्षर करने से आपत्ति हो सकती है, यह सिर्फ हैक करने के लिए बहुत कठिन बनाता है। Obfuscation आपके विचार को छिपाने में विफल रहता है - अगर वे चाहते हैं कि वे वैसे भी कॉपी कर सकें, और obfuscation भी इसे और अधिक कठिन नहीं बनाएगा। विशेष रूप से एल्गोरिदम के रूप में सभी ऑपरेटर हैं ओफसकेशन का उन पर अधिक प्रभाव नहीं पड़ता है - वे आमतौर पर निकालने के लिए सबसे आसान चीजों में से एक हैं।
कीथ

6
यदि आपकी टीम उस बारे में बहुत सारे संसाधनों के साथ डिस्पोजेबल है, तो आपत्तिजनक हो सकती है, लेकिन यह उचित नहीं है, लेकिन "औसत" डेवलपर के खिलाफ रक्षा करने के लिए बहुत बढ़िया है, जो आपके विधानसभा को खोलने और स्रोत कोड को बचाने के लिए परावर्तक का उपयोग करने के अलावा और कुछ नहीं चाहता है। एक परियोजना के रूप में और समायोजन करना। स्थगन की जगह है और इसे पूरी तरह से खारिज करना गलत रवैया है। यह रक्षा की एक परत है।
रेज़र

5
जब आप विघटित हो जाते हैं, तो स्रोत गड़बड़ स्थिति में होता है लेकिन तार्किक रूप से यह अभी भी उसी रास्तों का अनुसरण करता है। कंपाइलर 'मैजिक' वूडू नहीं है। मुझे पता है क्योंकि मैंने हाल ही में एक भंडार खो दिया था और स्रोत कोड को पुनर्प्राप्त करने के लिए परावर्तक का उपयोग किया था। यदि यह आपके निर्माण की प्रक्रिया का हिस्सा नहीं है, तो ऑब्सफिकेशन केवल "बनाए रखने" के लिए एक दर्द है। यह ओवरहेड जोड़ता है, लेकिन क्या हम सभी कम्प्यूटेशनल रूप से गहन ऐप लिख रहे हैं? नहीं। यह कमजोर हमलावर के लिए रक्षा की एक कमजोर परत है।
रेज़र

8
क्या एक भयानक जवाब है। क्या आपने वास्तव में हाल ही में विघटित करने की कोशिश की है? Decompilers बेहतर हो गया है , बदतर नहीं। परावर्तक मूल-स्रोत गुणवत्ता के पास देता है, निश्चित रूप से टिप्पणी करता है।
ब्लूराजा - डैनी पफ्लुगुफ्ट

50

हमने कई पर्यवेक्षकों की कोशिश की है। उनमें से कोई भी एक बड़े क्लाइंट / सर्वर ऐप पर काम नहीं करता है जो रिमोटिंग का उपयोग करता है। समस्या यह है कि क्लाइंट और सर्वर कुछ dll साझा करते हैं, और हमें ऐसा कोई भी ऑब्ज़र्सेटर नहीं मिला है जो इसे संभाल सके।

हमने DotFuscator Pro, SmartAssembly, XenoCode, Salamander, और कई छोटे समय के ऐप्स आज़माए हैं, जो मुझसे बचते हैं।

सच कहूं, तो मुझे यकीन है कि मोटापा एक बड़ी हैक है।

यहां तक ​​कि समस्याओं को संबोधित करता है पूरी तरह से एक वास्तविक समस्या नहीं है। केवल एक चीज जिसे आपको संरक्षित करने की आवश्यकता है, वह है कनेक्शन स्ट्रिंग्स, सक्रियण कोड, सुरक्षा-संवेदनशील चीजें। यह बकवास है कि एक और कंपनी आपके पूरे कोडबेस को रिवर्स-इंजीनियर करने जा रही है और इससे एक प्रतिस्पर्धी उत्पाद तैयार किया जा सकता है, यह एक पागल प्रबंधक के बुरे सपने से कुछ है, वास्तविकता नहीं।


14
ब्रावो यहूदा! आगे रहने का एकमात्र तरीका नया, बेहतर कोड विकसित करना है, न कि आपके द्वारा पहले से लिखे गए कोड से चिपके रहना। आप निवेश करने का समय, प्रयास और शायद ऐसी चीज़ में भी पैसा लगाते हैं जो अप्रासंगिक है। मानने लायक नहीं है।
डेविड रटटेन

180
यही कारण है कि मुझे यह प्रतिष्ठा प्रणाली पसंद नहीं है, आपके पास 19 वोट हैं और आपने एक असवर प्रदान नहीं किया है। उपयोगकर्ता आपत्ति के बारे में आपकी राय नहीं पूछ रहा है, वह obfucation तकनीकों के बारे में अधिक जानना चाहता है।
backslash17

32
मैंने कई मौजूदा पर्यवेक्षकों का उपयोग करके अपने अनुभवों के बारे में जानकारी प्रदान की। और मेरी राय उस अनुभव से ली गई है।
जुडाह गेब्रियल हिमांगो

6
+1 के लिए "सच कहूँ तो, मैं आश्वस्त हूँ कि ओफिसकेशन एक बड़ी हैक है।" आप इसे इससे बेहतर नहीं लगा सकते थे।
आंद्रेई रोनेया

15
अपने कोड की सुरक्षा के लिए एक बहुत ही मान्य आवश्यकता महंगे विशेष एप्लिकेशन को कंपनियों को बेच रही है जो केवल कुछ उपयोगकर्ताओं के साथ आंतरिक रूप से उनका उपयोग करेंगे। प्रलोभन कोड को आंतरिक रूप से हैक करने और अपने स्वयं के प्रयोजनों के लिए संशोधनों, रखरखाव अनुबंधों से बचने, या यहां तक ​​कि अच्छाई पाने के लिए ट्रायल संस्करणों को हैक करने की अनुमति देने के लिए रिवर्स करने के लिए है।
ब्रैडी मोरित्ज़

44

मैं अब इसमें 'नी डीप' हूं, एक अच्छा समाधान खोजने की कोशिश कर रहा हूं। यहां अब तक के मेरे इंप्रेशन हैं।

Xenocode - मेरे पास Xenocode2005 के लिए एक पुराना लाइसेंस है जो मैं .net 2.0 असेंबलियों को बाधित करने के लिए उपयोग करता था। यह XP पर ठीक काम करता था और एक सभ्य समाधान था। मेरी वर्तमान परियोजना .net 3.5 है और मैं विस्टा पर हूं, समर्थन ने मुझे इसे देने के लिए कहा था लेकिन 2005 का संस्करण विस्टा (क्रैश) पर भी काम नहीं करता है, इसलिए मुझे और अब मुझे एक gobsmacking बिंदु पर 'PostBuild2008' खरीदना होगा $ 1900 का। यह एक अच्छा उपकरण हो सकता है लेकिन मुझे पता नहीं चल रहा है। बहुत महंगा।

Reactor.Net - यह एक अधिक आकर्षक मूल्य बिंदु है और इसने मेरे स्टैंडअलोन निष्पादन योग्य पर ठीक काम किया। लाइसेंसिंग मॉड्यूल भी अच्छा था और इससे मुझे प्रयास करने में आसानी हुई। दुर्भाग्य से, यह एक महत्वपूर्ण विशेषता याद आ रही है और वह ओब्सेक्शन से सामान को बाहर करने की क्षमता है। इससे मुझे आवश्यक परिणाम प्राप्त करना असंभव हो जाता है (कई विधानसभाओं को एक साथ मिलाएं, कुछ को आगे बढ़ाएं, कुछ को नहीं, दूसरों को भ्रमित करें)।

SmartAssembly - मैंने इसके लिए एवल डाउनलोड किया और इसने त्रुटिपूर्ण रूप से काम किया। मैं वह सब कुछ हासिल करने में सक्षम था जो मैं चाहता था और इंटरफ़ेस प्रथम श्रेणी था। मूल्य बिंदु अभी भी थोड़ा सा है।

Dotfuscator Pro - वेबसाइट पर मूल्य नहीं मिल सका। वर्तमान में एक उद्धरण प्राप्त करने के लिए चर्चा में। अशुभ लगता है।

Confuser - एक खुला स्रोत परियोजना जो काफी अच्छी तरह से काम करती है (पीपीएल को भ्रमित करने के लिए, जैसा कि नाम का अर्थ है)।

नोट: ConfuserEx उनके GitHub रेपो पर जारी # 498 के अनुसार कथित तौर पर "टूटा हुआ" है ।


8
क्या आप पोस्ट कर सकते हैं कितना डॉटफसकेटर उद्धृत किया गया है?
एंथनी जॉनसन

6
@Anthony I ने हाल ही में 2011 की शुरुआत में एक लाइसेंस खरीदा था। यह बोली न्यूनतम 1 बिल्ड मशीन + 1 डेवलपर लाइसेंस के लिए $ 2475 USD थी। उन्नयन और समर्थन के 12 महीने शामिल हैं।
योशी

2
जब इस पोस्ट को बनाया गया था, तो मैं .NET रिएक्टर का उपयोग नहीं कर रहा था, लेकिन अब आप System.Reflection.Obfuscation विशेषता का उपयोग करके अपने कोड के कुछ हिस्सों को आक्षेप से बाहर कर सकते हैं। कुछ सेटिंग्स भी हैं जो आपको सभी तरीकों या सभी धारावाहिक प्रकारों को बाहर करने जैसी चीजें करने देती हैं।
बेंटाइट

5
DotFuscator ने मुझे $ 4999 उद्धृत किया, जो 10% छूट के कारण $ 4500 तक कम हो गया था। यह 1 देव लाइसेंस के लिए था! चर्चाओं में इसे घटाकर $ 2500 कर दिया गया लेकिन फिर भी यह बहुत महंगा है।
ओलिवर

3
.NET रिएक्टर में अब एक बहिष्करण नियम संपादक है जो कुछ वर्गों, विधियों या गुणों को बहिष्कार से बाहर करने की अनुमति देता है। इसके अलावा, आप चेकबॉक्स "मर्ज ओनली" का उपयोग कर सकते हैं ताकि आप किसी विशेष
डीएल को ऑबफ्यूजेशन

23

यदि आपकी मुफ्त की तलाश में आप DotObfuscator सामुदायिक संस्करण की कोशिश कर सकते हैं जो विज़ुअल स्टूडियो या Eazfuscator.NET के साथ आता है ।


29 जून 2012 से , Eazfuscator.NET अब वाणिज्यिक है। अंतिम मुफ्त उपलब्ध संस्करण 3.3 है।


18

मैं smartassembly का उपयोग कर रहा हूं। मूल रूप से, आप एक dll चुनते हैं और यह इसे obfuscated लौटाता है। यह ठीक काम करने लगता है और मुझे अब तक कोई समस्या नहीं है। बहुत, उपयोग करने के लिए बहुत आसान है।


6
Smartassembly काफी बेकार है। एक पटाखा आपके आवेदन को DumbAssembly में डालता है और सभी "सुरक्षा" माउस क्लिक के साथ हटा दिया जाता है: woodmann.com/collaborative/tools/index.php/Dumbassembly
Elmue

2
अब तक, Google सुरक्षित ब्राउज़िंग झंडे वुडमैन की साइट को असुरक्षित मानते हैं। इसके अलावा, वुडमैन की साइट में उसके बारे में एक पूरा लेख है जो पहले एक मैलवेयर संक्रमण से पीड़ित था, इसलिए मैं वास्तव में उसकी साइट को नेविगेट नहीं करना चाहता जब Google इस पर भरोसा करता है।
ब्रायन

10

मैंने बाजार पर लगभग हर ऑब्जर्सेटर की कोशिश की है और मेरी राय में स्मार्टअस्पेक्ट सबसे अच्छा है।


6
Smartassembly काफी बेकार है। एक पटाखा आपके आवेदन को DumbAssembly में डालता है और सभी "सुरक्षा" माउस क्लिक के साथ हटा दिया जाता है: woodmann.com/collaborative/tools/index.php/Dumbassembly
Elmue

3
अब तक, Google सुरक्षित ब्राउज़िंग झंडे वुडमैन की साइट को असुरक्षित मानते हैं। इसके अलावा, वुडमैन की साइट में उसके बारे में एक पूरा लेख है जो पहले एक मैलवेयर संक्रमण से पीड़ित था, इसलिए मैं वास्तव में उसकी साइट को नेविगेट नहीं करना चाहता जब Google इस पर भरोसा करता है।
ब्रायन

9

मैं भी SmartAssembly का उपयोग कर रहा हूं। मैंने पाया कि। यह मोनो को सपोर्ट करता है, असेंबलियों को मर्ज करता है और इसमें ट्रायल वर्जन बनाने या किसी विशेष मशीन से लाइसेंस लिंक करने के लिए एक बहुत अच्छा लाइसेंसिंग मॉड्यूल भी है (इसे लागू करना बहुत आसान है)। कीमत भी बहुत प्रतिस्पर्धात्मक है और जब मुझे समर्थन की आवश्यकता होती है तो वे तेजी से कहाँ जाते हैं Eziriz

बस स्पष्ट होने के लिए मैं सिर्फ एक संरक्षक हूं जो उत्पाद को पसंद करता है और कंपनी से संबंधित किसी भी तरह से नहीं।


उत्पादों वेबसाइट पर वहाँ उत्पाद के लिए एक उपयोगी गूगल समूह है नहीं है, हालांकि साथ ही - मैं दोस्तों को जो नेट रिएक्टर कसम की एक संख्या है: groups.google.com/group/net-reactor-users?hl=en
Bittercoder

2
एजिरिज़ के लिए +1। मेरे पास इसके साथ उत्कृष्ट परिणाम हैं। यह सबसे अच्छा है अभी, आईएमओ है।
ड्रूइड

4
.NET रिएक्टर चूसता है। मैंने अपना कंप्यूटर बदल दिया, लाइसेंस फ़ाइल के संबंध में दो बार ईमेल भेजा, और मुझे कोई जवाब नहीं मिला। आप देखें। .NET रिएक्टर लाइसेंस हार्डवेयर लॉक है।
OrElse

2
यह सामान्य है। आप कैसे उम्मीद करते हैं कि वे आप पर विश्वास करें? उन्हें कैसे पता चलेगा कि आपने वास्तव में अपना कंप्यूटर बदल दिया है और अपने कंप्यूटर पर अपने दोस्त का लाइसेंस चलाने की कोशिश नहीं कर रहे हैं? उसके लिए एक हार्डवेयर लॉक है! यदि इसे कई कंप्यूटरों पर इस्तेमाल किया जा सकता है तो एक हार्डवेयर लॉक बेकार हो जाएगा।
एल्म्यू

(PS। हमने इस SO प्रतिक्रिया के आधार पर मोटे तौर पर रिएक्टर को चुना।)
क्रिस

7

संक्षिप्त उत्तर यह है कि आप नहीं कर सकते।

आस-पास विभिन्न उपकरण हैं जो आपके कोड को पढ़ने के लिए किसी के लिए कठिन बना देंगे - जिनमें से कुछ अन्य उत्तरों द्वारा इंगित किए गए हैं।

हालांकि, इन सभी को पढ़ने के लिए कठिन बना दिया जाता है - वे आवश्यक प्रयास की मात्रा बढ़ाते हैं, यही सब है। अक्सर यह आकस्मिक पाठकों को रोकने के लिए पर्याप्त होता है, लेकिन जो कोई आपके कोड में खुदाई करने के लिए निर्धारित होता है, वह हमेशा ऐसा करने में सक्षम होगा।


51
अगर (प्रयासों। असमान> codeFromScratch.Costs) DoNoReverseEngineer ();
निकोलस डोरिएर

41
Operator '>' cannot be applied to operands of type 'System.TimeSpan' and 'decimal'
साब अमीनी

21
@ साब यकीन है कि वे कर सकते हैं, TimeSpan से पैसे (दशमलव) के लिए कास्टिंग क्या सबसे व्यवसायों के बारे में हैं।
हॉल्टकविस्ट

6

हमारे पास एक asp.net और winform इंटरफ़ेस के साथ एक बहु स्तरीय ऐप है जो रिमोटिंग का भी समर्थन करता है। मुझे एन्क्रिप्टिंग प्रकार के अपवाद के साथ किसी भी पर्यवेक्षक का उपयोग करने में कोई समस्या नहीं है जो एक लोडर उत्पन्न करता है जो सभी प्रकार के अप्रत्याशित तरीकों से समस्याग्रस्त हो सकता है और बस मेरी राय में इसके लायक नहीं है। वास्तव में मेरी सलाह "प्लेग की तरह लोडर टाइप ओबफसकेटर से बचने के लिए" की तर्ज पर अधिक होगी। :)

मेरे अनुभव में कोई भी ओफ़्स्पैक्टर .net के किसी भी पहलू के साथ ठीक काम करेगा। इसमें asp.net और remoting शामिल हैं, आपको बस सेटिंग्स के साथ अंतरंग बनना होगा और सीखना होगा कि आप इसे अपने कोड के किन क्षेत्रों में आगे बढ़ा सकते हैं। और जो आपको मिलता है उस पर रिवर्स इंजीनियरिंग का प्रयास करने के लिए समय निकालें और देखें कि यह विभिन्न सेटिंग्स के साथ कैसे काम करता है।

हमने अपने कमर्शियल ऐप में कई सालों का इस्तेमाल किया और 9rays.net से स्पाइसेस ऑब्सफैक्टर पर बस गए क्योंकि कीमत सही है, यह काम करता है और उनके पास अच्छा समर्थन है, हालांकि हमें वास्तव में अब और अधिक ईमानदार होने के लिए समर्थन की आवश्यकता नहीं है मुझे नहीं लगता कि यह वास्तव में मायने रखता है कि आप किस ऑबफसकेटर का उपयोग करते हैं, मुद्दों और सीखने की अवस्था सभी समान हैं यदि आप इसे रीमोटिंग और एस्पेक्ट के साथ ठीक से काम करना चाहते हैं।

जैसा कि दूसरों ने उल्लेख किया है कि आप वास्तव में कर रहे हैं एक पैडलॉक के बराबर है, अन्यथा ईमानदार लोगों को बाहर रखना और या केवल एक ऐप को फिर से शुरू करना कठिन बना देता है।

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

यह वास्तव में बहुत दूर ले जाना आसान है और आपके ग्राहकों और आपके व्यवसाय पर नकारात्मक प्रभाव पड़ता है, जो सरल और उचित है वह करें और फिर इसके बारे में चिंता न करें।


5

पिछले दो दिनों से मैं Dotfuscator Community Edition Advanced के साथ प्रयोग कर रहा हूं (Visual CE के साथ बंडल किए जाने वाले मूल CE को पंजीकृत करने के बाद एक मुफ्त डाउनलोड)।

मुझे लगता है कि एक डिफ़ॉल्ट विकल्प के रूप में अधिक लोग ऑब्सफिकेशन का उपयोग नहीं करते हैं, यह जोखिम की तुलना में एक गंभीर परेशानी है। छोटे परीक्षण परियोजनाओं पर मैं बहुत प्रयास के साथ चल रहे आचार संहिता को प्राप्त कर सकता था। ClickOnce के माध्यम से एक सरल परियोजना को तैनात करना परेशानी भरा था, लेकिन दाना के साथ मैनिफेस्टों को मैन्युअल रूप से हस्ताक्षर करने के बाद प्राप्त करने योग्य था। केवल समस्या यह थी कि त्रुटि पर स्टैक ट्रेस वापस आ गया और CE के पास एक deobfuscator या क्लीफ़ायर पैक नहीं है।

मैंने एक वास्तविक परियोजना को बाधित करने की कोशिश की जो एक्सेल में स्थित वीएसटीओ है, जिसमें वर्चुअल अर्थ इंटीग्रेशन, बहुत से वेब्सवर्क कॉल और एक आईओसी कंटेनर और बहुत सारे प्रतिबिंब हैं। यह असंभव था।

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


5

Crypto Obfuscator आपकी सभी चिंताओं और परिदृश्यों को संबोधित करता है। यह:

  1. नियमों के आधार पर प्रकारों / सदस्यों को स्वचालित रूप से बहिष्करण से बाहर रखता है। धारावाहिक प्रकार / क्षेत्र उनमें से एक हैं।
  2. इसे MSBUild का उपयोग करके निर्माण प्रक्रिया में एकीकृत किया जा सकता है।
  3. ASP.Net परियोजनाओं का समर्थन करता है।

3
fyi @logicnp ने क्रिप्टो लिखा।
सीएडी ने

क्रिप्टो अब समर्थित नहीं प्रतीत होता है।
कार्ल

मैंने कई कोशिश की है, "क्रिप्टो" बहुत आक्रामक और मददगार लग रहा था, लेकिन जब डीएल 4 डी में मैंने ओएलएफ कोड को चलाया, तो मुझे मूल कोड मिला ... पार्टी को बर्बाद करने के लिए खेद है ....
डेव गाहन

4

मैंने हाल ही में कोडप्‍लेक्‍स पर एक और नि: शुल्‍क ओब्‍सुसैकर के आउटपुट को एक और नि: शुल्‍क ऑब्‍सुसेकटर - यानी डॉटफसकेटर सीई और नए बैबल ऑब्‍सुसेकटर में डालने का प्रयास किया है। मेरे ब्लॉग पर अधिक जानकारी

क्रमांकन के लिए, मैंने उस कोड को एक अलग DLL में स्थानांतरित कर दिया है और परियोजना में शामिल किया है। मैंने तर्क दिया कि एक्सएमएल में वैसे भी कोई रहस्य नहीं थे, इसलिए इसे स्थगन की आवश्यकता नहीं थी। यदि उन वर्गों में कोई गंभीर कोड है, तो मुख्य विधानसभा में आंशिक कक्षाओं का उपयोग करके इसे कवर करना चाहिए।


-1, क्योंकि "यो डॉग, मैंने आपको ओफ़्फ़सुकेटर्स की तरह सुना है इसलिए मैंने एक ओफ़्फ़सकेटर के आउटपुट पर एक ओफ़्फ़सुकेटर चलाया ... और जानना चाहते हैं? गिमे पेज हिट्स"। लेकिन मुझे दूसरा पैराग्राफ बहुत अच्छा सुझाव लगता है।
एनीव्स

3

आपको अपने प्लेटफ़ॉर्म के लिए सबसे सस्ती और सबसे अच्छी चीज़ों का उपयोग करना चाहिए और इसे एक दिन कॉल करना चाहिए। उच्च-स्तरीय भाषाओं का अवलोकन एक कठिन समस्या है, क्योंकि VM opcode धाराएं दो सबसे बड़ी समस्याओं से ग्रस्त नहीं होती हैं, जो कि देशी opcode धाराएं करती हैं: फ़ंक्शन / विधि की पहचान और पंजीयन।

आपको बायटेकोड उलटने के बारे में क्या पता होना चाहिए कि यह पहले से ही सुरक्षा परीक्षक के लिए सीधे X86 कोड की समीक्षा करने और इसमें कमजोरियां खोजने के लिए मानक अभ्यास है। कच्चे X86 में, आप आवश्यक रूप से वैध कार्य भी नहीं कर सकते हैं, अकेले एक फंक्शन कॉल के दौरान एक स्थानीय चर को ट्रैक करते हैं। लगभग किसी भी परिस्थिति में देशी कोड रिवर्सलर्स के पास फ़ंक्शन और वैरिएबल नामों तक पहुंच नहीं है --- जब तक वे Microsoft कोड की समीक्षा नहीं कर रहे हैं, जिसके लिए MSFT जनता को वह जानकारी आसानी से प्रदान करता है।

"Dotfuscation" मुख्य रूप से फ़ंक्शन और चर नामों को स्क्रैच करके काम करता है। यह शायद डिबग-स्तरीय जानकारी के साथ प्रकाशित कोड की तुलना में ऐसा करना बेहतर है, जहां रिफ्लेक्टर सचमुच आपके स्रोत कोड को दे रहा है। लेकिन इससे आगे आप जो कुछ भी करते हैं वह कम होने की संभावना है।



3

आप "Dotfuscator Community Edition" का उपयोग कर सकते हैं - यह विज़ुअल स्टूडियो 2008 प्रोफेशनल में डिफ़ॉल्ट रूप से आता है। आप इसके बारे में यहां पढ़ सकते हैं:

http://msdn.microsoft.com/en-us/library/ms227240%28VS.80%29.aspx
http://www.preemptive.com/dotfuscator.html

उत्पाद के "व्यावसायिक" संस्करण में पैसा खर्च होता है लेकिन बेहतर होता है।

क्या आपको वास्तव में अपने कोड की आवश्यकता है? आमतौर पर आपके एप्लिकेशन के विघटित होने के साथ बहुत कम गलत है, जब तक कि इसका उपयोग सुरक्षा उद्देश्यों के लिए नहीं किया जाता है। यदि आप अपने कोड को "चोरी" करने वाले लोगों के बारे में चिंतित हैं, तो मत बनो; आपके कोड को देखने वाले अधिकांश लोग सीखने के उद्देश्यों के लिए होंगे। वैसे भी, .NET के लिए कोई पूरी तरह से प्रभावी ओफिसकेशन रणनीति नहीं है - पर्याप्त कौशल वाला कोई व्यक्ति हमेशा आपके आवेदन को अपघटित / परिवर्तित करने में सक्षम होगा।


इसके लिए +1। मैं बस के बारे में हर मुक्त .NET obfuscator बाहर की कोशिश की है, और Dotfuscator केवल एक है कि वास्तव में मेरे ASP.NET अनुप्रयोगों में MSIL का एक बड़ा अनुपात obfuscated था।
सेल

@ सेल, क्या आपने उसके लिए मुफ्त डॉटफ़सकेटर - सामुदायिक संस्करण का उपयोग किया है? मेरे पास सिर्फ बिक्री चैट थी और वे कहते हैं कि प्रो संस्करण की लागत 2000 EUR है। :(
होउमन

डोटफसकटर बेकार है।
user626528

3

रिएक्टर से बचें। यह पूरी तरह से बेकार है (और हां मैंने लाइसेंस के लिए भुगतान किया है)। ज़ेनकोड सबसे अच्छा था जिसका मैंने सामना किया और इसके लिए लाइसेंस भी खरीदा। समर्थन बहुत अच्छा था, लेकिन मुझे इसकी ज़रूरत नहीं थी क्योंकि यह अभी काम करता है। मैंने अपने द्वारा खोजे जाने वाले प्रत्येक आक्षेपक का परीक्षण किया और मेरा निष्कर्ष यह है कि xenocode सबसे मजबूत और दूर था और सबसे अच्छा काम किया (अपने .NET एक्स को एक देशी निर्वासन में पोस्ट करने की संभावना भी जो मैंने कहीं और नहीं देखी।)।

रिएक्टर और ज़ेनकोड के बीच दो मुख्य अंतर हैं। पहला यह है कि एक्सनकोड वास्तव में काम करता है। दूसरा यह है कि आपकी विधानसभाओं की निष्पादन गति अलग नहीं है। रिएक्टर के साथ यह लगभग 6 मिलियन गुना धीमा था। मुझे यह भी आभास हुआ कि रिएक्टर वन मैन ऑपरेशन था।


.NET रिएक्टर के पास बहुत सारे विकल्प हैं। उनमें से कुछ रनटाइम सुरक्षा को शामिल करते हैं और एप्लिकेशन को थोड़ा धीमा कर देंगे, लेकिन यह अतिरिक्त सुरक्षा के लिए मूल्य है जो आपको मिलता है। हालाँकि मैं गंभीरता से संदेह करता हूं कि क्या कोई धीमे धीमे होगा अगर आप सिर्फ .NET रिएक्टर
ऑब्सफैक्शन का

3

मैंने पाया कि Agile.Net आपके .Net असेंबली के लिए बहुत अच्छी सुरक्षा प्रदान करता है क्योंकि यह न केवल आपत्ति देता है बल्कि एन्क्रिप्शन भी प्रदान करता है। एक मुक्त निशान डाउनलोड करें।
http://secureteam.net/NET-Code-Protection.aspx http://secureteam.net/downloads.aspx


3
Eazfuscator कहा क्यों नहीं MSIL encription: देखने gapotchenko.com/eazfuscator.net/kb/100028
Qmaster

2

मैं .net 1 के बाद से एक ही एप्लिकेशन में कोड को बाधित कर रहा हूं, और यह रखरखाव के दृष्टिकोण से एक प्रमुख सिरदर्द रहा है। जैसा कि आपने उल्लेख किया है, क्रमबद्धता की समस्या से बचा जा सकता है, लेकिन यह वास्तव में एक गलती करना आसान है और कुछ ऐसा करना है जिसे आप नहीं चाहते हैं। बिल्ड को तोड़ना आसान है, या ओफ़्स्क्यूशन पैटर्न को बदलना और पुरानी फ़ाइलों को खोलने में सक्षम नहीं होना है। साथ ही यह पता लगाना मुश्किल हो सकता है कि क्या गलत हुआ और कहां गया।

हमारी पसंद Xenocode थी, और क्या मैं आज फिर से चुनाव करने के लिए था, मैं कोड को बाधित नहीं करना पसंद करूंगा, या Dotfuscator का उपयोग करूंगा।



1

हम अपने विंडोज़ क्लाइंट पर SmartAssembly का उपयोग कर रहे हैं। ठीक काम करता है।

कुछ अतिरिक्त समस्याओं को भी जोड़ता है। लॉग फ़ाइलों / अपवादों में अपने वर्ग के नामों को प्रिंट करना डी-ऑबफसकेट करना होगा। और निश्चित रूप से अपने नाम से एक वर्ग नहीं बना सकते। इसलिए अपने ग्राहक पर एक नज़र रखना और यह देखना अच्छा है कि आप किन समस्याओं को हल कर सकते हैं।



1

मुक्त तरीका दृश्य स्टूडियो के भीतर से dotfuscator का उपयोग करना होगा, अन्यथा आपको बाहर जाना होगा और Postbuild ( http://www.xenocode.com/Landing/Obfuscation.aspx ) की तरह एक ओफ़्फ़सकेटर खरीदना होगा


मुझे यकीन नहीं है कि मैं यहाँ नीचे समझा, क्यों नहीं एक स्पष्टीकरण दे?
रस ब्रैडबेरी

1

मुझे अपने नवीनतम rpoject में एक obfuscation / resource प्रोटेक्शन का उपयोग करना था और Crypto Obfuscator को एक अच्छा और सरल टूल के रूप में उपयोग करना पाया । इस उपकरण में क्रमांकन समस्या केवल सेटिंग का विषय है।


@logicnp, यह इस उत्पाद का समर्थन करने वाले थ्रेड में आपकी दूसरी पोस्ट है। कृपया खुलासा करें कि क्या आपका इस उत्पाद के डेवलपर से कोई संबंध है।
H2ONaCl

क्षमा करें, लेकिन de4dot कि deobfuscate कर सकता है। मैं ConfuserEx का उपयोग करने की सलाह दूंगा
newbieguy

1

एक अच्छा खुला स्रोत संस्करण है जिसे ओबफस्कर कहा जाता है। ठीक काम करने लगता है। प्रकार, गुण, फ़ील्ड, विधियों को बाहर रखा जा सकता है। मूल यहाँ है: https://code.google.com/p/obfuscar/ , लेकिन चूंकि यह अब अपडेट नहीं किया गया है


मुझे आज इस पर एक नज़र थी - मेरी टिप्पणी की तारीख! - और जाने के लिए यह थोड़ा गड़बड़ है। मैंने एक .pfx फ़ाइल का उपयोग करके असेंबली को फिर से साइन करने के लिए इसे प्राप्त करने का प्रयास करते हुए घंटे का सबसे अच्छा हिस्सा खो दिया। इसने एक अनजाने, अघोषित त्रुटि को फेंक दिया; लगता है कि आप केवल .snk का उपयोग करके हस्ताक्षर कर सकते हैं।
स्टीविन्क जूल

0

आप मेटाफ़ोरिक और वीआईएएलबी जैसे नए कोड संरक्षण प्रौद्योगिकियों और बाइटशील्ड जैसी नई सॉफ़्टवेयर कॉपी सुरक्षा तकनीकों को भी देखना चाह सकते हैं । प्रकटीकरण: मैं बाइटशील्ड के लिए काम करता हूं।


0

मैं भी स्मार्टआसपास का इस्तेमाल करता हूं। हालाँकि, मुझे नहीं पता कि यह वेब अनुप्रयोग के लिए कैसे काम करता है। हालांकि, मैं यह बताना चाहूंगा कि यदि आपका ऐप शेयरवेयर सुरक्षा का उपयोग करता है, तो सुनिश्चित करें कि यह बूलियन रिटर्न के साथ लाइसेंस की जांच नहीं करता है। दरार को बाइट करना बहुत आसान है। http://blogs.compdj.com/post/Binary-hack-a-NET-executable.aspx


0

SmartAssembly महान है, मुझे मेरी अधिकांश परियोजनाओं में उपयोग किया गया था


-1

मैंने एज़िरिज़ डेमो संस्करण की कोशिश की .... मुझे यह पसंद आया। लेकिन कभी सॉफ्टवेयर नहीं लाया।


यह समुदाय से विकी उत्तर कैसे हो सकता है?
ツXocΦ epe Пepeúpa '

-1

Obfuscating एक वास्तविक सुरक्षा नहीं है।

अगर आपके पास .NET Exe फाइल है तो FAR बेहतर समाधान है।

मैं थेमिडा का उपयोग करता हूं और यह बता सकता हूं कि यह बहुत अच्छी तरह से काम करता है।

Themida का एकमात्र दोष यह है कि यह .NET Dlls की सुरक्षा नहीं कर सकता है। (यह Exe और DLL में C ++ कोड की सुरक्षा भी करता है)

Themida यहाँ वर्णित पर्यवेक्षकों की तुलना में बहुत सस्ता है और एंटी पायरेसी संरक्षण में सबसे अच्छा है बाजार पर । यह एक आभासी मशीन बनाता है आपके कोड के महत्वपूर्ण हिस्से चलाए गए थे और कई धागे चलाता है जो पटाखे द्वारा निर्धारित हेरफेर या ब्रेकप्वाइंट का पता लगाते हैं। यह .NET Exe को ऐसी चीज़ में परिवर्तित करता है जिसे Reflector अब .NET असेंबली के रूप में भी नहीं पहचानता है।

कृपया उनकी वेबसाइट पर विस्तृत विवरण पढ़ें: http://www.oreans.com/themida_features.php


-2

मैंने रुम्मेज नामक एक उत्पाद की कोशिश की है और यह आपको कुछ नियंत्रण देने में अच्छा काम करता है ... हालांकि इसमें कई चीजों का अभाव है जो एज़िरिज़ प्रदान करता है लेकिन रुमेज के लिए कीमत बहुत अच्छी है ...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.