.NET कोड को रिवर्स इंजीनियरिंग से सुरक्षित रखें?


491

ऑब्सफैक्शन एक तरीका है, लेकिन यह एप्लिकेशन की पायरेसी प्रोटेक्शन सिक्योरिटी को तोड़ने से नहीं बचा सकता है। मैं यह कैसे सुनिश्चित करूं कि आवेदन के साथ छेड़छाड़ नहीं की गई है, और मैं यह कैसे सुनिश्चित करूं कि पंजीकरण तंत्र रिवर्स इंजीनियर नहीं हो सकता है?

साथ ही C # एप्लिकेशन को मूल कोड में बदलना संभव है, और Xenocode बहुत महंगा है।

C # बहुत सारी सुविधाएँ प्रदान करता है, और मेरे कोड के लिए आदर्श भाषा है, इसलिए C ++ में फिर से पूरा कोडबेस लिखना प्रश्न से बाहर है।

.NET में हस्ताक्षरित विधानसभाओं से सुरक्षित प्रमाण पत्र आसानी से निकाले जा सकते हैं।


8
blogs.msdn.com/b/dotnet/archive/2014/04/02// चीजें बदल जाती हैं!
एंड्रियास

@ संकेत: यह कमाल है !! मैं एक कोशिश दे रहा हूँ। कोई इसका उपयोग कर रहा है?
जैक

1
@ यह केवल विंडो स्टोर ऐप्स के लिए है। डेस्कटॉप ऐप्स के लिए कोई समयरेखा नहीं है (जहां तक ​​मैं बता सकता हूं)।
टायलर लॉन्ग

यदि आप पुरातन C ++ के बिना देशी चाहते हैं, तो डेल्फी का उपयोग करें। .Net की आसानी डेल्फी किसी भी रास्ते से आई थी।
विलियम इगे

जवाबों:


671

आप नहीं कर सकते।

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

आप जो करना चाहते हैं, वह बस इतना मुश्किल है कि यह लोगों की परेशानी के लायक नहीं है।

आपके आवेदन की सुरक्षा में मदद के लिए मेरे पास कुछ सुझाव हैं:

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

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

एक कुशल रिवर्स इंजीनियर अपने आवेदन के माध्यम से आईडीए-प्रो और स्लाइस को आग लगा सकता है जैसे मक्खन आप क्या करते हैं। एक पैक किए गए एप्लिकेशन को अनपैक किया जा सकता है और इसे केवल पार्क में चलने से रोकने से आपत्ति होती है। आपके जटिल लाइसेंस कोड के साथ आपकी सारी मेहनत एक बाइट पैच के साथ पूर्ववत हो सकती है।

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

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

मैंने अपना आवेदन पहले ही पायरेटेड कर लिया है, और मैंने इसे व्यक्तिगत रूप से लिया। यहाँ मैं एक छोटी-सी डेवलपर थी, अपने दिल और आत्मा को एक आवेदन में डालती थी और इन लोगों को मुझ से पायरेट करने के लिए पित्त होता था ?! वे सीधे मेरी जेब से पैसे निकाल रहे थे!

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

एक लंबी लड़ाई के बाद मुझे एहसास हुआ कि मैं ज्वार से लड़ रहा था और यह सब समय बर्बाद हो गया था। मैंने नंगे पैर लाइसेंस कार्यों को छोड़कर सभी फोन-होम कोड निकाल लिए और फिर कभी पीछे मुड़कर नहीं देखा।


67
तो +1 यह लगभग +2 है। मैं चाहता हूं कि अधिक से अधिक लोग अंत में पाएं कि आप एक निर्धारित हमलावर के खिलाफ अपने सॉफ़्टवेयर की रक्षा नहीं कर सकते।
बॉम्बे

102
आप सॉफ्टवेयर सुरक्षा निर्वाण तक पहुँच चुके हैं: यह अधिक सुरक्षा जोड़ने के बारे में नहीं है, यह उत्पाद पर ध्यान केंद्रित करने और इसे इतना अच्छा बनाने के बारे में है कि लोग इसके लिए भुगतान करना चाहते हैं। और उन लोगों के लिए जो इसे समुद्री डाकू करते हैं, उन्होंने कभी भी किसी को भुगतान नहीं किया होगा, ऐसा लगता है जैसे कि वे कभी अस्तित्व में नहीं थे।
आर्थर चैपरियन 8

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

50
नर्क मैं सम्मानित किया गया है किसी को पता चला कि मेरे सॉफ्टवेयर को पायरेट करने लायक था ...
एरिक फोर्ब्स 20

10
जब आप अपनी आय के एक प्रमुख हिस्से के लिए अपने सॉफ़्टवेयर की बिक्री पर भरोसा करना शुरू करते हैं तो यह चीजों को बदल देता है। ऐसा महसूस होता है कि कोई आपसे चोरी कर रहा है। मुझे वही मिलता है जो आप कह रहे हैं। जब मैं पहली बार टोरेंट साइटों पर अपने सॉफ़्टवेयर के लिए दरारें पाया तो मैं चौंक गया था।
mmcdole

265

आप किसी भी एप्लिकेशन (प्रबंधित या नहीं) को पूरी तरह से सुरक्षित नहीं कर सकते। यदि Playstation और iPad जैसी प्रणालियाँ टूट सकती हैं - जहाँ विक्रेता हार्डवेयर को नियंत्रित भी करता है - तो आपके ऐप को क्या आशा है? शुक्र है, आप वास्तव में नहीं करना चाहते हैं। मेरी राय में, आपको अपने एप्लिकेशन को बस इतना सुरक्षित करने की आवश्यकता है कि कोई व्यक्ति गलती से आपके उत्पाद को पायरेट न कर सके , और न ही।

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

एक अन्य उदाहरण समय-सीमित परीक्षण है। सरल चीजों के बारे में भी चिंता न करें जैसे कि उपयोगकर्ता सिस्टम घड़ी को वापस रोल कर सकते हैं। कोई ऐसा व्यक्ति जो जानता है कि वे आपका लाइसेंस तोड़ रहे हैं, और जब तक कोई उपयोगकर्ता जानता है कि जब वे उल्लंघन करते हैं तो आपने पर्याप्त किया है।

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

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

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

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

परिणाम यह है कि आपको फॉर-पे संस्करण की कीमत बढ़ाने की आवश्यकता हो सकती है, ताकि अंत में 2,000 उपयोगकर्ताओं के बजाय $ 20 प्रत्येक पर आपके पास 100,000 मुक्त उपयोगकर्ता हों, जिनमें से 500 "पेशेवर" संस्करण के लिए $ 99 का भुगतान करने के लिए तैयार हैं । यदि आपने अपने उत्पाद को लॉक करने में समय व्यतीत किया है तो इससे आपको अधिक धन प्राप्त होता है। इससे अधिक, आप इन मुफ्त उपयोगकर्ताओं को संलग्न कर सकते हैं और कई महत्वपूर्ण तरीकों से संबंध का लाभ उठा सकते हैं।

