一种应用程序注册表删除方法及装置的制造方法

文档序号:9844318阅读:292来源:国知局
一种应用程序注册表删除方法及装置的制造方法
【技术领域】
[0001]本发明涉及系统安全领域,特别涉及一种应用程序注册表删除方法及装置。
【背景技术】
[0002]现有技术一般采用的是调用系统服务描述符表(SSDT)中删除注册表的函数的方式对注册表进行删除,如图1所示,包括步骤:
[0003]SlOl:终端调用应用层的RegDeleteKey函数;
[0004]S102:RegDeleteKey函数根据保存的注册表删除函数的地址,调用内核层SSDI中的注册表删除函数,即NDe I e t eKey函数;
[0005]S103 = NDeleteKey函数通过注册表对象地址,调用注册表对象中的底层注册表删除函数;
[0006]S104:注册表对象中的底层注册表删除函数解析注册表磁盘文件,删除注册表。
[0007]计算机病毒通常会采用注册表保护技术使自身的注册表不能被删除,一般采用的是挂钩系统服务描述符表(SSDT)中注册表删除函数的地址的方式,使终端无法对病毒的注册表进行删除。其具体实现方式为:更改SSDT中所述注册表删除函数的地址,即对该地址进行挂钩,即在步骤S102中,RegDeleteKey函数根据被挂钩的注册表删除函数的地址,无法调用内核层SSDI中的注册表删除函数。这样,当终端杀毒程序要根据所述删除注册表的函数的地址查询所述删除注册表的函数时,由于所述地址被改变,进而所述终端无法成功查询到所述删除注册表的函数,也就不能对所述病毒的注册表进行删除。
[0008]为了避免上述情况的发生,在调用注册表删除函数时,预先检查所述注册表删除函数的地址是否为预先保存的正确地址,若不是,则将所述删除注册表的函数的地址更改为预先保存的正确地址,就能够根据所述预先保存的正确地址成功查询到所述注册表删除函数,进而打破了病毒对自身注册表的保护。
[0009]由于所述SSDT中所述注册表删除函数需要通过病毒注册表中对象地址,调用系统底层注册表删除函数,才能真正实现对该病毒的注册表的删除。若病毒对自身注册表中的对象地址进行挂钩,即对步骤S103中注册表对象地址进行挂钩,则现有技术无法对所述注册表对象地址进行恢复,进而无法调用对应的底层注册表删除函数对所述病毒的注册表进行删除。

【发明内容】

