क्या मुझे अपने .NET कोड को खराब करने के बारे में चिंतित होना चाहिए?

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

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

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

0
ro fr bn

9 उत्तर

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

0
जोड़ा
@marcolopes: निजी कुंजी को एप्लिकेशन के साथ कभी वितरित नहीं किया जाना चाहिए ... आप शायद सार्वजनिक कुंजी का मतलब है ... और पासवर्ड धोया जाना चाहिए, वैसे भी स्पष्ट पाठ नहीं ...
जोड़ा लेखक Igor Popov, स्रोत
सिवाय इसके कि सॉफ़्टवेयर में संवेदनशील डेटा है जो चाहिए संरक्षित किया जाना चाहिए (जैसे निजी कुंजी और पासवर्ड)
जोड़ा लेखक marcolopes, स्रोत
निजी कुंजी स्टोर करने के लिए आपको अन्य समाधान क्या है? सर्वर का उपयोग? और यदि कोई इंटरनेट कनेक्शन नहीं है?
जोड़ा लेखक marcolopes, स्रोत

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

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

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

0
जोड़ा

कोई नया obfuscation, लेकिन 1.1 के बाद से संकलक चाल के बहुत सारे

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

0
जोड़ा

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

अच्छा सवाल हालांकि इसके बारे में कुछ और जानना चाहता हूं (मैं वर्तमान में नहीं obfuscate करता हूं)।

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

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

0
जोड़ा
एनजीन किसी भी तरह से परावर्तक को प्रभावित नहीं करेगा। एनजीएन उपकरण का उपयोग सिस्टम से मूल असेंबली को नहीं हटाता है।
जोड़ा लेखक lubos hasko, स्रोत

@ रोब कूपर

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

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

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

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

0
जोड़ा
"मुझे लगता है कि किसी भी इंस्टॉलेशन पैकेज से एमएसआई या सीएबी फाइल जैसे कच्चे फाइलों को निकालना संभव है।" - हां: एमएसआई पैकेज से फ़ाइलों को निकालने के लिए superuser.com/ प्रश्न/307,678/& hellip;
जोड़ा लेखक CAD bloke, स्रोत

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

There are services that offer true encryption, such as SLPS from Microsoft. See http://www.microsoft.com/slps/default.aspx

0
जोड़ा
शानदार टिप्पणी: 'obfuscation आकस्मिक पर्यवेक्षक को रोकता है, लेकिन क्या आपका व्यवसाय वास्तव में ऐसे लोगों द्वारा धमकी दी जाती है?'
जोड़ा लेखक Lawrence Wagerfield, स्रोत
विकास को कठिन बनाने के बारे में अच्छी बात है।
जोड़ा लेखक Lucas B, स्रोत

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

0
जोड़ा
... अगर हम WinForms ऐप्स के बारे में बात करते हैं तो यह एक समस्या का थोड़ा सा हो सकता है।
जोड़ा लेखक JRoppert, स्रोत

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

0
जोड़ा

सहमत हैं, ज्यादातर लोग जो कुछ भी कोड कैसे जानते हैं, उन्हें आपके कोड को चोरी करने की आवश्यकता नहीं है!

0
जोड़ा