एक सहारा है। निराशावादी 100,000 नि: शुल्क उपयोगकर्ताओं का समर्थन करने की बढ़ी हुई लागत के बारे में शिकायत करने का यह अवसर लेगा, लेकिन इसके बजाय कुछ अद्भुत होता है: आपका उत्पाद काफी हद तक समर्थन करता है। आप बड़े खुले स्रोत परियोजनाओं के साथ हर समय देखते हैं, जिनके पास समर्थन लागत के लिए कोई पैसा नहीं है। यूजर्स कदम बढ़ाएंगे और ऐसा करेंगे।

नि: शुल्क उपयोगकर्ताओं ने आमतौर पर समर्थन कारणों को कम करना शुरू कर दिया है, और अच्छे कारण से। आपको केवल स्वतंत्र संस्करण को चिन्हित करना होगा, क्योंकि यह केवल सामुदायिक समर्थन के लिए योग्य है और उस उद्देश्य के लिए उपयोगकर्ता-संचालित ऑनलाइन फोरम को रखा गया है। आपका समर्थन ज्ञान आधार स्व-उत्पादक है, और उन्नत उपयोगकर्ता उन लोगों को शेफर्ड करेंगे, जिन्हें आपकी ओर से अतिरिक्त हैंड-होल्डिंग की आवश्यकता है। इससे भी महत्वपूर्ण बात, यह आपको बग्स को तेजी से पहचानने और सही करने की अनुमति देगा, अंततः आपके उत्पाद की गुणवत्ता में सुधार करेगा और कुल समर्थन लागत को कम करेगा। यह पहले संभव नहीं था क्योंकि आपका उपयोगकर्ता आधार काफी बड़ा नहीं था, लेकिन जब आप मुफ्त उपयोगकर्ताओं को ग्राहकों के रूप में मानते हैं तो यह बहुत अच्छा काम कर सकता है।

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

अंत में, आपको विपणन पर विचार करने की आवश्यकता है। ये सभी मुफ्त उपयोगकर्ता अब विरोधी के बजाय प्रशंसक हैं, और वे तदनुसार कार्य करेंगे। इतना ही नहीं, लेकिन जब यह आपके अगले संस्करण को जारी करने का समय आता है, तो ये उपयोगकर्ता किसी अन्य अज्ञात तंत्र के बजाय, आपके स्वीकृत वितरण चैनल के माध्यम से चले जाएंगे। इसका मतलब है कि आपके अगले संस्करण के लिए आप एक बड़े, अत्यधिक इच्छुक और सहायक दर्शकों से जुड़े हुए हैं।

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

जबकि मनोवैज्ञानिक रूप से आपके उत्पाद को इस तरह से देना मुश्किल हो सकता है, उम्मीद है कि आप समझ सकते हैं कि यह वास्तव में जाने का सबसे अच्छा तरीका कैसे है। इतना ही नहीं, यह दीर्घकालिक में जाने का एकमात्र तरीका है। मुझे पता है कि कोई व्यक्ति यह सोचकर वहां से निकल जाता है कि वे इसे इस तरह नहीं करना चाहते। सब के बाद, वे साल के लिए अपने लॉक-डाउन $ 20 उत्पाद बेचकर ठीक हो गए हैं। लेकिन यह बहुत बुरा है, क्योंकि यदि आप इसे इस तरह से नहीं करते हैं, तो अंततः कोई और करेगा । और उनका उत्पाद आपके जैसा ही अच्छा होगा, या पर्याप्त रूप से वे दावा करने से दूर हो सकते हैं। फिर अचानक आपके मूल्य निर्धारण अपमानजनक लगते हैं, बिक्री में नाटकीय रूप से गिरावट आती है, और ऐसा कुछ नहीं है जो आप कर सकते हैं। यदि आप आवश्यक हो तो आप एक अतिरिक्त मध्य स्तर का विकल्प चुन सकते हैं, लेकिन यह आपकी मदद करने की संभावना नहीं है।


1
@ लर्निंग: यह थोड़े समय के साथ बड़ा हुआ और स्वचालित रूप से सीडब्ल्यू थ्रेसहोल्ड में बदल गया।
जोएल कोएहॉर्न

1
+1 इस प्रश्न के पिछले संस्करण को दिए गए उत्तर से बेहतर। @Joel पता नहीं था कि कोई सीमा थी।
पाइप द गीक जूल

1
मैं यहाँ सब कुछ से पूरी तरह सहमत नहीं हूँ, और यह एक बहुत ही अच्छी तरह से सोचा प्रस्तुति और तर्क के लिए एक आसान +1 है।
बेस्का

2
अच्छा तर्क है, लेकिन बौद्धिक संपदा की रक्षा के बारे में एक बिंदु याद आती है। यदि आपके ऐप में कुछ कोड है जो कुछ ऐसा है जो कुछ जटिल है, तो obfuscation फ्लैट आउट कॉपी और पेस्टिंग कोड के बीच अंतर प्रदान कर सकता है, और कोड की व्याख्या करने और पुन: इंजीनियर करने की कोशिश कर रहा है ताकि यह काम करे। यह अपडेट के साथ विशेष रूप से महत्वपूर्ण है: यदि किसी ने आपके ओफ़्फ़ुसेटेड कोड की प्रतिलिपि बनाई है, जब आप एक अपडेट जारी करते हैं, तो उन्हें फिर से ऐसा करना होगा - और बहुत कम से कम, यह उन्हें और अधिक दर्द / खर्च / समय का कारण बनता है। यदि आपके पास किसी तरह से संरक्षित नहीं है, तो वे फिर से कॉपी / पेस्ट करते हैं और यह काम करता है।
ग्रिग्मैक

4
महान पोस्ट - यह वास्तव में उन कारणों के बारे में सभी सही विवरणों में जाता है जो जटिल प्रतिलिपि सुरक्षा लिखने के लिए परेशान होने के लायक नहीं हैं। भले ही सवाल एक डुप्लिकेट है, यह सिर्फ इस जवाब के लिए इसे फिर से खोलने के लायक है। शायद एक मॉड इसे मर्ज कर सकता है?
ईएमपी

45

