Windows系统注册表保护方法

文档序号:6425841阅读:578来源:国知局
专利名称:Windows系统注册表保护方法
技术领域
本发明涉及数据库技术领域,特别涉及一种Windows系统注册表保护方法。
背景技术
注册表是Windows系统中的一个重要的数据库,用于存储系统和应用程序的设置信息。注册表中存储的信息与系统和应用程序的设置有着密切的关系,一旦注册表被篡改或破坏,很可能会造成系统和程序的异常,甚至导致系统崩溃难以修复。由于以上原因,我们需要采取一些手段来保护某些注册表键值不被恶意程序篡改或破坏。现有的注册表保护方式一般是对注册表进行备份,一旦出现问题再行恢复。或者编写一些应用程序,不停的查询某些键值的状态,一旦与原值不符,则将其修正。采用类似以上的手段来保护注册表有如下几个问题1、采用定期备份方式,备份的时机不好掌握。通常用户不知道什么时候注册表会发生变化,应该备份。如果没有及时备份,则可能有部分更新会被丢失;2、恢复注册表存在风险。在恢复注册表的时候,此时系统或应用程序可能已经发生变化,如果进行整体恢复可能会造成程序或系统异常;3、有些问题可能导致无法恢复。 一些注册表键值可能会关系到系统的正常运行,一旦被篡改或破坏,可能造成系统不可用, 对普通用户来说难以恢复;4、若采用定时查询的方式也必须保留一份正常数据的备份,某些问题和定期备份方式类似;5、定时查询方式如果间隔比较长,则无法做到短时间内恢复相应键值,此时有可能已经造成了一定程度的破坏;如果时间间隔较短,则可能耗费较多的系统资源;6、无论是备份恢复方式还是定时查询方式都不够灵活,如果用户自己想修改注册表,或某些操作确认是合法的,则需要关闭定时程序,或另作备份。

发明内容
(一 )要解决的技术问题本发明要解决的技术问题是如何提供一种Windows系统注册表保护方法,以便在注册表被篡改或者破坏之前对相应的注册表操作进行阻止。( 二 )技术方案为解决上述技术问题,本发明提供一种Windows系统注册表保护方法,包括步骤S100 将注册表操作函数的地址作为原始地址保存,使用Hook函数的地址替换所述注册表操作函数的地址;S200 当任一程序进行注册表操作时,所述Hook函数获取相应的操作信息,并将所述操作信息发送给应用层进行判断,如果判断结果显示所述注册表操作被允许,根据所述原始地址调用所述注册表操作函数完成所述注册表操作,否则,禁止所述注册表操作。优选地,所述步骤SlOO包括步骤SlOl 找到 SSDT (System Services Descriptor Table,系统服务描述符表)表基址,通过偏移量找到所述注册表操作函数的地址,将所述地址作为所述原始地址保存;S102 在所述SSDT表中,使用所述Hook函数的地址替换所述注册表操作函数的地址。优选地,所述注册表操作函数包括函数ZwQueryValueKey、ZwSetValueKey和 ZwDeleteValueKey0优选地,所述注册表操作包括对注册表进行查询、修改或者删除操作。优选地,所述操作信息包括所述注册表操作的注册表值路径、进程路径和操作类型。优选地,在所述步骤S200之后,还包括步骤S300 在SSDT表中,将所述注册表操作函数的地址恢复为所述原始地址。优选地,在所述步骤S200中,将所述操作信息发送给应用层后,应用层根据操作策略表中包括的注册表中各键值对不同程序的开放权限或者根据用户指令,判断所述注册表操作是否被允许。(三)有益效果本发明的Windows系统注册表保护方法,通过设置Hook函数对所有的注册表操作进行过滤,对可能会破坏注册表的恶意程序提前禁止。相比传统的先破坏后修复的处理方法,本发明方法执行效率高,节省系统资源。


