ऐप की जाँच के लिए सिस्टम की तारीख़ बदलना
यह सबसे पुरानी तरकीब है: Windows की घड़ी को उस तारीख़ पर कर दें जिसे परखना है, प्रोग्राम चलाएँ, फिर घड़ी लौटा दें। यह काम करती है - लेकिन जब तक घड़ी खिसकी हुई है, वह मशीन की बाक़ी हर चीज़ को भी खिसका देती है।
घड़ी के साथ असल में क्या खिसकता है
सिस्टम घड़ी सिर्फ़ उस प्रोग्राम की नहीं है जिसे आप परख रहे हैं। मशीन की हर प्रोसेस, सेवा और नेटवर्क बातचीत वही घड़ी पढ़ती है, इसलिए एक परीक्षण के लिए किया गया बदलाव सबके लिए किया गया बदलाव है।
| घड़ी कौन पढ़ता है | उसे खिसकाने पर क्या होता है |
|---|---|
| डोमेन लॉगऑन और साझा फ़ोल्डर | Kerberos डिफ़ॉल्ट रूप से घड़ियों के बीच पाँच मिनट का अंतर सहता है। उससे ज़्यादा होने पर उसके टिकट ठुकरा दिए जाते हैं, और लॉगऑन या साझा फ़ोल्डर तक पहुँच विफल हो जाती है। |
| सर्टिफ़िकेट और HTTPS | सर्टिफ़िकेट मान्य है या नहीं, यह घड़ी से तय होता है। घड़ी को किसी सर्टिफ़िकेट की समाप्ति तारीख़ के आगे कर दें तो उस पर टिका हर कनेक्शन एक्सपायर्ड बताकर ठुकरा दिया जाता है; पर्याप्त पीछे कर दें तो सर्टिफ़िकेट अभी मान्य ही नहीं होता। |
| Windows Time सेवा | डोमेन से जुड़ी मशीन अपना समय डोमेन कंट्रोलर से लेती है, और डिफ़ॉल्ट रूप से यह सेवा अंतर कितना भी बड़ा हो, घड़ी को सुधार देती है। आपकी सेट की हुई तारीख़ आपके परीक्षण के बीच में ही पलट सकती है। |
| समय दर्ज करने वाली हर चीज़ | घड़ी खिसकी होने के दौरान बनी फ़ाइलें, लॉग, डेटाबेस की पंक्तियाँ और भेजे गए ईमेल परीक्षण की तारीख़ लिए रहते हैं, और घड़ी लौटाने के बाद भी वही रखते हैं। |
| देखी गई सबसे बाद की तारीख़ याद रखने वाला सॉफ़्टवेयर | कुछ प्रोग्राम पीछे जाती घड़ी को छेड़छाड़ मान लेते हैं - और असली तारीख़ बहाल करते समय ठीक यही होता है। |
तारीख़ जितनी दूर होगी, इनमें से उतना ही ज़्यादा आपके सामने आएगा। 2038 पर सेट की गई मशीन आज जारी हर सर्टिफ़िकेट को एक्सपायर्ड देखती है। इसके बिना 2038 को परखना →
इसके लिए वह अधिकार भी चाहिए जो ज़्यादातर खातों के पास नहीं होता: सिस्टम का समय बदलना व्यवस्थापक का विशेषाधिकार है, और प्रबंधित मशीन पर वह अक्सर आपके पास नहीं होता।
घड़ी बदलना कब सही जवाब है
कोई वर्चुअल मशीन जिसे और कोई इस्तेमाल नहीं करता, और जिसकी अपनी घड़ी का सिंक बंद है, एक बिल्कुल ठीक परीक्षण-बेंच है। बाद में आप उसे फेंक देते हैं, इसलिए उसने जो दर्ज किया उसका कोई मतलब नहीं। अगर आपके पास ऐसी मशीन है और परीक्षण एक ही तारीख़ का है, तो यही सबसे सरल चीज़ है जो चलती है।
परेशानी तब शुरू होती है जब यह वही मशीन हो जिस पर आप काम करते हैं, या डोमेन वाली मशीन, या वह जिस पर साथ-साथ कुछ ऐसा चल रहा हो जिसे कुछ पता नहीं चलना चाहिए।
इसके बजाय सिर्फ़ एक प्रोग्राम की घड़ी खिसकाएँ
खिसकाया हुआ समय एक प्रोसेस और उसकी शुरू की हुई चाइल्ड प्रोसेस को ही दिखता है। आपका डोमेन लॉगऑन, आपके सर्टिफ़िकेट और Windows Update उसे कभी नहीं देखते, इसलिए ऊपर की तालिका में से कुछ नहीं खिसकता - और बाद में लौटाने को कुछ नहीं बचता।
# ऐप को 31 दिसंबर 2027, 23:59:50 दिखता है। बाक़ी सब कुछ असली तारीख़ रखता है। chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:50 # आधी रात से दस मिनट पहले शुरू करें और 60 गुना रफ़्तार से चलाएँ - साल दस सेकंड में बदल जाता है chrono run "C:\apps\test.exe" --at 2027-12-31T23:50:00 --mode x60
एक प्रोग्राम के लिए खिसकाई गई तारीख़ उस तक सचमुच पहुँची या नहीं, यह मान लेने की बात नहीं है। हर सत्र एक निर्णय और उन समय चैनलों की सूची के साथ ख़त्म होता है जिन्हें प्रोग्राम ने वास्तव में पढ़ा। आपको कैसे पता चलेगा कि यह काम किया →
यह किसका विकल्प नहीं है
- जो प्रोग्राम किसी सर्वर से समय पूछता है, वह स्थानीय प्रतिस्थापन की पहुँच से बाहर है। जब सत्र देखता है कि प्रोग्राम ने नेटवर्क कनेक्शन खोला, तो वह यह बता देता है, बजाय इसके कि आपको यह मानने दे कि परीक्षण पास हो गया।
- सिस्टम का ही परीक्षण - असली घड़ी बदलने पर प्रतिक्रिया करने वाली सेवा, शेड्यूल्ड टास्क, घड़ी बदलने के आसपास Windows का व्यवहार - घड़ी बदलने का कोई विकल्प नहीं रखता, ऐसी मशीन पर जिसे आप गँवाना सह सकें।