इस बारे में सोचते हुए, कई अलग-अलग प्रकार के मोटापे हैं। चलो स्रोत कोड के obfuscation के साथ शुरू करते हैं, जो समय की पूरी बर्बादी है; इसके बिना समझना काफी कठिन है! तो आइए इसके बजाय वितरण पैकेज पर ध्यान केंद्रित करें, कि उपयोगकर्ता को कोड कैसे वितरित किया जाता है।
मामूली आक्षेप
कैजुअल यूजर को अपनी अंगुलियों को अंदर करने और चीजों को आसानी से तोड़ने से रोकने के लिए माइनर ऑब्सफेकशन मौजूद है। यह निर्धारित हैकर को बाहर नहीं रखता है, लेकिन यह सुनिश्चित करने में मदद करने में मूल्य है कि जिन चीज़ों का आप समर्थन करने के लिए कहें, वे वास्तव में आपके द्वारा वितरित की गई हैं। इस तरह की चीज़ के लिए आवश्यक सुरक्षा का स्तर वास्तव में काफी कम है; डिलीवरी पैकेज में केवल पठनीय और संपादन योग्य (विशेषज्ञ उपकरण के बिना) नहीं दिखता है और यह काफी अच्छा है।
जावास्क्रिप्ट मिनिफिकेशन इसका एक उदाहरण है, हालांकि इसे इस तरह से विपणन नहीं किया गया है। उनके दाहिने दिमाग में कोई भी एक जेएस फाइल को पढ़ना और संपादित करना नहीं चाहेगा, भले ही यह तकनीकी रूप से ऐसा करने के लिए संभव हो यदि आप निर्धारित / लगातार पर्याप्त हैं।
इसी तरह जावा अनुप्रयोगों को वितरित करने के साथ। एक निष्पादनीय JAR में कोड को अच्छी तरह से पैक करने से अधिकांश मूर्खता बंद हो जाएगी, भले ही शहर के पार्क में एक विनम्र "प्लीज कीप ऑफ द ग्रास" साइन हो।
यहां तक कि सी ++ कोड देते समय, निष्पादन योग्य से अनावश्यक प्रतीकों को छीनना मामूली आक्षेप के रूप में योग्य होने के लिए पर्याप्त होगा। कुंजी यह है कि उपयोगकर्ता के रूप में परिणाम को पढ़ना अजीब है, लेकिन इसे कंप्यूटर के रूप में निष्पादित करने के लिए कोई समस्या नहीं है।
प्रमुख आक्षेप
मेजर ओफिसकेशन निर्धारित और जानकार उपयोगकर्ता को बाहर रख रहा है। यह कुल हारने वाला खेल भी है; यदि कंप्यूटर इसे निष्पादित कर सकता है, तो एक व्यक्ति इसे अलग कर सकता है और यह काम कर सकता है कि यह क्या करता है। आप जो निकटतम प्राप्त कर सकते हैं वह प्रोग्राम को लगातार डिक्रिप्ट करने के लिए होगा, जो एक समय में एक ही समय में पूरी तरह से अलग चीज में बदल देता है। इस तरह की चीज़ बनाना बहुत मुश्किल होगा और फिर भी वास्तव में एक अच्छा हैकर को बाहर नहीं रखेगा (हालाँकि वे उस आत्म-संशोधन कोड को डिक्रिप्ट करने के लिए आवश्यक प्रयास की मात्रा में इसके अंत तक आपके साथ काफी पार हो जाएंगे)।
अन्य समाधानों के संदर्भ में सोचना बेहतर है। उदाहरण के लिए, आप कोड के "क्राउन ज्वेल्स" को उन सर्वरों पर रख सकते हैं जिन्हें आप नियंत्रित करते हैं और केवल सर्विस कॉल को ही इसकी अनुमति देते हैं, जिससे क्लाइंट को अनिवार्य रूप से फ्री गिववे मिलता है जो मूल्यवान बिट्स का फ्रंट-एंड है। या आप अधिक अनुबंध / कानूनी मार्ग पर जा सकते हैं, और केवल निष्पादक संगठनों को सौंप सकते हैं जो औपचारिक रूप से आपके कोड के अंदर प्रहार नहीं करने के लिए सहमत होते हैं या यदि वे ऐसा करते हैं तो आपको क्षतिपूर्ति करते हैं (ताकि एनडीए का कुछ प्रकार हो)। इसका उद्देश्य हैकर को हैक नहीं करने के लिए एक मजबूत प्रोत्साहन बनाना होगा, और उपयोगकर्ताओं को समझौते से बाध्य नहीं होने वाले किसी भी हैकर्स से कोड को दूर रखना होगा।
लेकिन आपको यह नहीं मानना चाहिए कि आपका कोड कभी भी क्रैक नहीं हो सकता है। वर्चुअलाइजेशन के साथ, निष्पादन के किसी भी कार्यक्रम की स्थिति की जांच की जा सकती है और ट्रैक किया जा सकता है, और कुछ भी जो हारने की कोशिश करता है (जैसे, बाहरी समय स्रोत के लिए घड़ी की ट्रैकिंग) हैकर्स की तुलना में वैध उपयोगकर्ताओं के लिए समस्या पैदा करने की अधिक संभावना होगी। (डीआरएम का इतिहास देखें कि कैसे सूचना के बहुत निर्धारित प्रकाशक अपने सिस्टम को सुरक्षित नहीं रख सकते हैं क्योंकि कोड उनके विरोधियों के हाथों में है।) वास्तव में कानूनी उपयोगकर्ताओं को खुश करने पर ध्यान देना बेहतर है। ग्राहकों को सही तरीके से संतुष्ट करने में अतिरिक्त धन की तुलना में सामयिक दरार से नुकसान कुछ भी नहीं होगा।