一种控制驱动程序安装的方法和装置的制作方法

文档序号:6470023阅读:202来源:国知局
专利名称:一种控制驱动程序安装的方法和装置的制作方法
技术领域
本发明涉及一种控制驱动程序安装的方法和装置。
背景技术
随着计算机技术的发展,病毒、流氓软件、木马等也在不断地升 级,它们已经从用户级的普通程序发展成为内核级的驱动程序。
驱动程序的特点是对操作系统的内核有最高权限,因而属于驱动 程序的病毒、流氓软件、木马等不但可以修改内核数据,而且可以直 接摧毁安全软件的防线。
因此,控制和防止病毒、流氓软件、木马等向操作系统安装驱动 程序已经迫在眉睫。

发明内容
本发明的目的在于提供一种控制驱动程序安装的方法和装置,以 防止病毒、流氓软件、木马等向操作系统安装驱动程序。
为了实现本发明的目的,按照本发明的一种控制驱动程序安装的 方法,包括步骤拦截操作系统通知其各个功能模块执行相应操作的 通知动作和所述操作系统中用于安装驱动程序的功能模块操作所述 操作系统中的注册表的操作动作;当拦截到所述通知动作并且所述拦
截的通知动作表明所述操作系统通知所述用于安装驱动程序的功能 模块安装一个指定的驱动程序时,存储所述指定的驱动程序的路径信
息;当拦截到所述操作动作并且所述拦截的操作动作表明所述用于安 装驱动程序的功能模块向所述注册表写入数据时,基于所述存储的路 径信息和预先设置的保存在其上的驱动程序不允许安装的区域来确 定所述指定的驱动程序是否允许安装;以及,当确定结果为否定时,通知所述操作系统不安装所述指定的驱动程序。
为了实现本发明的目的,按照本发明的一种控制驱动程序安装的 装置,包括拦截模块,用于拦截操作系统通知其各个功能模块执行 相应操作的通知动作和所述操作系统中用于安装驱动程序的功能模 块操作所述操作系统中的注册表的操作动作;存储单元,用于当拦截
到所述通知动作并且所述拦截的通知动作表明所述操作系统通知所 述用于安装驱动程序的功能模块安装一个指定的驱动程序时,存储所
述指定的驱动程序的路径信息;确定模块,用于当拦截到所述操作动 作并且所述拦截的操作动作表明所述用于安装驱动程序的功能模块 向所述注册表写入数据时,基于所述存储的路径信息和预先设置的保 存在其上的驱动程序不允许安装的区域来确定所述指定的驱动程序 是否允许安装;以及,通知模块,用于当确定结果为否定时,通知所 述操作系统不安装所述指定的驱动程序。