मेरे अनुभव में, आपके एप्लिकेशन या लाइब्रेरी को क्रैक करना आपके ईमानदार ग्राहकों को ठेस पहुँचाता है, जबकि केवल बेईमानों को थोड़ा विलंब करना पड़ता है। अपरिहार्य में देरी में बहुत प्रयास करने के बजाय एक महान, कम घर्षण उत्पाद बनाने पर ध्यान दें।


38

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


1
Btw im एक परियोजना कर रहा है जिसमें मैं एक उत्पाद "ऑफ़लाइन" को भी सक्रिय करना चाहता हूं। (मैंने ऑनलाइन सक्रिय करने के लिए WCF सेवा बनाई)। इस मामले में यू कोड में हेरफेर कैसे करेगा? क्या आप मुझे कुछ हिट दे सकते हैं?
पीयूष

1
दिलचस्प विचार, लेकिन कार्रवाई के दौरान क्या आप किसी ऐसे एप्लिकेशन को विकसित करने की सिफारिश करेंगे जो बिना किसी डेटा कनेक्शन के WP7 गेम के रूप में चले?
चार्ली स्किलबेक

23

मोटे तौर पर, वहाँ लोगों के तीन समूह हैं।

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

  • वैध उपयोगकर्ताओं का समूह जो आपके सॉफ़्टवेयर को खरीदेगा (भुगतान करेगा), भले ही आप सुरक्षा तंत्र का उपयोग करें। अपने वैध उपयोगकर्ताओं के लिए एक विस्तृत सुरक्षा तंत्र का उपयोग करके जीवन को कठिन न बनाएं क्योंकि वे किसी भी मामले में इसके लिए भुगतान करने जा रहे हैं। एक जटिल सुरक्षा तंत्र उपयोगकर्ता अनुभव को आसानी से खराब कर सकता है और आप इस समूह के लिए ऐसा नहीं करना चाहते हैं। व्यक्तिगत रूप से, मैं किसी भी हार्डवेयर समाधान के खिलाफ मतदान करूंगा, जो आपके सॉफ़्टवेयर की लागत को जोड़ता है।

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

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

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


अपने लाइसेंस की सुरक्षा / सत्यापन के लिए मजबूत क्रिप्टोग्राफी का उपयोग करना पूरी तरह से बेकार है यदि कोई व्यक्ति उस कोड को निकालता है जो लाइसेंस रद्द कर देता है तो आवेदन को निरस्त कर देता है। :)
बॉम्बे

सहमत, लेकिन जैसा कि मैं कह रहा था, सुरक्षा उन उपयोगकर्ताओं के समूह के लिए नहीं है जो दरार का उपयोग करने का सहारा लेंगे (एक धारणा जो मैंने बनाई है वह मौजूद होगी)।
रहस्यवादी

सार्वजनिक-कुंजी क्रिप्टोग्राफ़ी = असममित क्रिप्टोग्राफ़ी। मुझे लगता है कि आपका मतलब सममित था।
mmcdole

1
निष्पक्ष होने के लिए तीसरा बिंदु पक्षपाती है क्योंकि यह मानता है कि लोगों का हिस्सा हमेशा अल्पसंख्यक होता है। मुझे कुछ निश्चित रूपरेखाओं के तहत पूरा यकीन है कि यह एक स्पष्ट बहुमत है। मेरे पास व्यापक रूप से मल्टीप्लेयर विशेषताओं के साथ ऑनलाइन गेम हैं क्योंकि ए) अधिकांश उपयोगकर्ता बहुत कम नैतिक मानकों वाले बच्चे हैं) ख उन उपयोगकर्ताओं के लिए महत्वपूर्ण हो सकता है यदि यह एक मासिक शुल्क है जो महीनों तक चलता है आदि
j riv

19

आप अपने सॉफ़्टवेयर को क्रैक करने से नहीं रोक सकते।

हालांकि, आप उन्हें दरारें बना सकते हैं जो आपकी बिक्री को कम नुकसान पहुंचाएंगे। आपके सॉफ़्टवेयर के लिए मान्य पंजीकरण कोड जारी करने वाले कीगेंनर सरल पैच से बहुत खराब हैं जो आपके सॉफ़्टवेयर से पंजीकरण प्रोत्साहन को हटाते हैं। ऐसा इसलिए है क्योंकि एक दरार केवल एक सॉफ्टवेयर संस्करण के लिए काम करेगी, और आपके द्वारा जारी किए जाने वाले अगले सॉफ़्टवेयर अपडेट के साथ काम करना बंद कर देगी। जब तक आप अपना पंजीकरण कुंजी एल्गोरिथ्म नहीं बदलते हैं, तब तक यह काम करता रहेगा और यह कुछ ऐसा है जो आप अक्सर नहीं करना चाहते हैं क्योंकि यह आपके ईमानदार ग्राहकों को हटा देगा।

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

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

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

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

आंशिक कुंजी सत्यापन के लिए एक खुला स्रोत .NET ढाँचा प्रतीत होता है , हालाँकि मैंने इसकी कोशिश नहीं की है।


1
विचार की तरह, आप अलग-अलग रिलीज़ में अलग-अलग एन्क्रिप्शन के लिए अलग-अलग पासवर्ड का उपयोग कर सकते हैं।
प्रियांक बोलिया

दिलचस्प विचार, लेकिन वास्तव में एक लंबे पंजीकरण कोड के साथ समस्या क्या है? अब कोई भी इसे किसी भी तरह से हाथ से नहीं डालेगा - हर कोई इसे कॉपी और पेस्ट करेगा, इसलिए चाहे वह 10 वर्ण हो या 100 वर्ण कोई भी फर्क नहीं करना चाहिए।
ईएमपी

4
@Evgeny: यह केवल सच है अगर आपके उपयोगकर्ता बिजली उपयोगकर्ता हैं। हम कई वर्षों से शेयरवेयर / कैज़ुअल गेम बना रहे हैं और मैं आपको बता सकता हूं कि हमारे अधिकांश उपयोगकर्ता कॉपी और पेस्ट नहीं कर सकते हैं। पंजीकरण विंडो भी कॉपी और पेस्ट करने के तरीके पर एक मैनुअल के साथ आती है, और कुछ इसे पढ़ने के बाद भी नहीं करते हैं।
एड्रियन ग्रिगोर

वाह! ठीक है, ठीक है, आपके पास स्पष्ट रूप से मुझसे अधिक अनुभव है, इसलिए मैं बहस नहीं कर सकता, मैं केवल यह कह सकता हूं कि मैं आश्चर्यचकित हूं। लेकिन मैं यह कहूंगा कि अगर उन्हें पता नहीं है कि कैसे कॉपी और पेस्ट करना है तो आपको कोड 200 अक्षरों को लंबा करना चाहिए , ताकि वे एक अत्यधिक उपयोगी सामान्य कंप्यूटर कौशल सीखें। :)
ईएमपी

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

