一种注册表键值的获取方法及装置的制造方法_3

文档序号:9866042阅读:来源:国知局
可实现对该虚拟的键值内容的查询。比如可查找预先存储的与该键值名"abc〃关联的键值,S卩〃\〃c: \\users\\lenovo\\appdata\\local\\Iiebao\\lieba0.exe\,并可将该关联的键值"\"c: \\users\\lenovo\\appdata\\local\\Iiebao\\lieba0.exe\〃内容写到KeyValueInformat1n字段中,也就是用〃\〃c:\\users\\lenovo\\appdata\\local\\liebao\\lieba0.exe\〃替换Key Value Informat 1n 字段中原来的内存数据。进一步的,在完成该替换之后,还可将MyRegNtPreQueryValueKey的返回状态改为STATUS_CALLBACK_BY_OK的值,用于表明该MyRegNtPreQueryValueKey函数已经完成了键值查询功能,而无需要往下传到解析磁盘得到键值了(现有的键值查询流程则是到解析磁盘查询键值,该解析磁盘中存储的键值可能是恶意程序技术修改后的键值),即虚拟后就不需要执行到“CmpQueryValueKey解析硬盘文件注册表数据”,而是直接返回,让查询操作者认为查询到真实数据了。由此,不管键值名"abc"的键值被任意恶意程序用何种技术更改,在查询使用此键值的时候,都能返回正确的需要查询的键值数据。该返回的正确键值数据则使得应用程序能够正常启动,如确保了默认浏览器的锁定正常等。其中,该操作者即为当前正在执行函数的进程。
[0082]在本发明实施例中,可通过预置不同注册表键名以及与每一个注册表键值名对应的键值,并将该注册表键值名及其对应的键值进行关联存储,使得在接收到键值查询请求时,能够通过获取该键值查询请求对应的目标键值名,并进一步根据该目标键值名获取预置的与该目标键值名关联的正确键值,将该预置的键值作为当前需要查询的注册表键值,以根据该预置的键值确保应用程序的正常启动。本发明实施例不再使用现有的通过用APIHOOK的方式来保护注册表键值数据,从而解决了因恶意修改注册表键值而无法获得正确的注册表键值的问题,实现了注册表键值的有效保护,避免了给用户带来不便及损失。
[0083]请参阅图3,图3是本发明实施例提供的一种注册表键值的获取装置的结构示意图。具体的,如图3所示,本发明实施例的所述注册表键值的获取装置可以包括接收模块11以及获取模块12。其中,
[0084]所述接收模块11,用于接收键值查询请求。
[0085]需要说明的是,本发明实施例的所述注册表键值的获取装置可具体设置于终端设备(以下简称终端),如智能手机(如Android手机、1S手机等)、平板电脑、移动互联网设备(Mobile Internet Devices,简称“MID” )、个人电脑等终端中,本发明实施例不做限定。
[0086]可选的,该键值查询请求可以是在打开安装于终端的某一应用程序时触发的,以获取该应用程序的注册表键值。
[0087]所述获取模块12,用于获取所述键值查询请求对应的目标键值名。
[0088]其中,所述目标键值名为所述键值查询请求需要查询的注册表键值的名称。具体的,该目标键值名可以是通过解析该键值查询请求对应的应用程序的注册表信息结构得到的。
[0089]所述获取模块12,还用于获取预置的与所述目标键值名对应的键值,并将与所述目标键值名对应的键值作为所述需要查询的注册表键值。
[0090]具体实施例中,该终端中可预置有不同注册表键值名以及与该注册表键值名对应的键值,该预置的键值为该键值查询请求所需要的正确的注册表键值,如根据终端合法用户的操作设置的键值,或者系统默认设置的键值等等,其区别于被恶意程序技术修改后的键值。从而在接收模块11接收到键值查询请求如打开某一应用程序触发的键值查询请求时,获取模块12能够通过获取该键值查询请求对应的目标键值名,并根据该获取的目标键值名获取到正确的键值,以确保应用程序的正常启动。
[0091]在本发明实施例中,可在接收到键值查询请求时,获取该键值查询请求对应的目标键值名,并进一步根据该目标键值名获取预置的与该目标键值名对应的正确键值,将该预置的键值作为当前需要查询的注册表键值,以根据该注册表键值确保应用程序的正常启动,从而解决了因恶意修改注册表键值而无法获得正确的注册表键值的问题,避免了给用户带来不便及损失。
[0092]进一步的,请参阅图4,图4是本发明实施例提供的另一种注册表键值的获取装置的结构示意图。具体的,如图4所示,本发明实施例的所述装置包括上述图3对应实施例的注册表键值的获取装置中的接收模块11以及获取模块12,此处不再赘述。进一步的,在本发明实施例中,所述装置还可包括:
[0093]预置模块13,用于预先获取不同的注册表键值名,并为每一个注册表键值名配置与该注册表键值名对应的键值;
[0094]存储模块14,用于将每一个注册表键值名以及与该注册表键值名对应的键值进行关联存储。
[0095]具体实施例中,可通过预置模块13预先配置得到各应用程序对应的不同注册表键值名以及与该注册表键值名对应的键值(即虚拟的键值内容,其为预置的正确注册表键值),并通过存储模块14将注册表键值名以及该注册表键值名对应的键值进行关联存储,如保存到全局数据中,以便于后续启动应用程序进行键值查询时,能够及时地获取得到相应注册表键值相关联的键值,即预置的正确注册表键值,比如根据终端合法用户的操作设置的键值,或者系统默认设置的键值等等,其区别于被恶意程序技术修改后的键值。
[0096]可选的,在本发明实施例中,所述存储模块14可具体包括(图中未示出):
[0097]路径获取单元141,用于分别获取不同的注册表键值名对应的注册表路径;
[0098]关联存储单元142,用于将每一个注册表键值名、与该注册表键值名对应的注册表路径以及与该注册表键值名对应的键值进行关联存储;
[0099]所述获取模块12获取预置的与所述目标键值名对应的键值,并将与所述目标键值名对应的键值作为所述需要查询的注册表键值的具体方式可以为:
[0100]获取预先存储的与所述目标键值名和目标注册表路径关联的键值,并将获取的键值作为所述需要查询的注册表键值。
[0101 ]进一步的,在本发明实施例中,所述装置还可包括:
[0102]注册模块15,用于在底层函数中预先注册注册表回调函数,并将所述注册表回调函数的处理操作类型配置为查询注册表键值的类型;
[0103]所述获取模块12获取预置的与所述目标键值名对应的键值的具体方式可以为:
[0104]通过调用所述注册表回调函数获取所述键值查询请求对应的注册表信息结构;
[0105]将所述注册表信息结构的预设字段中的键值确定为与所述目标键值名对应的键值。
[0106]具体的,注册模块15可使用底层函数CmRegistercallback注册一个注册表回调函数,该CmRegistercallback函数处于较底层的层面,使得难以被恶意程序穿透,以确保数据的安全性。假设该注册的回调函数的函数名是RegistryCallback,并且注册模块15可将回调函数里处理操作类型配置为(RegOperat1nClass = RegNtPreQueryValueKey)查询注册表键值的类型,处理这个类型的函数定义为MyRegNtPreQueryValueKey,从而使得系统中所有查询注册表键值的行为,都会进入MyRegNtPreQueryVaIueKey函数。由此,可在MyRegNtPreQueryValueKey里实现查询注册表键值的虚拟。
[0107]进一步的,在接收到键值查询请求如检测到打开某一应用程序触发的键值查询请求时,获取模块12即可获取该键值查询请求对应的注册表信息结构,具体可通过调用该注册表回调函数获取得到键值查询请求对应的注册表信息结构,如该My RegNt PreQueryVa I ueKey 函数中的第二个参数Argument 2 是REG_QUERY_VALUE_KEY_INFORMAT1N结构类型的,则获取
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1