通过下面结合附图的详细描述,本发明的其它特征、特点和优点 将变得更加显而易见。其中
图1示出了按照本发明一个实施例的控制驱动程序安装的方法 的流程图。
具体实施例方式
下面,将结合附图以Windows操作系统为例来描述本发明的各 个实施例。
首先,简要描述在Windows操作系统中安装驱动程序的过程。 当一个程序要在Windows操作系统中安装驱动程序时,它将调 用系统函数CreateService()来请求Windows操作系统安装驱动程序。 收到安装驱动程序的请求后,Windows操作系统使用一个用于通知其各个功能模块执行相应操作的系统函数NtR叫uestWaitR印lyPort()来 通知用于安装驱动程序的功能模块SERVICE.EXE安装该驱动程序, 其中,该系统函数NtRequestWaitReplyPort()包含了被通知的功能模块 SERVICE.EXE的标识信息和将要被安装的驱动程序的路径信息。然 后,SERVICE.EXE调用用于操作(写入数据、修改数据和删除数据 等)Windows操作系统的注册表的系统函数NtSetValueKey()在注册 表中写入该驱动程序的数据,完成该驱动程序的安装。
由上述驱动程序的安装过程可以看出,在安装驱动程序时都会调 用系统函数NtR叫uestWaitReplyPort()和NtSetValueKey(),因此,按 照本发明的一个方面,通过拦截系统函数NtRequestWaitReplyPortO 和NtSetValueKeyO来达到防止病毒、流氓软件、木马等向操作系统安 装驱动程序的目的。
图1示出了按照本发明一个实施例的控制驱动程序安装的方法 的流程图。如图1所示,首先,预先设置存储于其上的驱动程序不允 许安装在Windows操作系统中的区域(步骤S100)。
然后,在Windows操作系统的SSDT表中设置钩子来拦截 Windows操作系统对系统函数NtRequestWaitReplyPort()的调用和 Windows操作系统中的功能模块SERVICE.EXE对系统函数 NtSetValueKey()的调用(步骤SllO)。在本实施例中,系统函数 NtRequestWaitReplyPort()是Windows操作系统通知其各个功能模块 执行操作的通知动作,而系统函数NtSetValueKey()是功能模块 SERVICE.EXE操作注册表的操作动作。
接着,当拦截到Windows操作系统调用系统函数 NtRequestWaitReplyPort()时,根据系统函数NtRequestWaitReplyPort() 所包含的参数,检查是否Windows操作系统调用系统函数 NtRequestWaitReplyPort()来通知功能模块SERVICE.EXE安装一个驱 动程序(步骤S120)。
如果步骤S120的检查结果为否,则流程结束。
如果步骤S120的检查结果为是,则把系统函数
7NtRequestWaitReplyPort()中所包含的驱动程序的路径信息保存在存 储单元中(步骤S130)。
当拦截到功能模块SERVICE.EXE调用系统函数NtSetValueKey() 时,根据系统函数NtSetValueKey()所包含的参数,检测是否功能模块 SERVICE.EXE向注册表写入数据(步骤S140)。在这里,如果功能 模块SERVICE.EXE调用系统函数NtSetValueKey()向注册表写入数据 而不是更新注册表中的数据或者删除注册表中的数据,则表明功能模 块SERVICE.EXE在安装驱动程序。
如果步骤S140的检查结果为否,则删除保存在存储单元中的信 息(步骤S150),流程结束。
如果步骤S140的检査结果为是,则根据存储单元中所保存的驱 动程序的路径信息,获取存储该驱动程序的区域(步骤S160)。
确定是否该获取的区域是步骤S100中预先设置的区域(步骤 S170)。
如果步骤S170的检查结果为否,则删除保存在存储单元中的信 息(步骤S150),流程结束。
如果步骤S170的检查结果为是,则通知Windows操作系统不允 许安装该驱动程序(步骤S180)。
本领域技术人员应当理解,虽然上面的实施例中以Windows操 作系统为例来描述本发明,但是本发明并不局限于仅用在Windows 操作系统中。事实上,本发明也可以用在Linux、 Unix等这样的其它 操作系统中。
本发明的上述各个实施例所描述的控制驱动程序安装的方法,可 以利用软件、硬件或者软硬件结合的方式来实现。
本领域的技术人员应当理解,本发明所公开的控制驱动程序安装 的方法和装置可以在不偏离发明实质的情况下做出各种变形、改变和 变化,因此,本发明的保护范围由所附的权利要求书定义。
权利要求
1、一种控制驱动程序安装的方法,包括步骤拦截操作系统通知其各个功能模块执行相应操作的通知动作和所述操作系统中用于安装驱动程序的功能模块操作所述操作系统中的注册表的操作动作;当拦截到所述通知动作并且所述拦截的通知动作表明所述操作系统通知所述用于安装驱动程序的功能模块安装一个指定的驱动程序时,存储所述指定的驱动程序的路径信息;当拦截到所述操作动作并且所述拦截的操作动作表明所述用于安装驱动程序的功能模块向所述注册表写入数据时,基于所述存储的路径信息和预先设置的保存在其上的驱动程序不允许安装的区域来确定所述指定的驱动程序是否允许安装;以及当确定结果为否定时,通知所述操作系统不安装所述指定的驱动程序。
2、 如权利要求l所述的方法,其中,所述存储步骤进一步包括: 当拦截到所述通知动作时,基于所述拦截的通知动作来检查是否所述操作系统通知所述用于安装驱动程序的功能模块安装一个驱动 程序;以及如果检查结果为肯定,则将所述用于安装驱动程序的功能模块安 装的驱动程序的路径信息存储为所述指定的驱动程序的路径信息。
3、 如权利要求l所述的方法,其中,所述确定步骤进一步包括-当拦截到所述操作动作时,基于所述拦截的操作动作来检测是否所述用于安装驱动程序的功能模块向所述注册表写入数据;如果所述检测结果为肯定,则基于所述存储的路径信息来获取保存所述指定的驱动程序的区域;以及根据所述获取的区域和所述预先设置的保存在其上的驱动程序不允许安装的区域来判断所述指定的驱动程序是否允许安装。
4、 如权利要求l所述的方法,其中,所述通知动作是系统函数NtRequestWaitReplyPort(),所述操作动 作是系统函数NtSetValueKeyO,以及所述用于安装驱动程序的功能模 块是SERVICES.EXE。
5、 如权利要求l所述的方法,其中,还包括: 如果所述确定结果为肯定,则删除所述存储的路径信息。
6、 一种控制驱动程序安装的装置,包括拦截模块,用于拦截操作系统通知其各个功能模块执行相应操作 的通知动作和所述操作系统中用于安装驱动程序的功能模块操作所 述操作系统中的注册表的操作动作;存储单元,用于当拦截到所述通知动作并且所述拦截的通知动作 表明所述操作系统通知所述用于安装驱动程序的功能模块安装一个指定的驱动程序时,存储所述指定的驱动程序的路径信息;确定模块,用于当拦截到所述操作动作并且所述拦截的操作动作 表明所述用于安装驱动程序的功能模块向所述注册表写入数据时,基 于所述存储的路径信息和预先设置的保存在其上的驱动程序不允许 安装的区域来确定所述指定的驱动程序是否允许安装;以及通知模块,用于当确定结果为否定时,通知所述操作系统不安装 所述指定的驱动程序。
7、 如权利要求6所述的装置,其中,所述存储模块进一步包括: 检查模块,用于当拦截到所述通知动作时,基于所述拦截的通知动作来检査是否所述操作系统通知所述用于安装驱动程序的功能模 块安装一个驱动程序;以及保存模块,用于当检査结果为肯定时,将所述用于安装驱动程序 的功能模块安装的驱动程序的路径信息存储为所述指定的驱动程序 的路径信息。
8、 如权利要求6所述的装置,其中,所述确定模块进一步包括 检测模块,用于当拦截到所述操作动作时,基于所述拦截的操作动作来检测是否所述用于安装驱动程序的功能模块向所述注册表写 入数据;获取模块,用于当所述检测结果为肯定时,基于所述存储的路径 信息来获取保存所述指定的驱动程序的区域;以及判断模块,用于根据所述获取的区域和所述预先设置的保存在其 上的驱动程序不允许安装的区域来判断所述指定的驱动程序是否允 许安装。
9、 如权利要求6所述的装置,其中,所述通知动作是系统函数NtRequestWaitReplyPort(),所述操作动 作是系统函数NtSetValueKey(),以及所述用于安装驱动程序的功能模 块是SERVICES.EXE。
10、 如权利要求6所述的方法,其中,还包括删除模块,用于当所述确定结果为肯定时,删除所述存储的路径"f曰息。
全文摘要
本发明涉及一种控制驱动程序安装的方法和装置,其中,该方法包括拦截操作系统通知其各个功能模块执行相应操作的通知动作和所述操作系统中用于安装驱动程序的功能模块操作所述操作系统中的注册表的操作动作;当拦截到所述通知动作并且所述拦截的通知动作表明所述操作系统通知所述用于安装驱动程序的功能模块安装一个指定的驱动程序时,存储所述指定的驱动程序的路径信息;当拦截到所述操作动作并且所述拦截的操作动作表明所述用于安装驱动程序的功能模块向所述注册表写入数据时,基于所述存储的路径信息和预先设置的保存在其上的驱动程序不允许安装的区域来确定所述指定的驱动程序是否允许安装;以及,当确定结果为否定时,通知所述操作系统不安装所述指定的驱动程序。利用该方法和装置,能够防止病毒、流氓软件、木马等向操作系统安装驱动程序。
文档编号G06F21/00GK101667236SQ20081021337
公开日2010年3月10日 申请日期2008年9月2日 优先权日2008年9月2日
发明者陆 边 申请人:北京瑞星国际软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1