16
  • बिना लाइसेंस वाली प्रतियों को ब्लॉक करने के लिए ऑनलाइन अपडेट का उपयोग करें।

  • अपने आवेदन के विभिन्न मॉड्यूल से सीरियल नंबर सत्यापित करें और सत्यापन करने के लिए एक भी फ़ंक्शन कॉल का उपयोग न करें (ताकि पटाखे आसानी से सत्यापन को बायपास न कर सकें)।

  • स्टार्टअप पर न केवल सीरियल नंबर की जांच करें, डेटा की बचत करते समय सत्यापन करें, यह हर शुक्रवार शाम को करें, ऐसा तब करें जब उपयोगकर्ता निष्क्रिय हो ...

  • एप्लिकेशन फ़ाइल चेक राशि सत्यापित करें, विभिन्न स्थानों में अपनी सुरक्षा जांच राशि संग्रहीत करें।

  • इस तरह के ट्रिक्स पर बहुत दूर न जाएं, सुनिश्चित करें कि आपका आवेदन पंजीकरण कोड को सत्यापित करते समय कभी भी क्रैश / खराबी में न आए।


  • पटाखे के लिए एक अटूट बाइनरी बनाने की तुलना में उपयोगकर्ताओं के लिए एक उपयोगी ऐप बनाना अधिक महत्वपूर्ण है ।


14

आप ऐसा कर सकते हैं..

Microsoft SLP सेवाएँ InishTech का सॉफ़्टवेयर संभावित आपके अनुप्रयोगों की कार्यक्षमता को प्रभावित किए बिना कोड की सुरक्षा में मदद करने की क्षमता प्रदान करता है।

अद्यतन: (प्रकटीकरण: मैं Eazfuscator.NET पर काम करता हूं) क्या बनाता है Microsoft SLP सेवाएँ सॉफ़्टवेयर संभावित भिन्न कोड को वर्चुअलाइज़ करने की क्षमता है, इसलिए आप निश्चित रूप से कर सकते हैं । मूल रूप से प्रश्न पूछे जाने के बाद कई साल बीत गए; आज अधिक उत्पाद उपलब्ध हैं जो समान आधार पर भी काम करते हैं जैसे:


2
मेरे मित्र को मूल्य निर्धारण करना, Microsoft से लाइसेंसिंग सॉफ़्टवेयर खरीदना सामान्य ISV के लिए बहुत महंगा है
प्रियांक बोलिया

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

@ogggre यदि विक्रेता लिंक जोड़ते हैं, तो आपको वास्तव में पोस्ट में अपने कनेक्शन का खुलासा करने की आवश्यकता है। वर्तमान में SLPS का वर्तमान में उपलब्ध संस्करण (जो मैं काम करता हूं : D) जेनरिक का समर्थन करता है। स्वाभाविक रूप से सभी समाधानों में उनके व्यक्तिगत पक्ष और विपक्ष हैं कि केवल एक
ईवैल

@MohsenAfshin मुझे समझ में नहीं आ रहा है कि आप क्या कह रहे हैं - मुद्दा यह है कि आपको किसी भी तरीके की रक्षा करने की आवश्यकता है जहां आईएल को जोड़ने / हटाने / बदलने से लाइसेंस उल्लंघन का प्रतिनिधित्व होता है। क्योंकि वर्चुअलाइज़िंग चीजें मुफ्त नहीं हो सकतीं, जैसा कि आप सुझाव दे रहे हैं, यह 'जादुई रूप से इसे सभी की रक्षा करने' से कोई मतलब नहीं है। मुख्य बिंदु पर वापस: एसपी के संरक्षण का उद्देश्य उन तरीकों पर आईएल परिवर्तनों को रोकना है जो आप इस आधार पर चुनते हैं कि वे संवेदनशील हैं (प्लस आम तौर पर कुछ अन्य लोगों के शोर के रूप में रोपण से बचने के लिए आपको इस बिट को दरार करने की आवश्यकता है -> साइन )
रूबेन बार्टेलिंक

1
@RubenBartelink मैं आपसे सहमत हूं। दुर्भाग्य से सामग्री के कई पृष्ठों के साथ यह धागा बहुत बड़ा है। पहले तो मैं एक नया उत्तर जोड़ना चाहता था लेकिन स्टैकऑवरफ्लो ने सुझाव दिया कि मौजूदा को विस्तारित करना बेहतर है। तो मैंने किया। आशा है मेरी छोटी सी जानकारी उपयोगी है। SLPS और आपके सुधार में सामान्य समर्थन के अपडेट के लिए धन्यवाद।
ऑगग्रे

10

.NET रिफ्लेक्टर केवल "प्रबंधित कोड" को खोल सकता है जिसका मूल अर्थ ".NET कोड" है। इसलिए आप इसका उपयोग COM DLL फ़ाइलों, देशी C ++, क्लासिक विज़ुअल बेसिक 6.0 कोड आदि को अलग करने के लिए नहीं कर सकते हैं । संकलित .NET कोड की संरचना इसे बहुत सुविधाजनक, पोर्टेबल, खोज योग्य, सत्यापन योग्य बनाती है। .NET Reflector लाभ उठाता है यह आपको संकलित असेंबली में सहकर्मी बनाने के लिए है, लेकिन डिकंपाइलर और डिस्सेम्बलर्स .NET के लिए किसी भी तरह से विशिष्ट नहीं हैं और जब तक कंपाइलर चारों ओर रहे हैं तब तक आसपास रहे हैं।

आप कोड को पढ़ने के लिए और अधिक कठिन बनाने के लिए ओफ़्फ़ुसेटर्स का उपयोग कर सकते हैं, लेकिन आप इसे .NET के बिना अपठनीय बनाए बिना इसे विघटित होने से नहीं रोक सकते। वहाँ मुट्ठी भर उत्पाद हैं (आम तौर पर महंगे) जो आपके प्रबंधित कोड एप्लिकेशन को "लिंक" करने का दावा करते हैं, लेकिन अगर ये वास्तव में काम करते हैं, तो एक निर्धारित व्यक्ति हमेशा एक रास्ता खोज लेगा।

हालांकि जब यह आपत्ति के लिए आता है, तो आपको वह मिलता है जो आप भुगतान करते हैं। इसलिए यदि आपका कोड इतना मालिकाना है कि आपको इसे बचाने के लिए इतनी बड़ी लंबाई पर जाना चाहिए, तो आपको एक अच्छे पर्यवेक्षक में पैसा लगाने के लिए तैयार रहना चाहिए।

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


9

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

