使用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 :(得分:3)
没有100%安全的方法来做到这一点。通常这样做的软件会将日期加密成一些不起眼的注册表项。但这与Kerkhoffs的原则不符。
一般来说,您必须在系统的某个位置(用户无法轻松修改或删除它)持续安装或首次运行日期,以将其与当前系统数据进行比较。除此之外,你应该保护你的程序免受篡改攻击。
为了防止系统时间变化,也没有100%的好解决方案。一个简单的方法是查看用户配置文件中的一些文件并获取最新的文件。如果此时间晚于当前系统时间(有一些增量),则有人操纵了日期时间设置。
这一切几乎都没有,因为很容易解决这种保护问题(即使没有深入的编程知识)。我会考虑一个限制程序功能和保护代码免受篡改的解决方案(无论你选择什么作为解决方案,你必须做什么)。
答案 1 :(得分:1)
实施真正强大的基于日期的保护系统的努力程度与所提供的保护不成比例。
无论如何,我使用的最后一个方案似乎都有效。我存储了一些不起眼的注册表项中的最后一个运行日期和剩余天数。每次应用程序启动时,我都检查了最后一次运行日期密钥是否仍然存在并且有一个有效值,我检查了剩余的天数。这两个值都是加密存储的。为了增加一定程度的困惑,我在更明显的位置阅读并写了许多垃圾密钥。
如果我发现篡改证据,例如更改的垃圾密钥,当前日期早于上次运行日期以及其他一些事情,则试用版已过期。
为了减慢试图破解软件的用户,我加密了代码中注册表项的名称,这样当在十六进制编辑器中查看exe时,它们就不会很明显了。
这些努力值得吗?可能不是。我怀疑少了很多人会厌倦大多数随意的破解者和严重的破解者,好吧,无论如何他们都会破解它。
答案 2 :(得分:0)
我的意见是,可以节省你的exe发布日期和未来锁定日期之间的时差。 如果用户系统时钟设置回发布日期,则允许用户将其设置为正确,然后在将来的锁定日期之前检查exe是否正在运行。 我想你明白了......
答案 3 :(得分:0)