如何检测系统日期回滚?

时间:2010-11-16 08:53:44

标签: licensing system

您如何检测用户何时回滚系统日期?使用情况是为了防止绕过许可,程序将需要检测在未运行时发生的回滚。

4 个答案:

答案 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)上有一个等效的。

这种方法的优点在于,您可以判断时间何时发生变化 - 之前的变化以及变更的时间。因此,与一年的变化相比,您可以检测到一小时左右的微不足道的变化。