2008-12-05 9 views
17

यह एक समस्या है जिसे हम सभी को किसी बिंदु पर विचार करना है।छोटे विक्रेताओं के लिए सॉफ्टवेयर सुरक्षा

कई सालों के बाद और कई दृष्टिकोण मैं सामान्य रूप से स्टेटरमेंट के साथ सहमत हूं: "कुछ सौ से अधिक लोगों द्वारा उपयोग किए जाने वाले किसी भी संरक्षित सॉफ़्टवेयर के लिए, आप एक क्रैक संस्करण प्राप्त कर सकते हैं। अब तक, प्रत्येक सुरक्षा योजना हो सकती है साथ छेड़छाड़।" Does your employer enforce the use of anti-piracy software?

आगे, हर बार जब मैं इस विषय के बारे में पोस्ट करता हूं, तो कोई मुझे याद दिलाएगा; "सबसे पहले, इससे कोई फर्क नहीं पड़ता कि आप किस प्रकार की सुरक्षा करेंगे, वास्तव में समर्पित क्रैकर, अंततः सभी सुरक्षात्मक बाधाओं से गुजरेंगे।" What's the best value for money c# code protection for a single developer

इसलिए इन दो व्यापक रूप से सही अस्वीकरण से बचने के लिए, "सुरक्षा" के बारे में बात करने दें!

मुझे अभी भी लगता है कि छोटे ऐप्स के लिए जो एक कुशल क्रैकर के समय और ध्यान को वारंट करने की संभावना नहीं है, सुरक्षा एक सार्थक अभ्यास है।

ऐसा लगता है कि आप क्या करते हैं, इससे कोई फर्क नहीं पड़ता कि क्रैकर एप्लिकेशन को पैच करके आईएफ स्टेटमेंट (जेएमपी) के परिणाम को स्विच कर सकता है, तो दुनिया में सभी पासवर्ड और डोंगल मदद नहीं करेंगे। http://www.oreans.com/codevirtualizer.php मैं इस उत्पाद के साथ बहुत खुश हैं:

तो मेरे दृष्टिकोण की तरह वर्चुअलाइजेशन का उपयोग कर उत्पादों के साथ कोड अंधेरा करना रहा है। मेरे ज्ञान के लिए यह हार गया है। मैं निष्पादन योग्य को पीईकंपैक्ट के साथ भी संपीड़ित कर सकता हूं क्या किसी और के पास इसका अनुभव है?

EXEcryptor http://www.strongbit.com/news.asp साथ लेकिन समस्याओं कुछ भी नहीं था यहां तक ​​कि साइट का उपयोग करने के लिए एक सिरदर्द है। किसी भी WMI कॉल करते समय संकलित ऐप्स क्रैश हो जाएंगे।

यह दृष्टिकोण आप की जाँच कहानियो के साथ कोड के छोटे हिस्से के चारों ओर है और इस तरह की रक्षा सुरक्षा की अनुमति देता है आदि

मैं तो यह कोई मतलब नहीं है के रूप में आवेदन सर्वर नियमित रूप से से डेटा की जरूरत है, ऑनलाइन प्रमाणीकरण दृष्टिकोण का प्रयोग करें उपयोगकर्ता के लिए विस्तारित अवधि के लिए लाइन का उपयोग करने के लिए। परिभाषा के अनुसार, ऐप उस बिंदु पर बेकार है, भले ही यह क्रैक हो।

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

मैं संकलित ऐप का हैश भी उपयोग करता हूं और इसे देखने के लिए लॉन्च पर जांचता हूं कि एक बिट बदल गया है या नहीं, फिर ऐप के अंदर से एक फ़ाइल को एक फ़ाइल (एक पढ़ने के लिए LOCK के साथ) खोलें ताकि इसे किसी एक बार बदलने से रोका जा सके। का शुभारंभ किया।

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

मेमोरी डंप के खिलाफ सुरक्षा के लिए, मैं एक साधारण पाठ obfuscation तकनीक (जैसे प्रत्येक चरित्र XOR की तरह) का उपयोग करता हूं, यह मेरिएबल में सादे पाठ डेटा को चर से अलग करने के लिए कठिन बनाता है और आगे।

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

लेकिन इन सभी तकनीकों के साथ, यदि कुंजी या प्रारंभिक वेक्टर को स्मृति से हटाया जा सकता है, या IF कथन को छोड़ दिया जा सकता है, तो सब कुछ बर्बाद हो जाता है।

मैं एक सशर्त बयान के बजाय एक स्विच स्टेटमेंट का उपयोग करता हूं। फिर मैं एक दूसरा फ़ंक्शन बनाता हूं जो वास्तव में वांछित कार्य करने वाले फ़ंक्शन के बजाय एक मृत अंत होता है।

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

आप किस तकनीक का उपयोग करते हैं?

(यह एक धागा कुछ को लागू करने की योग्यता के आधार पर बहस नहीं है। यह उन है कि कुछ करने के लिए फैसला किया है के लिए डिज़ाइन किया गया है)

+0

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

उत्तर

11

मैं xsl से असहमत हूं।

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

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

