2009-11-03 197 views
1

使用VB6如何設置軟件使用日期限制?

我想比較系統日期,如果exe文件後應02/11/2009

VB6代碼

Dim dte As Date 
dte = DateValue(Now) 
'MsgBox DateValue(Now) 
If dte > DateValue("01/11/2009") Then 
Unload Me 
End If 

不行但是如果用戶改變系統日期,它會工作,我的EXE不應該在10天后工作。如何設置。

需要VB6 CODE幫助。

+0

但是如果用戶更改系統日期以啓動應用程序會發生什麼? – Bobby 2009-11-03 11:57:14

+0

是的只是知道我得到那一點,有任何其他解決方案是可用的。 – Gopal 2009-11-03 12:05:19

回答

3

沒有100%安全的方法來做到這一點。通常這樣做的軟件會將日期加密成一些不起眼的註冊表項。但是不符合Kerkhoffs的原則。

一般而言,您必須在系統某處(用戶無法輕易修改或刪除它)將持續安裝或首次運行日期與當前系統數據進行比較。除此之外,你應該保護你的程序免受篡改攻擊。

爲了防止系統時間變化,也沒有100%的良好解決方案。一個簡單的方法是查看用戶配置文件中的一些文件並採用最新的文件。如果此時間晚於當前系統時間(某些增量),則有人操作日期時間設置。

所有這一切幾乎都沒有什麼價值,因爲它很容易解決這種保護問題(即使沒有深入的編程知識)。我會考慮一個解決方案來限制程序的功能,並保護您的代碼免受篡改(無論如何,無論您選擇哪種解決方案)。

+0

我修改我的問題,請檢查 – Gopal 2009-11-03 12:09:12

0

我認爲,這是可能的只是保存你的exe發佈日期和未來鎖定日期之間的時間差。 如果用戶系統時鐘的設置比發佈日期早,那麼可以讓用戶將其設置爲正確,然後只需在將來的鎖定日期之前檢查exe是否正在運行。 我想你明白了......

+0

是的,即使你可以保存一些加密文件的exe開放日期的第一個實例。還需要一些id(基於IP或網卡物理地址) – OliveOne 2009-11-03 12:32:42

+0

如果您將日期設置爲有效範圍的開始,那麼您將不得不重置日期全部9或10天... – jdehaan 2009-11-03 12:32:55

+0

所以在這個系統中,我可以將系統日期設置爲exe發佈數據後的一天,並無限期地運行軟件? – Ross 2014-07-21 14:51:05

0

軟件版權保護是一個很大的主題,從商業圖書館和硬件密鑰中可以找到許多可能的方法,像你所建議的那樣「自己動手」。

我建議你閱讀關於堆棧溢出複製保護的其他討論。例如。 thisthisthis

1

實現真正可靠的基於日期的保護系統的努力量與提供的保護不成正比。

在任何情況下,我使用的最後一個方案似乎工作。我將最後一次運行日期和剩餘天數存儲在一些不起眼的註冊表項中。每次應用程序啓動時,我都檢查了最後一次運行日期鍵仍然存在,並且有一個有效值,我檢查了剩下的天數。這兩個值都被加密存儲。爲了增加一定程度的混淆,我在更明顯的位置閱讀並編寫了一些垃圾密鑰。

如果我發現了篡改證據,例如更改後的垃圾密鑰,比上次運行日期更早的當前日期以及其他一些內容,則試用期限已過期。

爲了減慢試圖破解軟件的用戶,我在代碼中加密了註冊表項的名稱,以便在十六進制編輯器中查看exe時它們不會很明顯。

難道這一切都值得嗎?可能不會。我懷疑少了很多會檢測到大多數偶然的餅乾和嚴重的餅乾,無論如何,他們會破解它。

相關問題