2008-08-15 23 views
24

मुझे यकीन है कि एसओ पर कई पाठकों ने अपने .NET कोड को कम करने के लिए लुटज़ रोडर के .NET परावर्तक का उपयोग किया है। मुझे आश्चर्य हुआ कि हमारे संकलित असेंबली से हमारे स्रोत कोड को कितना सटीक रूप से बदला जा सकता है।क्या मुझे अपने .NET कोड को obfuscating के बारे में चिंतित होना चाहिए?

मुझे यह जानने में दिलचस्पी होगी कि आप में से कितने obfuscation का उपयोग करते हैं, और किस तरह के उत्पादों के लिए?

मुझे यकीन है कि यह एक विशेष ग्राहक के लिए bespoke बनाया गया है कि किसी चीज के विपरीत इंटरनेट पर डाउनलोड करने के लिए एक .NET अनुप्रयोग के लिए एक और अधिक महत्वपूर्ण मुद्दा है।

उत्तर

19

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

+0

सिवाय इसके कि सॉफ़्टवेयर में संवेदनशील डेटा है, ** ** ** को सुरक्षित रखना चाहिए (जैसे निजी कुंजी और पासवर्ड) – marcolopes

+2

@marcolopes: निजी कुंजी को कभी भी एप्लिकेशन के साथ वितरित नहीं किया जाना चाहिए ... आप शायद सार्वजनिक कुंजी का मतलब है ... और पासवर्ड धोया जाना चाहिए, वैसे भी स्पष्ट पाठ नहीं ... –

+1

निजी कुंजी स्टोर करने के लिए आपको अन्य समाधान क्या है? सर्वर का उपयोग? और यदि कोई इंटरनेट कनेक्शन नहीं है? – marcolopes

3

मेरे लिए आसान - यदि आपको बौद्धिक संपदा की रक्षा करने की आवश्यकता है - obfuicate - अगर नहीं।

सही उपकरण के साथ आसान करना।

2

मुझे लगता है कि कुछ हद तक हम सब अपने आईपी :)

अच्छा प्रश्न के बारे में चिंता करनी चाहिए हालांकि इसके कुछ के रूप में मैं के बारे में अधिक जानने के लिए उत्सुक हूँ (मैं वर्तमान में नहीं अंधेरा करते हैं)।

काम पर मेरे प्रबंधक के साथ कुछ चर्चा करने के बाद, उन्होंने कहा कि वह परेशान नहीं है, लेकिन एनजीईएन इंस्टॉल पर है, गारंटी है कि आपके असेंबली पर काम करने वाले परावर्तक को रोकने के लिए पर्याप्त होना चाहिए, लेकिन मुझे नहीं पता कि यह सच है या नहीं और किस हद तक है, इसलिए यह सुसमाचार :)

अच्छा सवाल :) +1

+4

एनजीन किसी भी तरह से परावर्तक को प्रभावित नहीं करेगा। एनजीएन उपकरण का उपयोग सिस्टम से मूल असेंबली को नहीं हटाता है। –

7

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

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

बेशक वह अभी भी ऐसा करने में सक्षम है अगर वह सॉफ़्टवेयर का उपयोग करता है, लेकिन उसके लिए इसे आसान बनाने का कोई कारण नहीं है।

5

कोई नई कहानियो, लेकिन जब से 1.1

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

4

@Rob कूपर

काम पर मेरी प्रबंधक के साथ कुछ विचार विमर्श किया है, उन्होंने कहा कि वह अंधेरा जाहिरा कि रोक परावर्तक काम करने के लिए पर्याप्त होना चाहिए नहीं करता है, लेकिन स्थापित पर NGEN करता है, अपने विधानसभाओं पर है, लेकिन मुझे पता नहीं है अगर यह सच है और किस हद तक है, तो सुसमाचार :)

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

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

NGEN प्रदर्शन, नहीं सुरक्षा के लिए है, और disassembly रोकने के लिए या तो यह और भी थोड़ा अधिक कठिन बनाने के लिए कुछ नहीं करता है।

+0

"मुझे लगता है कि किसी भी इंस्टॉलेशन पैकेज से एमएसआई या सीएबी फ़ाइल जैसे कच्चे फाइलों को निकालना संभव है।" - हाँ: http://superuser.com/questions/307678/how-to-extract-files-from-msi-package –

10

याद रखें, obfuscation एन्क्रिप्शन नहीं है। आईएमएचओ, अगर कोई आपके कोड को रिवर्स-इंजीनियरिंग में मूल्य समझता है, तो वे इसे करेंगे। प्रबंधित कोड या मूल कोड के लिए यह सच है, obfuscated या नहीं। निश्चित रूप से, obfuscation आकस्मिक पर्यवेक्षक को रोकता है, लेकिन क्या आपका व्यवसाय वास्तव में ऐसे लोगों द्वारा धमकी दी जाती है? मैंने देखा है कि हर .NET obfuscation विधि आपके जीवन को एक डेवलपर के रूप में कठिन बनाता है।

जैसे Microsoft से SLPS के रूप में सेवाओं की पेशकश सच एन्क्रिप्शन, कर रहे हैं। देखें http://www.microsoft.com/slps/default.aspx

+1

विकास को कठिन बनाने के बारे में अच्छी बात है। –

+0

शानदार टिप्पणी: 'obfuscation आकस्मिक पर्यवेक्षक को रोकता है, लेकिन क्या आपका व्यवसाय वास्तव में ऐसे लोगों द्वारा धमकी दी जाती है?' –

0

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

+0

... अगर हम WinForms ऐप्स के बारे में बात करते हैं तो समस्या का थोड़ा सा हो सकता है। – JRoppert

2

हम "गैर सार्वजनिक" अनुप्रयोगों के लिए कहानियो का उपयोग नहीं करते लेकिन हम सार्वजनिक उपलब्ध अनुप्रयोगों के लिए इसका इस्तेमाल करते हैं। Obfuscated ऐप में अत्यधिक परिष्कृत कोड शामिल हैं जो हमें लिखने के लिए बहुत अधिक समय लेता है और यही वजह है कि मुझे लगता है कि कम से कम उस मामले में obfuscation एक जरूरी है।

0

सहमत, ज्यादातर लोगों को जो अपने कोड चोरी करने के लिए की जरूरत नहीं है यहां तक ​​कि एक छोटा सा कोड करने के लिए पता है!

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

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