यदि आप कुछ अधिक विश्वसनीय चाहते हैं, तो हार्डवेयर कुंजियों के पथ पर जाएं, लेकिन यह परेशानी (उपयोगकर्ता के लिए) और अधिक महंगी है। सॉफ़्टवेयर समाधान शायद समय और संसाधनों की बर्बादी होगी, और केवल एक चीज जो वे आपको देंगे, वह है 'सुरक्षा' का गलत अर्थ।

कुछ और विचार (कोई भी पूर्ण नहीं है, क्योंकि कोई पूर्ण नहीं है)।

  • AntiDuplicate
  • भाषा बदलें, उन अच्छी ट्रिक्स का उपयोग करें जो स्काइप के लेखकों ने उपयोग की हैं
  • लाइसेंस सर्वर

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


यह मत भूलो कि हार्डवेयर लॉक के सॉफ़्टवेयर भाग पर हमला करना काफी संभव है।
मैग्नस हॉफ

हां, यह सच है, एकमात्र विकल्प यह होगा कि एप्लिकेशन को आंशिक रूप से हार्डवेयर में लागू किया जाए (उदाहरण के लिए सॉफ्टवेयर-वीएचडीएल एप्लिकेशन का कुछ अजीब मिश्रण)। हालांकि यह भी क्रैकेबल होगा ...
बेनामी

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

यही हार्डवेयर कुंजी आमतौर पर करती है। लेकिन आप या तो डोंगल पर हमला कर सकते हैं - इसे क्लोन कर सकते हैं, या डोंगल (खतना, अक्षम, आदि) के साथ बात करने के लिए जिम्मेदार सॉफ़्टवेयर।
बेनामी

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

9

यदि आप चाहते हैं कि लोग आपके कोड को चलाने में सक्षम हों (और यदि आप नहीं करते हैं, तो आपने इसे पहली जगह में क्यों लिखा है?), तो उनके सीपीयू को आपके कोड को निष्पादित करने में सक्षम होने की आवश्यकता है। कोड को निष्पादित करने में सक्षम होने के लिए , सीपीयू को इसे समझने में सक्षम होने की आवश्यकता है।

चूंकि सीपीयू गूंगा है, और मनुष्य नहीं हैं, इसका मतलब यह है कि मनुष्य कोड को भी समझ सकते हैं।

यह सुनिश्चित करने का केवल एक तरीका है कि आपके उपयोगकर्ताओं को आपका कोड न मिले: उन्हें अपना कोड न दें।

यह दो तरीके से प्राप्त किया जा सकता है: एक सेवा के रूप में सॉफ़्टवेयर (SaaS), अर्थात, आप अपना सॉफ़्टवेयर अपने सर्वर पर चलाते हैं और केवल अपने उपयोगकर्ताओं को इसे दूरस्थ रूप से एक्सेस करने देते हैं। यह वह मॉडल है जिसका स्टैक ओवरफ्लो उपयोग करता है, उदाहरण के लिए। मुझे पूरा यकीन है कि स्टैक ओवरफ्लो उनके कोड को बाधित नहीं करता है, फिर भी आप इसे अपघटित नहीं कर सकते।

दूसरा तरीका उपकरण मॉडल है: अपने उपयोगकर्ताओं को अपना कोड देने के बजाय, आप उन्हें एक कंप्यूटर देते हैं जिसमें कोड होता है। यह वह मॉडल है जो गेमिंग कंसोल, अधिकांश मोबाइल फोन और TiVo का उपयोग करता है। ध्यान दें कि यह केवल तभी काम करता है जब आप संपूर्ण निष्पादन पथ को "स्वयं" बनाते हैं: आपको अपना स्वयं का सीपीयू, अपना कंप्यूटर बनाने की आवश्यकता होती है, अपना स्वयं का ऑपरेटिंग सिस्टम और अपना स्वयं का सीएलआई कार्यान्वयन। फिर, और उसके बाद ही आप अपने कोड की सुरक्षा कर सकते हैं। (लेकिन ध्यान दें कि यहां तक ​​कि सबसे गलत गलती आपके सभी सुरक्षा को बेकार कर देगी। Microsoft, Apple, Sony, संगीत उद्योग और फिल्म उद्योग उस पर ध्यान दे सकते हैं।)

या, आप बस कुछ नहीं कर सकते, जिसका अर्थ है कि आपके कोड को कॉपीराइट कानून द्वारा स्वचालित रूप से संरक्षित किया जाएगा।


8

दुर्भाग्य से, आप इससे दूर भागने वाले नहीं हैं। आपका सबसे अच्छा शर्त यह है कि आप अपना कोड C और P / Invoke में लिखें ।

एक छोटा सा कैच -22 है, कोई व्यक्ति आपके आवेदन को CIL में अपघटित कर सकता है और किसी भी सत्यापन / सक्रियण कोड (उदाहरण के लिए, आपके C लाइब्रेरी को कॉल) को मार सकता है। याद रखें कि C में जो एप्लिकेशन लिखे गए हैं, वे अधिक लगातार हैकर्स द्वारा रिवर्स-इंजीनियर किए जाते हैं (बस देखो कि इन दिनों कितने तेज खेल फटा है)। कुछ भी नहीं आपके आवेदन की रक्षा करेगा।

अंत में यह आपके घर की तरह बहुत काम करता है, इसे अच्छी तरह से संरक्षित करें ताकि यह बहुत अधिक प्रयास हो (स्पेगेटी कोड यहां मदद करेगा) और ताकि हमलावर सिर्फ आपके अगले दरवाजे पड़ोसी (प्रतियोगिता :)) पर चले जाएं। विंडोज विस्टा को देखें, इसे क्रैक करने के 10 अलग-अलग तरीके होने चाहिए।

ऐसे पैकेज हैं जो आपकी EXE फ़ाइल को एन्क्रिप्ट करेंगे और इसे तब डिक्रिप्ट करेंगे जब उपयोगकर्ता को इसका उपयोग करने की अनुमति होगी, लेकिन एक बार फिर, यह एक जेनेरिक समाधान का उपयोग कर रहा है जिसमें कोई संदेह नहीं है।

सक्रियण और पंजीकरण तंत्र का उद्देश्य 'औसत जो:' लोग हैं, जिनके पास इसे बायपास करने के लिए पर्याप्त तकनीक प्रेमी नहीं है (या इस बात के लिए जानते हैं कि वे इसे बायपास कर सकते हैं)। पटाखे के साथ परेशान मत करो, उनके पास अपने हाथों पर बहुत अधिक समय है।


