2009-10-06 12 views
22

मैंने अपना उत्पाद बनाया है और इसके लिए लाइसेंस कुंजी भी उत्पन्न की है, लेकिन मैं 30 दिनों के बाद उस कुंजी से पूछना चाहता हूं। मैंने इसे रजिस्ट्री मान के साथ उस दिन 30 दिनों के साथ संग्रहीत करने के साथ किया है। लेकिन मैंने पाया कि यदि उपयोगकर्ता मेरे तर्क से काम करने से 30 दिन पहले सिस्टम की तारीख बदलता है।मैं अपने उत्पाद को 30 दिनों के लिए परीक्षण संस्करण के रूप में कैसे बना सकता हूं?

तो क्या सिस्टम संस्करण की जांच किए बिना परीक्षण संस्करण सॉफ़्टवेयर के लिए कोई समाधान है और परीक्षण के केवल 30 दिनों के को अनुमति दें?

+0

बस उत्सुक, इस ऐप के लिए लक्षित बिक्री मूल्य क्या है? – Lazarus

+2

@ लाज़र - 50 लाख – Nirmal

उत्तर

2

आपको यह पता लगाने का एक तरीका होना चाहिए कि उपयोगकर्ता ने पहली बार परीक्षण शुरू करने के दिनांक को बदल दिया है या नहीं। समाधानों में मैंने पहले उपयोग किया है, हमने "अंतिम निष्पादित" तिथि और "पहली निष्पादित" तिथि सहेजी है और यदि घड़ी "अंतिम निष्पादित" के दो दिनों से अधिक समय में बदल जाती है तो हम परीक्षण की अवधि समाप्त कर देते हैं। आपको "दिन निष्पादित" काउंटर की भी आवश्यकता है ताकि वे दो दिन पहले तारीख को आगे नहीं बढ़ सकें (उस भाग का उल्लेख करना भूल गए) - प्रत्येक निष्पादन पर काउंटर बढ़ता जा रहा है।

बेशक, इस तरह सॉफ्टवेयर लाइसेंस सिस्टम हमेशा स्थापना रद्द करने और रजिस्ट्री की उचित ताज़ा के साथ फिर से स्थापित करने से परिहार्य कर रहे हैं - चाल करना मुश्किल होता है और अपनी लाइसेंस जानकारी पर्याप्त डुप्लिकेट इस मुश्किल बनाने के लिए, लेकिन अंत में, यह पाया हो जाएगा (विशेष रूप से यदि आप एक unobfuscated .NET कोडबेस का उपयोग कर रहे हैं)।

+3

या इसे एक नई वर्चुअल मशीन छवि में चलाएं। –

+0

@Pete: बिल्कुल। –

5

आप एक लाइसेंसिंग घटक का उपयोग कर सकते हैं। आप स्वयं को एक बना सकते हैं (LicenseManager class देखें), या एक विक्रेता से खरीदें (उदाहरण के लिए CryptoLicensing)।

+2

"सैन्य-शक्ति सुरक्षा" (जैसा कि लॉजिक एनपी द्वारा विज्ञापित) के साथ समस्या यह है कि सैन्य विभिन्न प्रयोजनों के लिए क्रिप्टो की विभिन्न शक्तियों का उपयोग करता है। यूके में मजबूत चीजों के लिए आपको विस्फोटकों के लिए लाइसेंस की आवश्यकता है - सभी मजबूत सैन्य क्रिप्टो एम्बेडेड हार्डवेयर मॉड्यूल में होस्ट किए जाते हैं जो छेड़छाड़ किए जाने पर स्वयं को नष्ट कर देते हैं; यदि आप इसे सॉफ्टवेयर के रूप में प्रकाशित करना चाहते हैं तो आप पर आधिकारिक रहस्य अधिनियम के तहत मुकदमा चलाया जाएगा। मजबूत क्रिप्टो को संभालने में संयुक्त राज्य अमेरिका, यदि कुछ भी अधिक प्रतिबंधित है। तो यह एक बहुत ही विशिष्ट दावा है, और संभवतः "कभी-कभी सेना का सबसे कमजोर क्रिप्टो" होना चाहिए। –

35

आपके पास हर दिन के उपयोग के बाद बढ़ने वाली एक और रजिस्ट्री कुंजी हो सकती है। इस तरह, भले ही वे कंप्यूटर की तारीख को बदल दें, यह कुंजी आपके प्रोग्राम को इंगित करेगी कि यह 30 दिनों के लिए चल रही है।

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

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

