一种防止篡改系统时间的方法及装置的制造方法

文档序号:9667697阅读:889来源:国知局
一种防止篡改系统时间的方法及装置的制造方法
【技术领域】
[0001]本发明涉及计算机技术领域,特别涉及一种防止篡改系统时间的方法及装置。
【背景技术】
[0002]系统时间是操作系统的重要组成部分,是用户获取准确时间的一个便利入口。
[0003]目前很多应用软件依赖于系统时间来保证其正常的运行。如果系统时间被恶意软件或病毒篡改,则可能导致某些安全软件失效,不能对系统进行保护;或者导致某些软件(例如财务软件)的数据出错等问题。

【发明内容】

[0004]本发明实施例的目的在于提供一种防止篡改系统时间的方法及装置,以防止系统时间被篡改。
[0005]为达到上述目的,本发明实施例公开了一种防止篡改系统时间的方法,预先创建跟随系统一起启动的、用于检测系统的设置本地时间函数被调用的服务程序;所述方法包括:
[0006]获得所述设置本地时间函数的入口函数地址;
[0007]通过所述服务程序,检测所述设置本地时间函数是否被调用,如果所述设置本地时间函数被调用,表示欲对系统时间进行篡改;
[0008]如果是,则将所获得的所述入口函数地址修改为预设的空函数的地址。
[0009]可选的,所述创建跟随系统一起启动的、用于检测系统的设置本地时间函数被调用的服务程序,包括:
[0010]通过调用系统打开服务控制管理器函数,链接到服务控制管理器;
[0011]通过调用创建服务函数,创建用于检测系统的设置本地时间函数被调用的服务程序;
[0012]通过调用注册服务控制句柄函数,注册该服务程序的控制函数;
[0013]通过调用所述控制函数,将该服务程序的状态设置为启动状态。
[0014]可选的,所述获得所述设置本地时间函数的入口函数地址,包括:
[0015]将包含所述设置本地时间函数的库函数加载到所述服务程序的进程空间中;
[0016]通过调用获得程序地址函数,从所述库函数的导入地址表中获得所述设置本地时间函数的入口函数地址。
[0017]可选的,所述服务程序中包含用于捕获所述设置本地时间函数被调用的信息的Hook函数;
[0018]所述通过所述服务程序,检测所述设置本地时间函数是否被调用,包括:
[0019]通过所述服务程序中的所述Hook函数对所述信息进行捕获,如果捕获到所述信息,表示所述设置本地时间函数被调用。
[0020]可选的,还包括:
[0021]在接收到用户针对所述Hook函数的删除指令后,删除所述Hook函数。
[0022]可选的,还包括:
[0023]在接收到用户针对所述服务程序的停止指令后,通过调用所述控制函数,将所述服务程序的状态设置为停止状态。
[0024]为达到上述目的,本发明实施例公开了一种防止篡改系统时间的装置,包括:创建模块、获得模块、检测模块和修改模块,其中,
[0025]所述创建模块,用于预先创建跟随系统一起启动的、用于检测系统的设置本地时间函数被调用的服务程序;
[0026]所述获得模块,用于获得所述设置本地时间函数的入口函数地址;
[0027]所述检测模块,用于通过所述创建模块创建的服务程序,检测所述设置本地时间函数是否被调用,如果所述设置本地时间函数被调用,表示欲对系统时间进行篡改;
[0028]所述修改模块,用于在所述检测模块检测到所述设置本地时间函数被调用的情况下,将所获得的所述入口函数地址修改为预设的空函数的地址。
[0029]可选的,所述创建模块,具体用于:
[0030]通过调用系统打开服务控制管理器函数,链接到服务控制管理器;
[0031]通过调用创建服务函数,创建用于检测系统的设置本地时间函数被调用的服务程序;
[0032]通过调用注册服务控制句柄函数,注册该服务程序的控制函数;
[0033]通过调用所述控制函数,将该服务程序的状态设置为启动状态。
[0034]可选的,所述获得模块,具体用于:
[0035]将包含所述设置本地时间函数的库函数加载到所述服务程序的进程空间中;
[0036]通过调用获得程序地址函数,从所述库函数的导入地址表中获得所述设置本地时间函数的入口函数地址。
[0037]可选的,所述服务程序中包含用于捕获所述设置本地时间函数被调用的信息的Hook函数;
[0038]所述检测模块,具体用于:
[0039]通过所述创建模块创建的服务程序中的所述Hook函数对所述信息进行捕获,如果捕获到所述信息,表示所述设置本地时间函数被调用。
[0040]可选的,还包括:删除模块,
[0041]所述删除模块,用于在接收到用户针对所述Hook函数的删除指令后,删除所述Hook函数。
[0042]可选的,所述创建模块,还用于:
[0043]在接收到用户针对所述服务程序的停止指令后,通过调用所述控制函数,将所述服务程序的状态设置为停止状态。
[0044]由上述的技术方案可见,本发明实施例提供了一种防止篡改系统时间的方法及装置,预先创建跟随系统一起启动的、用于检测系统的设置本地时间函数被调用的服务程序;方法包括:获得所述设置本地时间函数的入口函数地址;通过所述服务程序,检测所述设置本地时间函数是否被调用,如果所述设置本地时间函数被调用,表示欲对系统时间进行篡改;如果是,则将所获得的所述入口函数地址修改为预设的空函数的地址。
[0045]应用本发明实施例所提供的技术方案,在设置本地时间函数被调用的情况下,将设置本地时间函数的入口函数地址修改为空函数的地址,进而调用空函数,不对系统时间做任何修改,防止了系统时间被篡改。
【附图说明】
[0046]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0047]图1为本发明实施例提供的一种防止篡改系统时间的方法的流程示意图;
[0048]图2为本发明实施例提供的一种防止篡改系统时间的装置的结构示意图。
【具体实施方式】
[0049]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0050]为了解决现有技术问题,本发明实施例提供了一种防止篡改系统时间的方法及装置。下面首先对本发明实施例所提供的一种防止篡改系统时间的方法进行介绍。
[0051]图1为本发明实施例提供的一种防止篡改系统时间的方法的流程示意图,可以包括:
[0052]S101:获得设置本地时间函数的入口函数地址;
[0053]S102:通过服务程序,检测所述设置本地时间函数是否被调用,如果是,执行S103 ;
[0054]如果所述设置本地时间函数被调用,表示欲对系统时间进行篡改,
[0055]S103:将所获得的所述入口函数地址修改为预设的空函数的地址。
[0056]具体的,上述服务程序为预先创建的跟随系统一起启动的、用于检测系统的设置本地时间函数被调用的服务程序。
[0057]具体的,在实际应用中,设置本地时间函数可以为SetLocalTime函数。
[0058]具体的,创建跟随系统一起启动的、用于检测系统的设置本地时间函数被调用的服务程序,可以通过调用系统打开服务控制管理器函数,链接到服务控制管理器;通过调用创建服务函数,创建用于检测系统的设置本地时间函数被调用的服务程序;通过调用注册服务控制句柄函数,注册该服务程序的控制函数;通过调用所述控制函数,将该服务程序的状态设置为启动状态。
[0059]示例性的,通过调用系统API (Applicat1n Programming Interface,应用程序编程接口)函数中的OpenSCManager函数链接到服务控制管理器;通过调用CreateService函数创建用于监测SetLocalTime函数被调用的服务程序MyService.exe,通过调用RegisterServiceCtrlHandler函数注册服务程序MyService.exe的控制函数,通过调用该控制函数将服务程序MyService.exe的状态设置为启动状态。
[0060]具体的,在实际应用中,还可以通过调用操作系统提供的ChangeServiceStatus函数,将服务程序MyService.exe的状态值设置为4,服务的状态值为4表示服务处于运行状态(即启动状态)。
[0061]具体的,获得设置本地时间函数的入口函数地址,可以将包含所述设置本地时间函数的库函数加载到所述服务程序的进程空间中;通过调用获得程序地址函数,从所述库函数的导入地址表中获得所述设置本地时间函数的入口函数地址。
[0062]在实际应用中,SetLocalTime函数为系统API函数中的一个函数,系统API函数都是以DLL (库函数)封装起来,因此,需要将包含SetLocalTime函数的库函数加载到上述创建的服务程序MyService.exe的进程空间中,通过调用GetProcAddress函数,从库函数的导入地址表中获得SetLocalTime函数的入口函数地址,其中,导入地址表中存储有函数预先指定的加载地址(函数真实地址)。假设获得的SetLocalTime函数的入口函数地址为00030100H。
[0063]具体的,上述服务程序中包含用于捕获所述设置本地时间函数被调用的信息的Hook函数;通过所述服务程序,检测所述设置本地时间函数是否被调用,可以通过所述服务程序中的所述Hook函数对所述信息进行捕获,如果捕获到所述信息,表示所述设置本地时间函数被调用。
[0064]在实际应用中,Hook (钩子)为Windows消息处理机制的一个平台,应用程序可以在上面监控指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理Windows消息或特定事件。钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1