ठीक है, मैं डेस्कटॉप एप्लिकेशन में लाइसेंस सत्यापन कोड के बारे में बात कर रहा हूं, उदा। एक विधि bool ValidateLicense(string licenseCode)
। बेशक, किसी भी सुरक्षा योजना को एक कुशल और निर्धारित क्रैकर द्वारा इंजीनियर किया जा सकता है। हालांकि, मैं यह रोकना चाहता हूं कि कुछ बुनियादी प्रोग्रामिंग ज्ञान वाले किसी भी व्यक्ति को कुछ मिनटों में एक कीजेन बनाने के लिए परावर्तक का उपयोग कर सकते हैं।.NET प्रोग्राम तर्क (उचित रूप से) गुप्त कैसे रखें?
संभावित दृष्टिकोण
अंधेरा करना। मेरी समझ यह है कि obfuscating एक प्रदर्शन ओवरहेड का कारण बनता है और (वैध) डीबगिंग बाधा डाल सकता है। ऐसे में ऐसे उपकरण हैं जो केवल चयनित विधियों को खराब करने की अनुमति देते हैं?
ngen'ed असेंबली या अप्रबंधित DLL पर विधि को ले जाएं। लेकिन क्या यह डीएलएल को बदलने की निमंत्रण नहीं है? कोई विचार यह कैसे रोकें (पढ़ें: हमलावर के लिए थोड़ा कठिन बनाओ)?
अन्य?
पुनश्च: प्रश्न स्पष्ट रूप से Protect .NET code from reverse engineering? से संबंधित है 1. करने के लिए वहाँ से विचार डाल करने के लिए
अद्यतन
अभ्यास करने के लिए एक पहला कदम कहानियो को निश्चित रूप से सत्यापन विधि का नाम बदलने की कोशिश कर रहा होगा। (धन्यवाद, जोनाथन)
से 2. एप्लिकेशन मानते हुए Win32 API विधियों का उपयोग करता है, कोई एक अप्रबंधित DLL के माध्यम से कॉल को फिर से रूट कर सकता है जिससे इसे एप्लिकेशन का एक अभिन्न हिस्सा बना दिया जा सके। विधि हस्ताक्षर के साथ झुकाव (उदा। नाम बदलें, स्वैप पैरामीटर) इससे कम स्पष्ट हो जाएगा। क्या आपको लगता है कि सहज दोषों को न्यायसंगत माना जाता है?
से 3. प्रमाणीकरण विधि वितरित न करें। इसे अपने सर्वर पर रखें और दूरस्थ रूप से कॉल करें, यानी ऑनलाइन सत्यापन का उपयोग करें (धन्यवाद, डेविड हेडलंड)
हमने ऑनलाइन सक्रियण के साथ, एक सरल लाइसेंस कुंजी तंत्र का उपयोग करके और एक सरल लाइसेंस कुंजी तंत्र का उपयोग करने का निर्णय लिया। बेशक यह "क्रैक" हो सकता है (और वास्तव में यह था)। हमारी गणना निम्नानुसार है: जो समुद्री डाकू संस्करण का उपयोग करते हैं, वे कभी भी उपकरण नहीं खरीदते थे, साथ ही हमें अपने सॉफ़्टवेयर का कुछ और वितरण मिलता है। सही नहीं है, लेकिन अच्छे उपकरणों को लिखने के लिए (सुरक्षा) "सुरक्षा" के साथ सॉफ़्टवेयर की सुरक्षा के प्रयास की तुलना में काफी अच्छा है। –
एक अस्पष्ट वीएम, ऑनलाइन सत्यापन का संयोजन और अपने कोड के कुछ आवश्यक (लेकिन प्रदर्शन-महत्वपूर्ण) भागों के लिए ऑनलाइन सत्यापन सेवा द्वारा प्रदान किए गए यादृच्छिक वीएम कोड का उपयोग करें। या यहां तक कि ऑनलाइन सेवा में आवश्यक कार्यक्षमता (केवल सत्यापन नहीं) के कुछ हिस्सों को स्थानांतरित करें। –