हालांकि दिन के अंत में, उपयोगकर्ता के पास अपनी मशीन पर पूर्ण नियंत्रण होता है और शायद आप जो भी करना चाहते हैं उसके आसपास एक रास्ता खोज सकते हैं (एक वेब सेवा तक पहुंचने से कम, जहां ये विवरण आपको रखने से पहले रखा जाता है उपयोगकर्ता ऐप का उपयोग करें)। आपको शायद उन अतिरिक्त लोगों को रोकने की कोशिश कर रहे लोगों को रोकने की कोशिश करनी चाहिए जो इस अतिरिक्त परेशानी से गुज़रने के इच्छुक हैं, लेकिन इसके बजाय भुगतान करने के इच्छुक लोगों के लिए ऐप में सुधार करने के लिए अतिरिक्त समय/धन/ऊर्जा खर्च करें।

+17

अंतिम सलाह के लिए +1 –

+0

सरल बैच फ़ाइल जो वर्तमान दिनांक सी को सहेजें, दिनांक डी को ठीक करने के लिए आवेदन शुरू करने से पहले दिनांक डी को मजबूर करें, सी फिर से इसे क्रैक करेगा ...:/ –

2

सिस्टम दिनांक/घड़ी के संदर्भ में 30 दिनों तक संसाधित करना मुश्किल है। आप हमेशा उन तिथियों की एक सूची रख सकते हैं जिन पर ऐप शुरू किया गया था और पिछली बार अलग-अलग समय के लिए 1 गिनती थी। इस तरह आपके उपयोगकर्ता को आपके ऐप को निकालने पर हर बार एक ही तारीख सेट करनी होगी।

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

आखिरकार, हार्डवेयर डोंगल या इसी तरह के माध्यम से एक बाहरी, स्थानीय समय स्रोत, लेकिन मुझे लगता है कि आप चरम पर पहुंच रहे हैं जहां आप सीधे परीक्षणों को सीधे प्रबंधित करने से बेहतर होंगे।

0

यदि आप किसी इंटरनेट कनेक्शन की गारंटी दे सकते हैं तो आप एक ऑनलाइन योजना लागू कर सकते हैं (एक समय सर्वर या अपना खुद का प्रमाणीकरण सर्वर देखें)। बेशक यह एक और निर्भरता पेश करता है - यदि इंटरनेट दूर हो जाता है, तो आपके उपयोगकर्ता काम नहीं कर सकते हैं।

आखिरकार मैं कहूंगा कि एक थर्ड पार्टी लाइसेंसिंग समाधान खरीदना है - यह अभी भी अटूट नहीं है लेकिन यह संभवतः कुछ समय और प्रयास के बिना आप अपने आप को कुछ भी मजबूत कर सकते हैं।

0

अंतिम रन तिथि स्टोर करें, और जब भी सिस्टम की तारीख पहले हो, तो परीक्षण समाप्त हो जाए।

केवल असफल-सुरक्षित विधि एक सेवा है कि आप मेजबान, कोई भी यह सोचते हैं अपने कनेक्शन कोड फटा के खिलाफ एप्लिकेशन को मान्य करने के लिए है;

) जब तक वे रजिस्ट्री मान/पृथक भंडारण फ़ाइल साफ कर सकते हैं/बचाया सेटिंग्स: वे सिर्फ परीक्षण को पुनरारंभ कर सकते हैं। इसके बारे में आप इतना कुछ नहीं कर सकते हैं। यही कारण है कि लोग समय-आधारित परीक्षण अवधि के अलावा परीक्षण सॉफ्टवेयर में कम कार्यक्षमता का विकल्प चुनते हैं।

4

मेरे पास आपके लिए एक आसान समाधान है।

रजिस्ट्री के लिए 2 चर लें: 1. तिथि 2. काउंटर

कदम:

  1. एक काउंटर = 1

  2. कॉपी प्रणाली तारीख को तिथि निर्धारित

  3. यदि तारीख को उस तारीख की प्रतिलिपि बनाने की तुलना में तिथि वर्तमान से अलग है, तो प्रत्येक बार जांचें आरई तिथि, काउंटर को भी बढ़ाकर 1। यदि तिथि समान है, तो कुछ भी न करें।

  4. अब आप काउंटर परीक्षण दिनों समाप्ति

के लिए, जाँच कर सकते हैं इन चाल का उपयोग करके उपयोगकर्ता भी यह काम करता है की तुलना में पिछली तिथि करने के लिए प्रणाली की तारीख बदलते हैं।

रजिस्ट्री के लिए आप & काउंटर को एन्क्रिप्ट कर सकते हैं ताकि तकनीकी व्यक्ति आपके तर्क को पहचान न सके!

चियर्स ...

जोड़ा

इस तर्क में विफल रहता है उपयोगकर्ता प्रत्येक दिन के लिए तिथि में परिवर्तन नहीं होता है जब! फिर हमारे पास इसका समाधान है!

