使用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幫助。
使用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幫助。
沒有100%安全的方法來做到這一點。通常這樣做的軟件會將日期加密成一些不起眼的註冊表項。但是不符合Kerkhoffs的原則。
一般而言,您必須在系統某處(用戶無法輕易修改或刪除它)將持續安裝或首次運行日期與當前系統數據進行比較。除此之外,你應該保護你的程序免受篡改攻擊。
爲了防止系統時間變化,也沒有100%的良好解決方案。一個簡單的方法是查看用戶配置文件中的一些文件並採用最新的文件。如果此時間晚於當前系統時間(某些增量),則有人操作日期時間設置。
所有這一切幾乎都沒有什麼價值,因爲它很容易解決這種保護問題(即使沒有深入的編程知識)。我會考慮一個解決方案來限制程序的功能,並保護您的代碼免受篡改(無論如何,無論您選擇哪種解決方案)。
我修改我的問題,請檢查 – Gopal 2009-11-03 12:09:12
我認爲,這是可能的只是保存你的exe發佈日期和未來鎖定日期之間的時間差。 如果用戶系統時鐘的設置比發佈日期早,那麼可以讓用戶將其設置爲正確,然後只需在將來的鎖定日期之前檢查exe是否正在運行。 我想你明白了......
實現真正可靠的基於日期的保護系統的努力量與提供的保護不成正比。
在任何情況下,我使用的最後一個方案似乎工作。我將最後一次運行日期和剩餘天數存儲在一些不起眼的註冊表項中。每次應用程序啓動時,我都檢查了最後一次運行日期鍵仍然存在,並且有一個有效值,我檢查了剩下的天數。這兩個值都被加密存儲。爲了增加一定程度的混淆,我在更明顯的位置閱讀並編寫了一些垃圾密鑰。
如果我發現了篡改證據,例如更改後的垃圾密鑰,比上次運行日期更早的當前日期以及其他一些內容,則試用期限已過期。
爲了減慢試圖破解軟件的用戶,我在代碼中加密了註冊表項的名稱,以便在十六進制編輯器中查看exe時它們不會很明顯。
難道這一切都值得嗎?可能不會。我懷疑少了很多會檢測到大多數偶然的餅乾和嚴重的餅乾,無論如何,他們會破解它。
但是如果用戶更改系統日期以啓動應用程序會發生什麼? – Bobby 2009-11-03 11:57:14
是的只是知道我得到那一點,有任何其他解決方案是可用的。 – Gopal 2009-11-03 12:05:19