您如何检测用户何时回滚系统日期?使用情况是为了防止绕过许可,程序将需要检测在未运行时发生的回滚。
答案 0 :(得分:2)
好吧,您可以在程序中使用嵌入式数据库,并在每隔一段时间插入一个加密的系统日期。如果您看到“更新”日期早于某个上一个日期,您可以看到有人更改了系统日期。这只是一个想法。
答案 1 :(得分:2)
对此不会有软件解决方案无法以某种方式规避。
假设您提供短暂的免费期间的演示软件,您可以在@Darioo建议的加密日志中记录安装日期时间。日志文件的位置应该在卸载程序未删除的位置 - 但日志应该不显眼且小。
如果删除了加密日志,则许可证可以自动过期。如果日期较早(解密并读取日志时),则许可证可以自动过期。您可能需要考虑夏令时模式的边缘情况 - 时钟可能会在秋季/秋季返回一小时。
如果重新安装了应用程序,它会将旧的加密日志保留在原来的位置并使用它,以便相同的许可证期限不会中断。
如果删除了加密日志,并且重新安装了该软件,那么它将无法区分第一次安装和重新安装之间的区别,因此他们将绕过它。但是,如果加密日志被很好地隐藏,这将超出大多数用户。例如,您可以将其隐藏为Alternate Data Stream 。
注意:我会留下我的其他帖子,除非它被拒绝 - 在这种情况下我会删除它,因为它似乎没有那么有用。
答案 2 :(得分:0)
另一个想法是添加一些NTP连接以从Internet获取当前日期。
答案 3 :(得分:0)
我认为我更喜欢@ darioo建议加密日志。我想我会补充说,系统时间的更改会被写入带有EventID 4616的Windows安全日志。以下是消息:
The system time was changed.
Subject:
Security ID: TheComputer\Me
Account Name: Me
Account Domain: TheComputer
Logon ID: 0x283df
Process Information:
Process ID: 0x12b8
Name: C:\Windows\System32\dllhost.exe
Previous Time: s010-11-15T09:10:32.000000000Z
New Time: 2010-11-15T09:10:32.000000000Z
This event is generated when the system time is changed. It is normal for the Windows
Time Service, which runs with System privilege, to change the system time on a regular
basis. Other system time changes may be indicative of attempts to tamper with the
computer.
当然,可以使用适当的权限清除审核日志。所以它可以被规避。此外,我正在使用Windows 7 - 它也在Windows Server 2008上,在Windows Server 2003(http://www.ultimatewindowssecurity.com/securitylog/encyclopedia/event.aspx?eventid=4616)上有一个等效的。
这种方法的优点在于,您可以判断时间何时发生变化 - 之前的变化以及变更的时间。因此,与一年的变化相比,您可以检测到一小时左右的微不足道的变化。