使用VB6
如果exe在2009年2月11日之后不工作,我想比较系统日期。
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代码帮助。
发布于 2009-11-03 20:04:31
没有100%安全的方法可以做到这一点。通常,这样做的软件会将数据加密到某个模糊的注册表项中。但不符合Kerkhoff原理。
一般来说,您必须将安装日期或首次运行日期保存在系统上的某个位置(用户不能轻易地修改或删除它),以便将其与当前系统数据进行比较。除此之外,你应该保护你的程序免受篡改攻击。
要防止系统时间更改,也没有100%好的解决方案。一个简单的方法是查看用户配置文件中的一些文件,并获取最新的文件。如果此时间晚于当前系统时间(带有一些增量),则有人操纵了datetime设置。
所有这些几乎一文不值,因为很容易解决这样的保护问题(即使没有深厚的编程知识)。我会考虑一种解决方案,限制你的程序的功能并保护你的代码不被篡改(不管你选择什么作为解决方案,无论如何你都必须做的事情)。
发布于 2009-11-06 02:36:27
为实施真正强大的基于日期的保护系统所做的努力与所提供的保护不成比例。
在任何情况下,我使用的最后一个方案似乎是有效的。我将上次运行日期和剩余天数存储在一些模糊的注册表项中。每次应用程序启动时,我都会检查最后一次运行日期密钥是否仍然有效,并检查剩余的天数。这两个值都是加密存储的。为了增加一定程度的混乱,我在更明显的位置读写了一些垃圾键。
如果我发现了篡改的证据,比如更改的垃圾键、比上次运行日期更早的当前日期以及其他一些东西,那么试验就会过期。
为了减缓用户试图破解软件的速度,我在代码中加密了注册表项的名称,这样当在十六进制编辑器中查看可执行文件时,它们就不会很明显。
所有的努力都值得吗?可能不会。我怀疑,更少的会阻止大多数随意的破解和严重的,嗯,他们无论如何都会破解它。
发布于 2009-11-03 20:27:23
依我之见,这是可能的,只是保存您的exe发布日期和未来锁定日期之间的时间差。如果用户系统时钟设置为早于发布日期,则让用户将其设置正确,然后只需检查exe是否在未来锁定日期之前运行。我想你做到了……
https://stackoverflow.com/questions/1666876
复制相似问题