图1是本发明的实施例所述Windows系统注册表保护方法的流程图。
具体实施例方式下面结合附图和实施例,对本发明的具体实施方式
作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。图1是本发明的实施例所述Windows系统注册表保护方法的流程图。如图1所示, 该方法包括步骤SlOl 找到SSDT表基址,通过偏移量找到注册表操作函数的地址,将所述地址作为原始地址保存。所述注册表操作函数包括函数ZwQueryValueKey、ZwktValueKey和 ZwDeleteValueKey0所述地址为所述注册表操作函数在内存中的地址。S102 在所述SSDT表中,使用Hook函数的地址替换所述注册表操作函数的地址。S200 当任一程序进行注册表操作时,所述Hook函数通过参数获取相应的操作信息,将所述操作信息发送给应用层,应用层根据操作策略表或者用户指令,判断所述注册表操作是否应该被允许,如果判断结果显示所述注册表操作被允许,则根据所述原始地址调用所述注册表操作函数完成所述注册表操作,否则,禁止所述注册表操作。所述注册表操作包括对注册表进行查询、修改或者删除操作,所述操作信息包括所述注册表操作的注册表值路径、进程路径和操作类型。所述操作策略表包括注册表中各键值对不同程序的开放权限,其结构大致如下 键值一允许操作的程序(路径、哈希值等)-一此程序的操作权限(查询、修改、删除)。 该结构中所述的三者之间的关系是一个键值对应多个程序,每个程序对应多种权限。所述操作信息是通过参数传递进来的,不需要额外的流程进行获取。这和Hook 函数的特点有关,Hook函数实际上就是一个自定义的和原始函数(如注册表操作函数ZwQueryValueKey)接口相同的函数,实际上原始函数在执行相应功能的同时也一样需要这些参数,所以Hook函数也一样能获取同样的输入参数,即此处所说的操作信息。所述Hook 函数与所述应用层间通过共享缓冲区或者事件通信方式进行消息通信。当根据用户指令判断所述注册表操作是否应该被允许时,可以弹出提示对话框,由用户自己确定所述注册表操作是否应该被允许。S300 在SSDT表中,将所述注册表操作函数的地址恢复为所述原始地址。本发明的Windows系统注册表保护方法,通过设置Hook函数对所有的注册表操作进行过滤,对可能会破坏注册表的恶意程序提前禁止。相比传统的先破坏后修复的处理方法,本发明方法执行效率高,节省系统资源。该方法还可用于控制注册表的查询权限,保护隐私数据。以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
权利要求
1.一种Windows系统注册表保护方法,其特征在于,包括步骤5100将注册表操作函数的地址作为原始地址保存,使用Hook函数的地址替换所述注册表操作函数的地址;S200 当任一程序进行注册表操作时,所述Hook函数获取相应的操作信息,并将所述操作信息发送给应用层进行判断,如果判断结果显示所述注册表操作被允许,根据所述原始地址调用所述注册表操作函数完成所述注册表操作,否则,禁止所述注册表操作。
2.如权利要求1所述的Windows系统注册表保护方法,其特征在于,所述步骤SlOO包括步骤5101找到SSDT表基址,通过偏移量找到所述注册表操作函数的地址,将所述地址作为所述原始地址保存;5102在所述SSDT表中,使用所述Hook函数的地址替换所述注册表操作函数的地址。
3.如权利要求2所述的Windows系统注册表保护方法,其特征在于,所述注册表操作函数包括函数 ZwQueryValueKey、ZwSetValueKey 禾口 ZwDeleteValueKey0
4.如权利要求1所述的Windows系统注册表保护方法,其特征在于,所述注册表操作包括对注册表进行查询、修改或者删除操作。
5.如权利要求1所述的Windows系统注册表保护方法,其特征在于,所述操作信息包括所述注册表操作的注册表值路径、进程路径和操作类型。
6.如权利要求1所述的Windows系统注册表保护方法,其特征在于,在所述步骤S200 之后,还包括步骤S300 在SSDT表中,将所述注册表操作函数的地址恢复为所述原始地址。
7.如权利要求1所述的Windows系统注册表保护方法,其特征在于,在所述步骤S200 中,将所述操作信息发送给应用层后,应用层根据操作策略表中包括的注册表中各键值对不同程序的开放权限或者根据用户指令,判断所述注册表操作是否被允许。
全文摘要
本发明公开了一种Windows系统注册表保护方法,涉及数据库技术领域。该方法包括步骤将注册表操作函数的地址作为原始地址保存,使用Hook函数的地址替换所述注册表操作函数的地址;当任一程序进行注册表操作时,所述Hook函数获取相应的操作信息,并将所述操作信息发送给应用层进行判断,如果判断结果显示所述注册表操作被允许,根据所述原始地址调用所述注册表操作函数完成所述注册表操作,否则,禁止所述注册表操作。本发明的Windows系统注册表保护方法,通过设置Hook函数对所有的注册表操作进行过滤,对可能会破坏注册表的恶意程序提前禁止。
文档编号G06F21/22GK102214287SQ20111015364
公开日2011年10月12日 申请日期2011年6月9日 优先权日2011年6月9日
发明者万雪松, 于晓军, 赵辰清 申请人:北京思创银联科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1