1
यदि आप वास्तव में अपने पंजीकरण कोड को एक dll में आउटसोर्सिंग करने से परेशान हैं, तो आपको यह सुनिश्चित करना चाहिए कि DLL को आपके सॉफ़्टवेयर के हर नए संस्करण के साथ अलग होना चाहिए। अन्यथा आपके सॉफ्टवेयर को क्रैक करना लोगों के लिए और भी आसान हो जाता है। उन्हें केवल एक बार अपने DLL को क्रैक करना होगा और बाद के सभी संस्करणों के लिए उपयोग करना होगा। यहां तक ​​कि अंतिम उपयोगकर्ता एक बार फटा हुआ DLL ढूंढने के बाद भी ऐसा कर सकते हैं, और यह आपके प्रबंधित कोड में पंजीकरण तंत्र लगाने से भी बदतर है।
एड्रियन ग्रिगोर

8

खरीद सुरक्षा के अलावा, आप (या आपके डेवलपर्स) कॉपी-प्रोटेक्ट करना सीख सकते हैं।

ये विचार हैं:

सबसे पहले, एक प्रोग्राम लिखने की कोशिश करें जो खुद को सांत्वना के लिए लिखता है। यह एक प्रसिद्ध समस्या है। इस कार्य का प्राथमिक उद्देश्य स्वयं-संदर्भ कोड लिखने का अभ्यास करना है।

दूसरा, आपको एक ऐसी तकनीक विकसित करने की आवश्यकता है जो कुछ कोड को अन्य तरीकों से भरोसेमंद तरीके से फिर से लिखे

आप एक वर्चुअल मशीन लिख सकते हैं (फिर भी .NET में ) । और वहां कुछ कोड डाले। अंततः, वर्चुअल मशीन एक और वर्चुअल मशीन चलाता है जो कोड चलाता है। प्रदर्शन को बहुत अधिक धीमा नहीं करने के लिए शायद ही कभी-कही जाने वाले कार्यों का एक हिस्सा है।

C ++ / CLI में कुछ तर्क को फिर से लिखें, और प्रबंधित कोड को अप्रबंधित के साथ मिलाएं। यह असहमति को कठोर करेगा। इस मामले में, x64 बायनेरिज़ भी प्रदान करना न भूलें ।


क्या आप विस्तार से बता सकते हैं।
प्रियांक बोलिया

7

हाँ। यह सत्य है। यदि कोड को बाधित नहीं किया जाता है तो .NET कोड रिवर्स इंजीनियर के लिए बेहद आसान है।

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

Visual Studio में Dotfuscator का एक संस्करण शामिल है । चूंकि यह एक बंडल संस्करण है, इसलिए आप निश्चित रूप से सबसे मजबूत ऑबफैक्शन नहीं पा रहे हैं। यदि आप उनकी फ़ीचर सूचियों को देखते हैं, तो आपको वही दिखाई देगा जो आप याद कर रहे हैं (और आपके कोड को और अधिक सुरक्षित बनाने के लिए एप्लिकेशन क्या करेगा)।

वहाँ अन्य मुक्त या खुले स्रोत .NET obfuscators के एक जोड़े हैं वहाँ (लेकिन मैं गुणवत्ता या वे उपयोग विभिन्न तरीकों पर टिप्पणी नहीं कर सकते):

अंत में, कुछ भी सही नहीं है। अगर कोई वास्तव में यह देखना चाहता है कि आपका सॉफ्टवेयर कैसे काम करता है, तो वे करेंगे।


11
यह सिर्फ "अगर वे वास्तव में नहीं देखना चाहते हैं कि आपके सॉफ़्टवेयर कैसे काम करते हैं, तो वे करेंगे"। अगर वे परवाह करते हैं, तो वे शायद बिना देखे अनुमान लगा सकते हैं। 99.9% सॉफ्टवेयर में कोई मैजिक पिक्सी डस्ट एल्गोरिदम नहीं है। प्रोग्रामिंग का कठिन हिस्सा कुछ विशेष गुप्त तकनीक नहीं है। यह सिर्फ सभी भागों को पंक्तिबद्ध करने और काम करने के लिए मिल रहा है।
केन

9
@ किं - श्ह! आप बाकी दुनिया को यह नहीं बता सकते कि ज्यादातर समय हम जादू पिक्सी डस्ट एल्गोरिदम का उपयोग नहीं कर रहे हैं।
जस्टिन निस्नेर

9
जस्टिन: क्या प्रेम एक जादू एल्गोरिथ्म के रूप में गिना जाता है? प्यार वही है जो मेरे कार्यक्रमों को खास बनाता है । मुझे नहीं लगता कि आप लव को डिसाइड कर सकते हैं।
केन

Babel.NET अब और मुक्त नहीं है। आप सबसे आम ऑबफस्केटर (स्वतंत्र और वाणिज्यिक वाले) की एक सूची पा सकते हैं यहाँ
इनपुटऑउटपुट

6

ठीक है, आप पूरी तरह से अपने उत्पाद को टूटने से नहीं बचा सकते हैं, लेकिन आप सुरक्षा स्तरों को अधिकतम / बढ़ा सकते हैं और इसे नए-नए और मध्यवर्ती पटाखे से थोड़ा मुश्किल बना सकते हैं।

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

  • अपने स्रोत कोड को देखें, जाहिर है कि यह आपके स्रोत कोड को गड़बड़ और अपठनीय जैसा बना देगा।
  • हर दो घंटे, 24 घंटे, एक दिन, सप्ताह, इत्यादि जैसे आपके एप्लिकेशन के अंदर कई यादृच्छिक जाँच रूटीन को ट्रिगर करना या उपयोगकर्ता द्वारा की जाने वाली हर कार्रवाई के बाद।
  • अपने जारी किए गए एप्लिकेशन के MD5 को सहेजें चेकसम को अपने सर्वर पर और एक रूटीन लागू करें जो वर्तमान फाइल एमडी 5 चेकसम को आपके सर्वर पर वास्तविक के साथ चेक कर सके और इसे बेतरतीब ढंग से ट्रिगर कर सके। यदि एमडी 5 चेकसम को बदल दिया गया है, तो इसका मतलब है कि यह कॉपी पायरेटेड है। अब आप इसे ब्लॉक कर सकते हैं या इसे ब्लॉक करने के लिए अपडेट जारी कर सकते हैं, आदि।
  • एक ऐसी दिनचर्या बनाने की कोशिश करें जो यह जांच सके कि आपके कुछ कोड (फ़ंक्शंस, क्लासेस या विशिष्ट रूटीन) वास्तव में संशोधित किए गए हैं या बदल दिए गए हैं या हटा दिए गए हैं। मैं इसे (कोड अखंडता जांच) कहता हूं।
  • अपना एप्लिकेशन पैक करने के लिए निःशुल्क अज्ञात पैकर्स का उपयोग करें। या, यदि आपके पास पैसा है, तो थमीडा या .NET रिएक्टर जैसे वाणिज्यिक समाधानों के लिए जाएं । वे एप्लिकेशन नियमित रूप से अपडेट हो जाते हैं और एक बार एक पटाखा आपके आवेदन को अनपैक कर देता है, आप बस उन कंपनियों से एक नया अपडेट प्राप्त कर सकते हैं और एक बार जब आप नया अपडेट प्राप्त करते हैं, तो आप बस अपना प्रोग्राम पैक करते हैं और एक नया अपडेट जारी करते हैं।
  • नियमित रूप से अपडेट जारी करें और अपने ग्राहक को नवीनतम अपडेट डाउनलोड करने के लिए मजबूर करें।
  • अंत में अपना आवेदन बहुत सस्ता करें। इसे बहुत महंगा मत बनाओ। मेरा विश्वास करो, आपको अधिक खुश ग्राहक मिलेंगे और पटाखे सिर्फ आपके आवेदन को छोड़ देंगे, क्योंकि यह बहुत सस्ते आवेदन को क्रैक करने के लिए उनके समय के लायक नहीं है।

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

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

