使用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