.NET

2011-10-06 18 views
10

में सीरियलाइजेशन और Obfuscation मेरे पास एक बाइनरी है जिसे मैं obfuscate और उपयोगकर्ताओं को हाथ से बाहर करना चाहता हूँ। आइए मान लें कि मैं शेल्फ को .NET बाइनरी फॉर्मेटर के उपयोग से डेटा को क्रमबद्ध करने के लिए अपने बाइनरी के एक unobfuscated संस्करण का उपयोग करता हूं। क्या हम obfuscated बाइनरी के साथ डेटा desiralize कर सकते हैं?.NET

मैं धारावाहिक डेटा के साथ obfuscated बाइनरी हाथ से बाहर करना चाहता हूँ। यदि का उत्तर उपर्युक्त प्रश्न है, तो मैं उपयोगकर्ताओं के बीच क्रमबद्ध डेटा साझा कर सकता हूं। अन्यथा मुझे प्रत्येक उपयोगकर्ता को व्यक्तिगत धारावाहिक डेटा प्रदान करना होगा।

+0

कृपया http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts/ देख –

+0

मैं downvote नहीं किया। –

उत्तर

3

प्रश्न को गलत करें। जब बाइनरी खराब हो जाती है तो आपको सावधान रहना होगा जब कक्षा के नाम/नामस्थान बदल जाएंगे। यह न केवल obfuscated/non-obfuscated binaries के बीच तोड़ देगा, बल्कि आम तौर पर विभिन्न संस्करणों के बीच भी टूट जाएगा।

यह उत्पाद स्पष्ट रूप से उन वर्गों को बहिष्कृत करता है जो http://www.ssware.com/cryptoobfuscator/obfuscator-net.htm (यह एक सिफारिश नहीं है, मैंने कभी भी उपयोग नहीं किया है - आपको इसका परीक्षण करना होगा और देखें कि लागत इसके लायक है या नहीं)।

इसके अलावा आप एक कस्टम धारावाहिक लिख सकते हैं कि आप कितना डेटा क्रमबद्ध कर रहे हैं।


[मूल उत्तर]

आप डेटा क्यों मुश्किल होता है? मैं केवल कल्पना कर सकता हूं कि इसे किसी को संपादित करने या किसी को सामग्री को पढ़ने से रोकने के लिए इसे रोकने के लिए है।

यदि किसी को इसे संपादित करने से रोकने के लिए है तो क्या मैं सुझाव दे सकता हूं कि आप डेटा का हैश शामिल करें, और उसके बाद इसे परेशान न करें।

यदि किसी को इसे पढ़ने से रोकने के लिए है तो मेरा सुझाव है कि आप धारावाहिक होने के बाद डेटा को एन्क्रिप्ट करें।

दोनों के बहुत सारे उदाहरण हैं लेकिन यदि आप एक उदाहरण चाहते हैं तो मुझे बताएं।

+0

सवाल obfuscated डेटा के बारे में नहीं है, लेकिन एक obfuscated बाइनरी के बारे में है। क्या आप इसके साथ डेटा को क्रमबद्ध कर सकते हैं और उसी प्रोग्राम के एक अप्रचलित संस्करण के साथ इसे deserialize कर सकते हैं? – tanascius

2

क्या आपने EazFuscator का उपयोग करने का प्रयास किया है? यह कुछ कस्टम नामकरण योजना के लिए आपको कुछ मामलों में सटीक नामों को संरक्षित करने की अनुमति देता है, उदाहरण के लिए, बाह्य विधियां। हालांकि यह .NET 4.0+ या WCF के नवीनतम संस्करणों के साथ अद्यतित नहीं है।

आप .NET Reactor का उपयोग भी कर सकते हैं, एक अन्य obfuscator सेवा जो क्षमताओं में EazFuscator और Dotfuscator दोनों से परे अच्छी तरह से चलाती है, लेकिन इसकी लागत होती है।

.NET रिएक्टर भी obfuscation के बजाय कोड एन्क्रिप्शन की अनुमति देता है, जैसा कि पहले सुझाया गया था समस्या को हल करेगा।

10

obfuscated बाइनरी और धारावाहिक डेटा के बीच एक भ्रम प्रतीत होता है।यदि आप डिफ़ॉल्ट धारावाहिकों का उपयोग करके अपनी कक्षा को क्रमबद्ध करते हैं, तो कक्षा क्रम और संपत्ति/फ़ील्ड मानों को उस धारावाहिक डेटा में स्ट्रिंग के रूप में उपयोग किया जाता है - इसलिए यदि आप अपनी बाइनरी को खराब करते हैं, तो उस बाइनरी का उपयोग करके क्रमबद्ध डेटा में obfuscated नाम और आपके गैर- समझ से परे द्विआधारी अपनी समझ से परे द्विआधारी द्वारा बनाई धारावाहिक डेटा को पढ़ने में सक्षम है अगर आप में से कोई कार्य नहीं होगा निम्नलिखित:

  1. उपयोग कक्षा अपने धारावाहिक वर्ग
  2. उपयोग सदस्य अपने धारावाहिक वर्ग
पर नाम बदलने पर नाम बदलने

यहां कुछ विकल्प हैं:

  1. मैं थोड़ी देर के लिए यह उपयोग नहीं किया है, लेकिन अगर आप द्विआधारी फ़ॉर्मेटर उपयोग कर रहे हैं, तो आप कैसे डेटा धारावाहिक में संग्रहित है नियंत्रित कर सकते हैं (ताकि आप इसे अपनी स्थिति में काम करता है सत्यापित करने के लिए चाहता हूँ) SerializationInfo और StreamingContext को संभालने वाले रचनाकारों को प्रदान करके फ़ाइल करें। यदि आप नमूने के लिए चारों ओर गुगल करते हैं तो आपको एक मिलना चाहिए (यहां मुझे एक मिला है: Serialize Objects to File)। आपको इस विधि का उपयोग करने पर बहुत सारे नए लेख नहीं मिल सकते हैं क्योंकि अधिकांश लोगों को यह बहुत दिलचस्प नहीं लगता है, हालांकि यह वास्तव में यह निर्दिष्ट करने का सबसे आसान तरीका है कि आपकी कक्षा कैसे बचाती है और बाइनरी फॉर्मेटर का उपयोग करके खुद को दोबारा तैयार करती है।

    कन्स्ट्रक्टर में आपको कार्यान्वित करना होगा, आप धारावाहिक प्राप्त करने के लिए कुंजी/मूल्य जोड़े के लिए तारों का उपयोग करते हैं - obfuscation में उन स्ट्रिंग को शायद एन्क्रिप्टेड (जो ठीक है) मिल जाएगा, और संपत्ति सेटिंग कथन का नाम बदल दिया जाएगा और सिंक में रहेंगे आपके obfuscated वर्ग/सदस्य नाम के साथ - तो यह obfuscated और गैर obfuscated विधानसभा दोनों के लिए काम करना चाहिए।

  2. कक्षा को बाहर करने के लिए एक और विकल्प जिसे आप obfuscation से क्रमबद्ध कर रहे हैं और केवल डेटा फ़ाइल एन्क्रिप्ट कर रहे हैं।

+0

यहां उपयोग की जाने वाली वास्तविक तकनीक को सीरियलाइजेशन सरोगेट्स कहा जाता है। शायद यह जोड़ना चाहें कि किसी भी मामले में कोई व्यक्ति धारावाहिक सरोगेट्स पर एक खोज करता है। –