अब जाओ और पटाखे के लिए कुछ खिलौने लागू करो ...


5

वहाँ समन्दर है , जो कि एक देशी .NET कंपाइलर और रेमोसेफ्ट से लिंकर है जो .NET फ्रेमवर्क के बिना एप्लिकेशन को तैनात कर सकता है। मुझे नहीं पता कि यह अपने दावों के लिए कितना सही है।


जवाब काफी आसान है: यह एक अफ़सोस की बात है, कि ज्यादातर जवाब आपत्तिजनक बात करते हैं। बहुत पहले (Reflector-like) अपने कोड में देखने की कोशिश को रोकने के लिए अच्छा है, यही सब है। वह बुरा नहीं है। और निश्चित रूप से कुछ भी नहीं है जो असली हैकर्स को रोकता है जो असेंबली कोड को समझते हैं, इसके अलावा SAAS एप्लिकेशन भी लिखते हैं (फिर भी वे अपने सर्वर को हैक करने की कोशिश कर सकते हैं)। लेकिन वहाँ अधिक है, वहाँ समन्दर जैसे उपकरण हैं, .NET रिएक्टर एक अन्य उल्लेख किया गया है, जो (शायद) C ++ संकलित Win32 .exe के रूप में लगभग समान सुरक्षा प्रपत्र प्रदान करते हैं। उन उपकरणों में से कौन सा सबसे अच्छा है, मैं अभी तक न्याय नहीं कर सकता।
फिलम

5

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


5

.NET रिएक्टर

अपडेट करें

जारेड ने बताया कि डी 4 टीट इसे विघटित करने में सक्षम होने का दावा करता है।

.NET रिएक्टर आपके .NET असेंबली को मानव रहित प्रक्रियाओं में परिवर्तित करके आपकी संवेदनशील बौद्धिक संपदा के लिए पूर्ण सुरक्षा प्रदान करता है, जिसे CIL के रूप में नहीं समझा जा सकता है, और जो कोई भी मौजूदा टूल डिकंपाइल नहीं हो सकता है। हैकर्स के पास आपके स्रोत के किसी भी समझदार रूप तक पहुंच नहीं है।

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


3
मैंने कुछ सवालों के साथ उन लोगों से संपर्क करने की कोशिश की, मेरे पास उनके उत्पाद के बारे में था, लेकिन उन्होंने कभी जवाब नहीं दिया। क्या आपके उत्पाद की कोशिश की मैं स्मार्ट असेंबली के साथ गया हूं और उनके उत्पाद और समर्थन दोनों बहुत अच्छे हैं। लेकिन जैसा कि मैंने पहले ही कहा था कि प्रश्न में एक तरीका है, लेकिन पूर्ण प्रमाण नहीं।
प्रियांक बोलिया

1
मेरे पास उनके उत्पाद के साथ पहले कुछ समस्याएँ थीं और फिर मैंने समूहों में उच्च रिज़ॉल्यूशन आइकनों के बारे में कुछ सवाल पूछे ।google.se/group/net - reactor - users और मुझे एक उत्तर और एक फिक्स मिला, लेकिन अब ऐसा लगता है जैसे वे कठिन हैं पर काबू पाना। बुरा करने के लिए - यह एक महान उत्पाद है और मैं अभी भी इसका उपयोग कर रहा हूं
लॉरडेरोन

2
"कोई मौजूदा उपकरण डिकंपाइल कर सकते हैं", क्यों यह एक समर्थित अस्पष्टकर्ता / de4dot पर पैकर रूप में सूचीबद्ध है पेज ?: का प्रचार करता है bitbucket.org/0xd4d/de4dot
जारेड Thirsk

शायद इसलिए कि यह एक पुराना बयान है और उन्होंने अपने वेबपेज को अपडेट नहीं किया है। मैं अब किसी भी उपकरण का उपयोग करने वाला नहीं हूं।
लॉरडेरॉन

de4dot एक बहुत शक्तिशाली उपकरण है। मैंने इसे कई पर्यवेक्षकों के खिलाफ आजमाया है और यह बहुत अच्छा काम करता है। हालाँकि, यह .NET रिएक्टर (v6.0) संरक्षित फ़ाइलों को संभालने में सक्षम नहीं था। शायद de4dot आज तक नहीं है।
इनपुटऑउटपुट

4

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


5
क्या होगा अगर सर्वर डाउन है या यूजर्स के पास हमेशा इंटरनेट की सुविधा नहीं है, तो आपका तरीका बस ऐप का उपयोग करने के लिए इंटरनेट सर्वर पर इतनी बार चक्कर लगाने से ग्राहकों को निराश करेगा।
प्रियांक बोलिया

मैं पूरी तरह से सहमत हूँ। इसलिए मैंने कहा कि "यह मेरी अंतिम पंक्ति की तुलना में शायद अधिक आक्रामक है ..."। मैं ओपी को सबसे अच्छा समाधान दे रहा था जो मुझे लगा कि तकनीकी रूप से संभव है, ग्राहकों को खुश रखने के लिए सबसे अच्छा तरीका नहीं :)
rmeador

2010 की पहली तिमाही में (इस उत्तर के लिखे जाने के कई महीने बाद), गेम डेवलपमेंट कंपनी Ubisoft ने यह कोशिश की, और जाहिर तौर पर सर्वर-साइड घटकों पर भार इतना बड़ा था कि खेल अप्रभावी थे। एसडब्ल्यू की समग्र छाप: "स्थापित करने में परेशानी, ऑफ़लाइन, आक्रामक और अविश्वसनीय नहीं हो सकती "। तो, क्या आपको यह तय करना चाहिए कि सर्वर-साइड प्रोसेसिंग एक ऐसा तरीका है, जो सुनिश्चित करता है कि आप वास्तव में मांग करने के लिए तैयार हैं।
पिस्कोर ने

