代码之家  ›  专栏  ›  技术社区  ›  Sean Kearon

如何检测系统日期回滚?

  •  1
  • Sean Kearon  · 技术社区  · 14 年前

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

    4 回复  |  直到 14 年前
        1
  •  2
  •   darioo    14 年前

    好吧,你可以在你的程序中使用一个嵌入式数据库,它有一个加密的系统日期,每隔一段时间就插入一次。如果您看到“更新的”日期早于某个以前的日期,则可以看到有人更改了系统日期。这只是个主意。

        2
  •  2
  •   sheikhjabootie    14 年前

    不会有一个 软件 解决这一问题的办法是不能以某种方式规避的。

    假设您在短时间内发布演示软件,您可以按照@darioo的建议将安装日期时间记录在加密日志中。日志文件的位置应该在卸载程序没有删除的地方-但是日志应该不引人注目并且很小。

    如果删除加密日志,许可证将自动过期。如果日期更早(当日志被解密和读取时),则许可证可以自动过期。您可能需要考虑日光节约模式的边缘情况-时钟可能在秋季/秋季返回一小时。

    如果重新安装了应用程序,它会将旧的加密日志保留在原来的位置,并使用该日志,这样相同的许可证期将继续保持不间断。

    如果加密日志被删除,并且软件被重新安装,那么它将无法区分第一次安装和重新安装之间的区别,因此它们将绕过它。但是,这将超出大多数用户的范围,特别是在加密日志被很好地隐藏的情况下。例如,您可以将其隐藏为 Alternate Data Stream .

    注意:我会离开我的另一个职位,除非它被投票否决-在这种情况下,我会删除它,因为它似乎没有那么大的帮助。

        3
  •  0
  •   Migol    14 年前

    另一个想法是添加一些NTP连接以从Internet获取当前日期。

        4
  •  0
  •   sheikhjabootie    14 年前

    我想我更喜欢@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.
    

    当然,可以使用适当的权限清除审核日志。所以可以绕开它。另外,我使用的是Windows7——它也在WindowsServer2008上,在WindowsServer2003上也有一个类似的版本。( http://www.ultimatewindowssecurity.com/securitylog/encyclopedia/event.aspx?eventid=4616 )

    这种方法的优点是,您可以知道时间是什么时候更改的——以前是什么时间,改成了什么时间。因此,与一年的变化相比,你可以检测到一个小时左右的微小变化。