मैं क्या यह संभव है या नहीं पता नहीं है, लेकिन आप हमेशा कुछ समाधान हो सकता है:

  1. रजिस्ट्री में & दुकान यह परीक्षण अवधि के लिए कुल समय गिनती।
  2. अब प्रत्येक रन के लिए कुल समय गिनें और इसे किसी अन्य चर में जोड़ें। (मुझे उम्मीद है कि यह टाइमर द्वारा किया जा सकता है)
  3. समाप्ति के लिए निर्णय लेने के लिए दो मानों की तुलना करें।
+2

दिलचस्प समाधान जब तक कि घड़ी आगे नहीं बढ़ती .. मैं अगले दिन लॉन्च करता हूं और रजिस्ट्री में तारीख आज है, यह अलग नहीं है और इसलिए मैं काउंटर में वृद्धि नहीं करता हूं? साथ ही, अगर मैं ऐप को दो दिन (या अधिक) लॉन्च करता हूं तो क्या होता है? प्रत्येक लॉन्च काउंटर में वृद्धि करने जा रहा है। – Lazarus

+2

ठीक है, मैंने तर्क के साथ एक छोटा सा परिवर्तन किया है। – Vikas

0

यदि स्वीकार्य है कि यह 8 घंटे का परीक्षण उपयोग (30 दिन के परीक्षण के बजाए) कहने के लिए स्वीकार्य है, तो सिस्टम डेटटाइम पर निर्भरता को दूर करने का एक तरीका है अपने ऐप में एक टाइमर का उपयोग करके जिसे निकाल दिया जाता है मिनट। इन्हें गिनें और इसलिए जब भी ऐप चलाया जाता है, तो यह कुल उपयोग मिनट गणना को जमा करेगा। फिर आप रजिस्ट्री में कहीं भी इस गिनती मूल्य को स्टोर कर सकते हैं।

0

यह आसान स्टोर मूल्यांकन समाप्ति तिथि है और हर दिन इसकी जांच करें। तिथि में हेरफेर द्वारा विस्तारित उपयोग से बचने के लिए, आवेदन में एक घंटे की गिनती बनाए रखें; बढ़ते रहें और इसे रजिस्ट्री में लिखें। मूल्यांकन की समाप्ति तिथि और 24 घंटे से अधिक की संख्या (कुछ teolrence के साथ 30 हो सकता है) के खिलाफ जांच की जानी चाहिए।

0

भी लगता है कि के बारे में:

आवेदन के समापन, अगली बार जब यह आपके आवेदन का पता लगाने के लिए सक्षम हो जाएगा दोपहर का भोजन किया है अगर Datetime सेटिंग बदल गया था या नहीं की दिनांक समय सहेजा जा रहा है (कम से कम वे इसे बदल नहीं सकते समापन समय से पहले कुछ करने से पहले)। उदाहरण:

आवेदन समापन पर:

सहेजा जा रहा है समय => 15:34 2014/03/31 (सहेजी गयी)

आवेदन का अगला शुरू:

चेक डेटाइम.अब> 15:34 03/31/2014। (ताकि वे कि bellow नहीं जा सकते ...)

जोड़ा:

किसी भी तरह का प्रयास करें आपके आवेदन उपयोग में प्रणाली की दिनांक सेटिंग्स एकीकृत करने के लिए: उत्पन्न चालान, टिकट, रसीदें ... जो कुछ भी !

0

आप मुफ्त परियोजना लिबप्रोट का उपयोग कर सकते हैं। साइट https://github.com/libprot/trunk है।

विचार यह है कि यह सरल और उपयोग करने में आसान होना चाहिए। आप सुरक्षा पर $$$ खर्च कर सकते हैं लेकिन इसे एक सप्ताह में हैक किया जा सकता है। अगर कोई आपके कोड की रिवर्स इंजीनियरिंग करना चाहता है तो कोई भी इसे रोक नहीं सकता है। काम करने वाली सरल विधियों का उपयोग करने की मेरी सलाह। | 2014/10/02 | 1.12.2015

जहां 2014/02/10 आज की तारीख है और अगर सिस्टम का समय कम फिर किसी बदली हुई सिस्टम घड़ी है => हम चाहिए

कंपनी एक्स:

इस तरह की स्ट्रिंग लिखें

1.12.2015 नहीं चला - क्या समय तक कुंजी मान्य

है और कंपनी है जो खरीदा के नाम/इसे डाउनलोड किया।

कि स्ट्रिंग को निजी/सार्वजनिक कुंजी के साथ असममित एल्गोरिदम के साथ obfuscated किया जाना चाहिए और स्ट्रिंग में एन्कोड किया जाना चाहिए जिसे आप ई-मेल द्वारा भेज सकते हैं, उदाहरण के लिए।

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

आप स्वचालित रूप से परीक्षण कोड भेजने के लिए अपनी साइट में कुछ PHP/जावा स्क्रिप्ट जोड़ सकते हैं।

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

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