[0010]本发明实施例公开了一种应用程序注册表删除方法及装置,实现对应用程序注册表的删除。
[0011]为达到上述目的,本发明实施例公开了一种应用程序注册表删除方法,应用于终端,所述方法包括步骤:
[0012]根据待删除的注册表中保存的信息,获取所述注册表中设定对象的存储地址;
[0013]判断所述设定对象的存储地址是否被挂钩;
[0014]当判断所述设定对象的存储地址被挂钩时,则根据保存的内核基地址,确定所述设定对象被挂钩前的地址信息;
[0015]将所述注册表中所述设定对象的存储地址恢复为所述被挂钩前的地址信息;
[0016]根据所述注册表中所述设定对象被挂钩前的地址信息,删除所述注册表。
[0017]较佳的,所述根据待删除的注册表中保存的信息,获取所述注册表中设定对象的存储地址,包括:
[0018]获取所述待删除的注册表的注册表句柄;
[0019]识别所述注册表句柄中包含的指向所述设定对象的存储地址的指针;
[0020]根据保存的偏移量及所述指向所述设定对象的存储地址的指针,确定所述待删除的注册表中设定对象的存储地址。
[0021]较佳的,所述获取所述待删除的注册表的注册表句柄,包括:
?0022] 打开所述注册表\\Registry\\Machine\\Sofware键,获得所述注册表的注册表句柄。
[0023]较佳的,所述判断所述设定对象的存储地址是否被挂钩,包括:
[0024]判断所述设定对象的存储地址是否为预设的字符,如果是,则确定所述设定对象的存储地址被挂钩。
[0025]较佳的,所述根据保存的内核基地址,确定所述设定对象被挂钩前的地址信息,包括:
[0026]根据保存的内核基地址,加载所述内核,生成映射基地址;
[0027]根据所述内核基地址、映射基地址及获取的所述设定对象的存储地址,生成所述设定对象被挂钩前的地址信息。
[0028]较佳的,所述根据所述内核基地址、映射基地址及获取的所述设定对象的存储地址,生成所述设定对象被挂钩前的地址信息包括:
[0029]按下式生成所述设定对象被挂钩前的地址信息:
[0030]被挂钩前的地址信息=获取的所述设定对象的存储地址-内核基地址+映射基地址。
[0031]本发明实施例还公开了一种应用程序注册表删除装置,应用于终端,所述装置包括:
[0032]地址获取模块,用于根据待删除的注册表中保存的信息,获取所述注册表中设定对象的存储地址;
[0033]判断挂钩模块,用于判断所述设定对象的存储地址是否被挂钩;
[0034]地址确定模块,用于当判断所述设定对象的存储地址被挂钩时,则根据保存的内核基地址,确定所述设定对象被挂钩前的地址信息;
[0035]地址恢复模块,用于将所述注册表中所述设定对象的存储地址恢复为所述被挂钩前的地址信息;
[0036]删除模块,用于根据所述注册表中所述设定对象被挂钩前的地址信息,删除所述注册表。
[0037]较佳的,所述地址获取模块,包括:
[0038]句柄获取子模块,用于获取所述待删除的注册表的注册表句柄;
[0039]指针识别子模块,用于识别所述注册表句柄中包含的指向所述设定对象的存储地址的指针;
[0040]存储地址获取子模块,用于根据保存的偏移量及所述指向所述设定对象的存储地址的指针,确定所述待删除的注册表中设定对象的存储地址。
[0041]较佳的,所述句柄获取子模块,具体用于:
[0042]打开所述注册表\\Registry\\Machine\\Sofware键,获得所述注册表的注册表句柄。
[0043]较佳的,所述判断挂钩模块,具体用于:
[0044]判断所述设定对象的存储地址是否为预设的字符,如果是,则确定所述设定对象的存储地址被挂钩。
[0045]较佳的,所述地址确定模块,包括:
[0046]基地址获取子模块,用于根据保存的内核基地址,加载所述内核,生成映射基地址;
[0047]挂钩前地址生成子模块,用于根据所述内核基地址、映射基地址及获取的所述设定对象的存储地址,生成所述设定对象被挂钩前的地址信息。
[0048]较佳的,所述挂钩前地址生成子模块,具体用于:
[0049]按下式生成所述设定对象被挂钩前的地址信息:
[0050]被挂钩前的地址信息=获取的所述设定对象的存储地址-内核基地址+映射基地址。
[0051]由上述的技术方案可见,本发明实施例提供了一种应用程序注册表删除方法及装置,应用于终端,所述终端根据待删除的注册表中保存的信息,获取所述注册表中设定对象的存储地址;判断所述设定对象的存储地址是否被挂钩;当判断所述设定对象的存储地址被挂钩时,则根据保存的内核基地址,确定所述设定对象被挂钩前的地址信息;将所述注册表中所述设定对象的存储地址恢复为所述被挂钩前的地址信息;根据所述注册表中所述设定对象被挂钩前的地址信息,删除所述注册表。由于本发明实施例当确定设定对象的存储地址被挂钩时,根据保存的内核基地址,确定所述设定对象被挂钩前的地址信息;将所述注册表中所述设定对象的存储地址恢复为所述被挂钩前的地址信息,将所述设定对象的存储地址恢复为被挂钩前的地址,进而能够对所述注
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1