2011-01-10 7 views
6

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

(मैं एक obfuscator खरीदने के लिए नहीं जा रहा हूँ। मैं डॉटफुस्केटर के मुक्त संस्करण का उपयोग कर रहा हूं जो तारों को खराब नहीं करता है और यह ठीक है, लेकिन मैं केवल एक स्ट्रिंग को अपनाने के लिए भुगतान संस्करण नहीं खरीदूंगा (यदि भुगतान संस्करण obfuscate तारों की स्थिति में मुझे परवाह नहीं है)।

(और मैं अभी भी 30 दिन का परीक्षण करना चाहता हूं। मैंने पहले से ही अन्य विकल्पों के बारे में बहुत कुछ पढ़ा है जैसे फ्री-लाइट संस्करण और सामान कि 30 दिनों का संस्करण मेरे मामले में सबसे अच्छा विकल्प है।)

+0

कोई भी जो आईएल के बारे में चाटना जानता है, वह एन्क्रिप्शन कुंजी लिखने के लिए कोड इंजेक्शन करके मिनटों के मामले में ऐसी कोई सुरक्षा तोड़ने में सक्षम होगा। ईमानदारी से, इससे कोई फर्क नहीं पड़ता कि आप इसे कितना जटिल बनाते हैं, इससे कोई फर्क नहीं पड़ता। बस कुछ ऐसे उपयोगकर्ता के साथ जाएं जो औसत उपयोगकर्ता हारने में सक्षम नहीं होगा। – cdhowie

+3

मेरे "मुझे पता है" कितना बोल्ड और इटालिक होना चाहिए? – Juan

+0

मैं बस यह इंगित कर रहा हूं कि आपको वास्तव में किसी भी तरह की डुप्लिकेट-एन्क्रिप्टेड कुंजी या उसके जैसा कुछ भी नहीं चाहिए। आपका औसत उपयोगकर्ता यह भी नहीं जानता कि वास्तव में एन्क्रिप्शन क्या है। सादा पाठ में तारीख छोड़ने की तरह बस कुछ सरल और एक रहस्य के साथ संगत तारीख की एक क्रिप्टोग्राफिक हैश लिखना पर्याप्त होना चाहिए। – cdhowie

उत्तर

3

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

आखिरकार, यदि आपका ऐप मौका से, एक WP7 ऐप था, तो डॉटफुस्केटर का पूरा वाणिज्यिक संस्करण बिना किसी शुल्क के उपलब्ध है (और स्ट्रिंग एन्क्रिप्शन, नियंत्रण प्रवाह इत्यादि शामिल है) www.preemptive.com/ पर windowsphone7.html

+0

ओपी ने obfuscator शक्तियों की राय के बारे में नहीं पूछा - ** उन्होंने पूछा कि वे क्यों काम करते हैं। ** मुझे यकीन नहीं है कि यह स्वीकार्य उत्तर क्यों था, क्योंकि यह पूरी तरह से ऑफ-विषय है। * उत्तर देने के बाद * यह एक अच्छा अनुपूरक होगा, लेकिन मुख्य उत्तर के रूप में नहीं। –

4

आपको यह भी विचार करना होगा कि क्या होता है जब उपयोगकर्ता आपकी सभी रजिस्ट्री कुंजियों को हटाते हैं और 30 दिनों के लिए अपने ऐप को पुनः इंस्टॉल करते हैं। "सर्वश्रेष्ठ" विकल्प पंजीकरण कुंजी उत्पन्न करना है जिसमें उनकी तिथि है। यदि वे आपके आवेदन को पुनर्स्थापित करने का निर्णय लेते हैं तो उन्हें एक वैध पंजीकरण कुंजी का उपयोग करना होगा और उनके पास केवल एक ही पुरानी तारीख होगी।

तो फिर तुम सुनिश्चित करें कि वे नई चाबी आदि

कुछ भी इस से भी अधिक decompiling और आपके आवेदन recompiling द्वारा धोखा दिया जा सकता के लिए पंजीकरण नहीं रखते करना है। एक तिथि

में

बिल्डिंग मैं कुछ उपयोगकर्ताओं को कंप्यूटर की सुविधाओं की पहचान करने के साथ एक छोटे से अधिक जटिल है। हालांकि मैं एक सरल तरीका समझाऊंगा। ध्यान रखें कि अगर वे वास्तव में decompile/recompile करना चाहता था यह काम नहीं करेगा, लेकिन मैं कहूंगा कि यह काफी मुश्किल से गिरता है।

  • अपने उत्पाद के लिए एक एन्क्रिप्शन कुंजी उत्पन्न करें।
  • इसे बाइट में परिवर्तित करें [] इसलिए यह स्ट्रिंग नहीं है। (लेकिन यह भी याद रखें कि "अस्पष्टता सुरक्षा नहीं है", लेकिन हम वास्तव में सभी लाइसेंस योजना समाप्त करने की कोशिश नहीं कर रहे हैं)
  • उपयोगकर्ताओं को पूरा नाम लें और इसे वर्तमान दिनांक में सम्मिलित करें और यह बताएं कि उनके लाइसेंस वैध होने की संख्या। आप अंतिम स्ट्रिंग के रूप में 01/10/2011 30 Andrew Finnell के साथ समाप्त हो सकते हैं।
  • उस स्ट्रिंग को एन्क्रिप्ट करें और इसे बेस 64 में परिवर्तित करें।

यह आपकी नई लाइसेंस कुंजी है। जब आप रजिस्टर करने के लिए जाते हैं तो आप उन्हें अपने आवेदन में कट और पेस्ट कर सकते हैं।

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

कृपया ध्यान रखें कि उपयोगकर्ताओं को साझा करने या आपके सॉफ़्टवेयर का लाभ लेने से रोकने का यह एक आसान तरीका है। इनमें से कोई भी उच्च सुरक्षा ग्रेड तकनीक नहीं है और यदि वे वास्तव में चाहते हैं तो मुख्य क्रैकर्स में परिणाम होंगे।

+0

आप स्थापना दिनांक कुंजी को "अंतर्निहित" कैसे करते हैं? क्या वे हमेशा इसे बदल नहीं सकते? मैंने पहले से ही यह स्वीकार किया है कि यदि वे सिस्टम पुनर्स्थापना की तरह कुछ करते हैं तो वे 30 दिन की अवधि को पुनरारंभ करने में सक्षम होंगे। कोई बड़ी बात नहीं – Juan

+0

क्या उन्होंने सिस्टम घड़ी को वापस सेट किया है? – xbonez

+0

@xbonex क्या आप अपना आवेदन चलाने पर अपनी डिस्क पर कोई जानकारी स्टोर करते हैं? यदि आप करते हैं, तो कंप्यूटर के पढ़ने के मुकाबले इसमें एक नया टाइम स्टैंप होगा। या आप भविष्य में समय टिकटें के लिए कुछ सामान्य स्थानों की जांच कर सकते हैं। मुझे लगता है कि यह आपको अधिक सिरदर्द का कारण बन सकता है तो यह लायक है। लेकिन आपको ईमानदार लोगों को ईमानदार रखने का सही मिश्रण ढूंढना होगा और आपके लिए निर्णय लेना होगा। –

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