3

क्लाइंट पर चलने वाली किसी भी चीज को विघटित और क्रैक किया जा सकता है। विरोधाभास सिर्फ यह कठिन बना देता है। मैं आपके आवेदन को नहीं जानता, लेकिन 99% समय मुझे नहीं लगता कि यह प्रयास के लायक है।


3

किसी एप्लिकेशन को पूरी तरह से सुरक्षित करना असंभव है, क्षमा करें।



2

यह ध्यान रखें कि आपके उपयोगकर्ता का 99% + अपने निष्पादन योग्य की जांच करने में रुचि रखने वाला नहीं है कि यह कैसे काम करता है।

यह देखते हुए कि बहुत कम लोग कोशिश करने पर भी परेशान हो रहे हैं और सबसे अधिक पर्यवेक्षकों के आसपास काम किया जा सकता है, क्या यह आपके समय और प्रयास के लायक है?

आप अपने उत्पाद को बेहतर बनाने में समय लगाने से बेहतर होंगे ताकि अधिक से अधिक लोग इसका उपयोग करना चाहें।


2

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


2

अगर यह .NET में लिखा गया है और CIL में संकलित है , तो इसे प्रतिबिंबित किया जा सकता है। यदि सुरक्षा एक चिंता है और आपत्ति से बचना है, तो मैं आपके आवेदन को गैर-प्रबंधित भाषा का उपयोग करके लिखने की सलाह देता हूं, जो कि स्वभाव से, रिवर्स इंजीनियर से कठिन है।


2

यह सुनिश्चित करने के लिए कि आवेदन के साथ छेड़छाड़ नहीं की गई है, और यह कैसे सुनिश्चित करें कि पंजीकरण तंत्र रिवर्स इंजीनियर नहीं हो सकता है।

दोनों का एक ही बहुत सरल उत्तर है: अविश्वसनीय ग्राहकों को ऑब्जेक्ट कोड नहीं सौंपना, जैसे (स्पष्ट रूप से) आपके ग्राहक। चाहे आपकी मशीनों पर एप्लिकेशन को होस्ट करना संभव हो, यह केवल उस पर निर्भर करता है जो वह करता है।

यदि यह एक वेब एप्लिकेशन नहीं है , तो शायद आप SSH को X फॉरवर्डिंग के साथ एक एप्लिकेशन सर्वर (या रिमोट डेस्कटॉप कनेक्शन) के लिए अनुमति दे सकते हैं , मुझे लगता है, विंडोज के लिए) की अनुमति दे सकते हैं।

यदि आप निडर प्रकार के व्यक्तियों को ऑब्जेक्ट कोड देते हैं, और उन्हें लगता है कि आपका प्रोग्राम क्रैक करने में मजेदार हो सकता है, तो यह होगा । इसके आसपास कोई रास्ता नहीं।

यदि आप मुझ पर विश्वास नहीं करते हैं, तो एक हाई-प्रोफाइल एप्लिकेशन को इंगित करें जिसे क्रैक और पायरेटेड नहीं किया गया है।

यदि आप हार्डवेयर कुंजियों के साथ जाते हैं, तो यह उत्पादन को अधिक महंगा बना देगा और आपके उपयोगकर्ता इसके लिए आपसे घृणा करने वाले हैं। यह फर्श पर रेंगने और अपनी 27 अलग-अलग USB चीज़ों को अनप्लग करने के लिए एक वास्तविक कुतिया है क्योंकि सॉफ़्टवेयर निर्माता आप पर भरोसा नहीं करते हैं (मैं कल्पना करता हूं)।

ऐसे पैकेज हैं जो आपके EXE को एन्क्रिप्ट करेंगे और उपयोगकर्ता द्वारा इसका उपयोग करने की अनुमति देने पर इसे डिक्रिप्ट करेंगे

बेशक, इसके आस-पास का तरीका "कैन-आई-यूज़-इट" को क्रैक करना है ताकि यह हमेशा सच हो।

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


क्रैश बिंदु डिबग करना आसान नहीं है, और उस चेक को बायपास करने के लिए .NET में कोड को ओवरराइड करें। इसके अलावा, आप कैसे .NET में opcodes को बदल सकते हैं, क्या आप इस बारे में विस्तार से बता सकते हैं?
प्रियांक बोलिया

ओह। मेरे मन में C तरकीबें थीं; कहते हैं, सत्यापन समारोह का पता लें, उस चार सरणी में 10 पहले बाइट्स जोड़ें (फ़ंक्शन पॉइंटर डालें); किसी भी फंक्शन f को चुनें, और fptr में [पिछले ऋण का f] ऋण जमा करें। हमेशा f को * (fptr + उस राशि) के रूप में कॉल करें। Precompute "उस राशि"
जोनास कोल्कर

2

बस एक अच्छा आवेदन करें और एक सरल सुरक्षा प्रणाली को कोड करें। इससे कोई फर्क नहीं पड़ता कि आप क्या सुरक्षा चुनते हैं, यह उल्टा हो जाएगा ... इसलिए बहुत समय / पैसा बर्बाद न करें।


2

जब यह .NET की बात आती है, यदि आप विंडोज फॉर्म जारी कर रहे हैं एप्लिकेशन (या किसी भी एप्लिकेशन जहां क्लाइंट के पास पोर्टेबल निष्पादन योग्य फ़ाइल है) को यह क्रैक होने में सक्षम है।

यदि आप .NET से चिपके रहना चाहते हैं और अपने स्रोत कोड को लेने की संभावना को कम करना चाहते हैं, तो आप इसे एक वेबसर्वर के रूप में ASP.NET अनुप्रयोग के रूप में तैनात करने पर विचार कर सकते हैं , बजाय इसके कि यह Windows प्रपत्र अनुप्रयोग बना सके।


2

सच कहूँ तो, कभी-कभी हमें कोड को स्थगित करने की आवश्यकता होती है (उदाहरण के लिए, लाइसेंस कक्षाएं पंजीकृत करें और इसी तरह)। इस मामले में, आपकी परियोजना मुक्त नहीं है। IMO, आपको एक अच्छे पर्यवेक्षक के लिए भुगतान करना चाहिए।

जब आप इसे विघटित करने का प्रयास करते हैं तो Dotfuscator आपका कोड छुपाता है और .NET Reflector एक त्रुटि दिखाता है।


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