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

文档序号:9866042阅读:来源:国知局
实施例的所述方法可具体应用于终端设备(以下简称终端),如智能手机(如Android手机、1S手机等)、平板电脑、移动互联网设备(Mobi IeInternet Devices,简称“MID” )、个人电脑等终端中,本发明实施例不做限定。
[0058]可选的,该键值查询请求可以是在打开安装于终端的某一应用程序时触发的,以触发获取该应用程序的注册表键值。
[0059]102、获取所述键值查询请求对应的目标键值名。
[0060]其中,所述目标键值名为所述键值查询请求需要查询的注册表键值的名称。具体的,该目标键值名可以是通过解析该键值查询请求对应的应用程序的注册表信息结构得到的。
[0061 ]具体的,终端可预先获取不同的注册表键值名,并为每一个注册表键值名配置与该注册表键值名对应的键值;将每一个注册表键值名以及与该注册表键值名对应的键值进行关联存储。从而预置得到不同注册表键值名及其对应的正确键值。
[0062]103、获取预置的与所述目标键值名对应的键值,并将与所述目标键值名对应的键值作为所述键值查询请求需要查询的注册表键值。
[0063]具体实施例中,该终端中可预置有不同注册表键值名以及与该注册表键值名对应的键值,该预置的键值为该键值查询请求所需要的正确的注册表键值,如根据终端合法用户的操作设置的键值,或者系统默认设置的键值等等,其区别于被恶意程序技术修改后的键值。从而能够根据该获取的正确的键值确保应用程序的正常启动。
[0064]进一步可选的,终端还可分别获取不同的注册表键值名对应的注册表路径;则所述将每一个注册表键值名以及与该注册表键值名对应的键值进行关联存储,可以具体为:将每一个注册表键值名、与该注册表键值名对应的注册表路径以及与该注册表键值名对应的键值进行关联存储。进一步的,所述获取预置的与所述目标键值名对应的键值,并将与所述目标键值名对应的键值作为所述键值查询请求需要查询的注册表键值,可以具体为:获取预先存储的与所述目标键值名和目标注册表路径关联的键值,并将获取的键值作为所述键值查询请求需要查询的注册表键值。其中,所述目标注册表路径为所述键值查询请求对应的注册表路径,具体可通过解析该键值查询请求对应的注册表信息结构得到。
[0065]在本发明实施例中,可在接收到键值查询请求时,获取该键值查询请求对应的目标键值名,并进一步根据该目标键值名获取预置的与该目标键值名对应的正确键值,并将该预置的键值作为当前需要查询的注册表键值,以根据该注册表键值确保应用程序的正常启动,从而解决了因恶意修改注册表键值而无法获得正确的注册表键值的问题,避免了给用户带来不便及损失。
[0066]进一步的,请参阅图2,图2是本发明实施例提供的另一种注册表键值的获取方法的流程示意图。具体的,如图2所示,本发明实施例的所述注册表键值的获取方法可以包括以下步骤:
[0067]201、预先获取不同的注册表键值名,并为每一个注册表键值名配置与该注册表键值名对应的键值。
[0068]202、将每一个注册表键值名以及与该注册表键值名对应的键值进行关联存储。
[0069]具体实施例中,可预先配置得到各应用程序对应的不同注册表键值名以及与该注册表键值名对应的键值(即虚拟的键值内容,其为预置的正确注册表键值),并将注册表键值名以及该注册表键值名对应的键值进行关联存储,如保存到全局数据中,以便于后续启动应用程序进行键值查询时,能够及时地获取得到相应注册表键值相关联的键值,即预置的正确注册表键值,比如根据终端合法用户的操作设置的键值,或者系统默认设置的键值等等,其区别于被恶意程序技术修改后的键值。
[0070]可选的,终端还可分别获取不同的注册表键值名对应的注册表路径;则所述将每一个注册表键值名以及与该注册表键值名对应的键值进行关联存储,可以具体为:将每一个注册表键值名、与该注册表键值名对应的注册表路径以及与该注册表键值名对应的键值进行关联存储。从而能够在后续进行键值查询时,通过获取当前注册表键值名和注册表路径来准确查找与其关联的键值。
[0071]203、在底层函数中预先注册注册表回调函数,并将所述注册表回调函数的处理操作类型配置为查询注册表键值的类型。
[0072]可选的,本发明实施例可使用CmRegistercal Iback注册表回调来实现查询注册表的虚拟,该CmRegistercal Iback函数处于较底层的层面,使得难以被恶意程序穿透,以确保数据的安全性。具体的,可使用底层函数CmRegistercalIback注册一个注册表回调函数,假设该注册的回调函数的函数名是RegistryCallback,并可将回调函数里处理操作类型配置为(RegOperat1nClass = RegNtPreQueryValueKey)查询注册表键值的类型,处理这个类型的函数定义为MyRegNtPreQueryValueKey;这就使得系统中所有查询注册表键值的行为,都会进入MyRegNtPreQueryValueKey函数。由此,可在MyRegNtPreQueryVaIueKey里实现查询注册表键值的虚拟。
[0073]204、当接收到键值查询请求时,通过调用所述注册表回调函数获取所述键值查询请求对应的注册表信息结构。
[0074]205、从所述注册表信息结构中获取所述键值查询请求对应的目标键值名。
[0075]进一步的,在接收到键值查询请求如检测到打开某一应用程序触发的键值查询请求时,即可获取该键值查询请求对应的注册表信息结构,具体可通过调用该注册表回调函数来获取得到键值查询请求对应的注册表信息结构,如该MyRegNtPreQueryValueKey函数中的第二个参数Argument2是REG_QUERY_VALUE_KEY_INFORMAT1N结构类型的,则可将其作为键值查询请求对应的注册表信息结构,该结构类型的数据可包括需要查询的即键值查询请求对应的注册表路径、注册表键值名(即目标键值名)。例如,该注册表信息结构可以如下所示:
[0076][HKEY_CURRENT_USER\Software\Classes\http\shell\open\command]"abc〃=〃\〃c:\\users\\lenovo\\appdatalocal\\liebao\\lieba0.exe\
[0077]其中,该[HKEY_CURRENT_USER\Software\Classes\http\shell\open\command]为注册表路径;该“abc”为注册表键值名,即该键值查询请求对应的目标键值名;该〃〃\〃c: Wusers\\lenovo\\appdatalocal\\liebao\\lieba0.exe \ "为注册表键值。由于MyRegNtPreQueryValueKey函数是在查询前时候会进入的,所以还没有该〃〃\〃c: \\users\\lenovo\\appdatalocal\\liebao\\lieba0.exe\〃注册表键值部分的内容,而这部份键值内容即是需要虚拟的内容,也就是该键值查询请求需要查询的键值,其具体为预置的与注册表信息结构中的注册表键值名相关联的注册表键值,即该目标键值名对应的键值。
[0078]206、查找预先存储的与所述目标键值名关联的键值。
[0079]可选的,还可获取根据该键值查询请求对应的当前注册表路径,则该查找预先存储的与所述目标键值名关联的键值,可以具体为:根据获取的当前注册表键值名和注册表路径即目标键值名和目标注册表路径,查找出预先存储的与该目标键值名和目标注册表路径相关联的键值。
[0080]207、将所述注册表信息结构的预设字段中的内存数据替换为所述关联的键值,并将所述关联的键值确定为所述键值查询请求需要查询的键值。
[0081]具体的,该需要查询的注册表键值可从该注册表信息结构中的预设字段获取得至Ij,比如上述的REG_QUERY_VALUE_KEY_ INFORMAT1N结构类型中,有一个KeyValueInformat1n字段,把虚拟的键值内容即与该目标键值名相关联的键值(也就是需要查询的注册表键值)填写到这个字段中即
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1