हम यह सुनिश्चित करने के लिए बहुत सावधान हैं कि सुरक्षा - जो घर उगाया गया है - मान्य उपयोगकर्ताओं के लिए जितना संभव हो उतना अविभाज्य है, और इस अंत तक हम शेल्फ समाधान को बंद करने में कभी भी विचार नहीं करेंगे जो इससे प्रभावित हो सकता है ।

+1

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

+2

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

8

मैं व्यक्तिगत रूप से कोड तकनीक discussed here का उपयोग करें। इन चालों को आपके वैध अंत उपयोगकर्ताओं के लिए जीवन को और अधिक कठिन बनाये बिना असुविधाजनक समुद्री डाकू का लाभ है

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

पैट्रिक मैकेंज़ी का एक अच्छा निबंध है जहां वह discusses some of the threats है, जिसमें 4 प्रकार के संभावित ग्राहक का विश्लेषण शामिल है। मैं आपके व्यापार मॉडल की सुरक्षा के बारे में विकल्प बनाने से पहले अपने ऐप के लिए इस खतरे के विश्लेषण को करने की सलाह देता हूं।

+0

+1 - बहुत जानकारीपूर्ण! –

11

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

इस अनुभव ने मुझे अपने प्रतिलिपि को प्राथमिक प्रतिलिपि सुरक्षा से अधिक कुछ भी करने की कोशिश करने के लिए काफी छोड़ दिया।

+0

मुझे लगता है कि वहां मूल जादू टेक्स्टबॉक्स का एक धार है :) –

+0

यदि नहीं, तो इसे फिर से लिखना मुश्किल नहीं होगा, शायद इस बार .NET में। :) – MusiGenesis

1

मैंने उपयोग किया है।अच्छे परिणामों के साथ अतीत में नेट रिएक्टर - http://www.eziriz.com/

मुझे इस उत्पाद के बारे में क्या पसंद आया यह है कि आपको बहुत अच्छी सुरक्षा के लिए कोड को खराब करने की आवश्यकता नहीं थी।

+1

क्रैकर्स – mmcdole

+0

द्वारा .NET रिएक्टर को अक्सर अनपॅक किया जाता है, उन्हें इस कंपनी से कोई समर्थन नहीं है, सभी समर्थन ईमेल अनुत्तरित हैं। –

6

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

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

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

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

3

xsl, यह मानकों में निर्मित कई लोगों के साथ एक बहुत संकीर्ण दृष्टिकोण है।

मुझे यह स्पष्ट लगता है कि आपके नियंत्रण में किसी सर्वर से कुछ वितरित करने पर निर्भर कोई भी ऐप हमारे पास वैध खाता रखने का एक अच्छा काम करने में सक्षम होना चाहिए!

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

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

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

4

वाले कुछ लिंक से:

अवधारणा मैं समझाने की कोशिश की कि मैं क्या "दरार प्रसार" कहते हैं। इससे कोई फर्क नहीं पड़ता कि आपके आवेदन के लिए एक दरार (या keygen, या समुद्री डाकू धारावाहिक, या जो भी) मौजूद है। क्या मायने रखता है कि कितने लोगों को दरार तक पहुंच है।

सीरियल नंबर कहां/कब जांचें: मैं स्टार्टअप पर एक बार जांचता हूं।बहुत से लोग कहते हैं कि "सभी प्रकार के स्थानों में जांचें", जिससे किसी को चेक को अलग करके क्रैक करना मुश्किल हो जाता है। यदि आप क्रैकर के लिए विशेष रूप से गंदा होना चाहते हैं, तो इनलाइन कोड का उपयोग करके सभी प्रकार के स्थानों की जांच करें (यानी इसे सभी को SerialNumberVerifier.class में बाहरी न करें) और यदि संभव हो तो इसे बहु-थ्रेडेड और पहचानने में कठिनाई होती है जब यह विफल हो जाती है भी लेकिन यह केवल क्रैक बनाने के लिए कठिन बनाता है, असंभव नहीं, और याद रखें कि आपका लक्ष्य आमतौर पर क्रैकर को हराने के लिए नहीं है। क्रैकर को हराकर आपको पैसे की सराहनीय राशि नहीं मिलती है। आपको बस अधिकांश मामलों में आकस्मिक उपयोगकर्ता को हराने की आवश्यकता है, और आकस्मिक उपयोगकर्ता को डीबगर तक पहुंच नहीं है और न ही इसका उपयोग कैसे किया जाए।

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

"दिलचस्प" या "चुनौतीपूर्ण" सुरक्षा न बनाएं। अकेले बौद्धिक चुनौती के लिए कई क्रैकर्स क्रैक। अपनी सुरक्षा को दरार करने के लिए कठिन बनाओ लेकिन जितना संभव हो उबाऊ हो।

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

+3

मेरा तथ्य यह है कि आप अपने उपयोगकर्ताओं को "विरोधी" के रूप में संदर्भित कर रहे हैं, यह इंगित करना चाहिए कि आपने जिस मार्ग से भटक गए हैं, उससे कितना दूर है। :-( –

+4

उपयोगकर्ता जिन्होंने सॉफ़्टवेयर चोरी किया है, वे परिभाषा के अनुसार हैं ... –

संबंधित मुद्दे