2010-03-30 6 views
6

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

जेएस स्क्रिप्ट एक बात है, लेकिन एसओए परियोजनाओं के बारे में क्या है जिनके पास आईपी (बौद्धिक संपदा) में लाखों निवेश किए गए हैं। मुझे .NET, और विशेष रूप से सी # पसंद है, लेकिन मुझे हाल ही में सवाल का जवाब देना पड़ा "अगर हम अपने संकलित कार्यक्रम को अपने ग्राहकों को देते हैं, तो क्या उनके डेवलपर इसे इंजीनियर कर सकते हैं?" मैं कोड को खराब करने के अपने रास्ते से बाहर गया था, लेकिन मुझे पता था कि यह कोड पर जाने के लिए किसी अन्य निर्धारित सी # डेवलपर के लिए इतना अधिक नहीं लेगा।

तो मैं ईमानदारी से सवाल उठाता हूं, क्या नेट कोड सुरक्षित करना असंभव है?

  1. यहां तक ​​कि नियमित रूप से मूल निष्पादनयोग्य उल्टा हो सकता है, लेकिन हर डेवलपर कौशल यह करने के लिए सक्षम होना चाहिए:

    विचार मैं के रूप में इस प्रकार है। .NET असेंबली की तुलना में मूल निष्पादन योग्य को अलग करना बहुत मुश्किल है।

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

मैं नेट को दस्तक नहीं दे रहा हूं, लेकिन मुझे कुछ यथार्थवादी उत्तर चाहिए, धन्यवाद, प्रश्नपरक व्यक्ति और समुदाय के रूप में चिह्नित प्रश्न!

+2

मुझे .NET के बारे में कुछ भी पता नहीं है, लेकिन मुझे पता है कि एक जटिल परियोजना पर नए डेवलपर्स को तेजी से लाने के लिए बहुत मुश्किल है, भले ही आप उनकी मदद करने के लिए कर सकें। बड़ी परियोजनाओं में * मृत्यु हो गई है * क्योंकि बहुत से डेवलपर्स एक बार में चले गए; जब संस्कृति गुम हो जाती है, तो कोड हाइरोग्लिफिक्स के दस लाख पृष्ठों की तरह होता है। एक प्रतियोगी एक चाल या दो चुरा सकता है, लेकिन वे आपके कोड के * व्यवहार * को देखकर और इसे स्क्रैच से कार्यान्वित करने के बारे में भी कर सकते हैं। – Beta

उत्तर

10

सभी कोड रिवर्स इंजीनियर हो सकते हैं।

.NET इसके लिए बार को कम करता है (केवल प्रतिबिंबक कोशिश करें!), लेकिन obfuscation इसे फिर से उठाता है। एक अच्छा obfuscator आपके कोड को रिवर्स इंजीनियरिंग से एक बहुत समर्पित, प्रेरित व्यक्ति लेकिन सभी को रोकने के लिए पर्याप्त बार बढ़ाएगा।

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

भी, परिकल्पित है, अगर वे रिवर्स सब कुछ इंजीनियर, एक जटिल परियोजना के साथ कर सकता है, वे साल के पीछे वास्तव में बाजार में एक प्रतियोगी लाभ के साथ कुछ देने में होगा ...

+1

परावर्तक पर सहमत, सही कारणों के लिए महान उपकरण! आपने बताया कि आप एक अच्छा obfuscater का उपयोग करें, क्या आप एक लिंक सहित दिमाग में दिमाग होगा? –

+1

डॉटफस्केटर वह है जिसे मैंने सबसे ज्यादा सुना है ... http://www.preemptive.com/products/dotfuscator/overview – tbischel

+0

डॉटफुस्केटर सबसे आम है, और एक बहुत अच्छा है। वहाँ बहुत सारे हैं, हालांकि - .NET Obfuscator के लिए कोई भी खोज एक गुच्छा बदल जाएगी ... –

1

किसी भी कोड reverse- हो सकता है इंजीनियर। हां, अत्यधिक अनुकूलित सी ++ की तुलना में .NET या Java में यह आसान है, लेकिन जावास्क्रिप्ट या PHP से कम है। Obfuscation कमजोरता को कम करने की दिशा में एक लंबा रास्ता तय करता है, लेकिन वास्तविकता यह है कि एक निर्धारित रिवर्स इंजीनियर आपके हाथों में कोड होने के बाद अपने रहस्यों को ढूंढने जा रहा है, इससे कोई फर्क नहीं पड़ता कि आपने इसे छुपाने के लिए क्या किया है। आप जो कुछ भी कर रहे हैं वह सबसे अच्छा है, जिससे उसे अधिक परेशानी हो रही है।

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

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

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