首页> 中国专利> 一种基于注册表回调机制的用户态核心态同步方法与系统

一种基于注册表回调机制的用户态核心态同步方法与系统

摘要

本发明公开一种基于注册表回调机制的用户态核心态同步方法与系统,涉及网络安全领域。以“REGISTRY$MUYcmdCodeParametres”配置注册表的表项,作为注册表的表项的模式;利用CmRegisterCallbackEx例程注册注册表的回调函数RegistryCallback;操作系统调用回调函数RegistryCallback,并通过调用的回调函数RegistryCallback的参数获取当前状态下的注册表的表项;其中,在当前状态下的注册表的表项的模式为步骤S1中经配置的注册表的表项的模式的情况下,提取cmdCode的参数,并执行与cmdCode的参数对应的任务。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-09-22

    授权

    发明专利权授予

  • 2023-06-20

    实质审查的生效 IPC(主分类):G06F 9/54 专利申请号:2023101245113 申请日:20230216

    实质审查的生效

  • 2023-06-02

    公开

    发明专利申请公布

说明书

技术领域

本发明属于网络安全技术领域,尤其涉及一种基于注册表回调机制的用户态核心态同步方法与系统。

背景技术

在Windows中,用户态和核心态同步可通过命名事件、文件回调等方式实现,但现有的这些方式存在一些问题,命名事件不能用于用户态向内核态传递数据,文件回调等其它回调技术不能保持同步。且这些方式存在一个重大缺点:即在内核程序停滞时,处于同步状态的用户态程序将会长时间无响应。

发明内容

为了解决上述技术问题,本发明提出一种基于注册表回调机制的用户态核心态同步方案。

本发明第一方面公开了一种基于注册表回调机制的用户态核心态同步方法。所述方法包括:步骤S1、以“\REGISTRY\$MUY\cmdCode\Parametres”配置注册表的表项,作为所述注册表的表项的模式;步骤S2、利用CmRegisterCallbackEx例程注册所述注册表的回调函数RegistryCallback;步骤S3、操作系统调用所述回调函数RegistryCallback,并通过调用的所述回调函数RegistryCallback的参数获取当前状态下的注册表的表项;其中,在所述当前状态下的注册表的表项的模式为所述步骤S1中经配置的所述注册表的表项的模式的情况下,提取cmdCode的参数,并执行与所述cmdCode的参数对应的任务。

根据第一方面的方法,在所述方法中,用户态的目标线程以所述步骤S1中经配置的所述注册表的表项的模式来注册一个注册表项,具体包括:核心态在所述目标线程的第一条指令处配置钩子,使得所述目标线程在执行到所述第一条指令时先执行所述钩子,以通过调用ZwCreateKey例程注册所述一个注册表项,执行完所述钩子后再执行所述第一条指令;所述核心态获取经注册的所述回调函数RegistryCallback在所述当前状态下的参数,并提取所述当前状态下cmdCode的参数,以执行与所述当前状态下cmdCode的参数对应的任务。

根据第一方面的方法,所述钩子包括两段结构:第一段结构包括与调用所述ZwCreateKey例程相关的数据结构,以及为调用所述ZwCreateKey例程所需要的准备环境的指令;第二段结构为所述调用ZwCreateKey例程的包装。

根据第一方面的方法,所述核心态在所述目标线程中插入内核APC;其中,在执行完所述钩子后直接调用所述内核APC,以确保执行所述第一条指令。

本发明第二方面公开了一种基于注册表回调机制的用户态核心态同步系统;在所述系统中通过模块单元执行:以“\REGISTRY\$MUY\cmdCode\Parametres”配置注册表的表项,作为所述注册表的表项的模式;利用CmRegisterCallbackEx例程注册所述注册表的回调函数RegistryCallback;操作系统调用所述回调函数RegistryCallback,并通过调用的所述回调函数RegistryCallback的参数获取当前状态下的注册表的表项;其中,在所述当前状态下的注册表的表项的模式为经配置的所述注册表的表项的模式的情况下,提取cmdCode的参数,并执行与所述cmdCode的参数对应的任务。

根据第二方面的系统,在所述系统中,用户态的目标线程以所述经配置的所述注册表的表项的模式来注册一个注册表项,具体包括:核心态在所述目标线程的第一条指令处配置钩子,使得所述目标线程在执行到所述第一条指令时先执行所述钩子,以通过调用ZwCreateKey例程注册所述一个注册表项,执行完所述钩子后再执行所述第一条指令;所述核心态获取经注册的所述回调函数RegistryCallback在所述当前状态下的参数,并提取所述当前状态下cmdCode的参数,以执行与所述当前状态下cmdCode的参数对应的任务。

根据第二方面的系统,所述钩子包括两段结构:第一段结构包括与调用所述ZwCreateKey例程相关的数据结构,以及为调用所述ZwCreateKey例程所需要的准备环境的指令;第二段结构为所述调用ZwCreateKey例程的包装。

根据第二方面的系统,所述核心态在所述目标线程中插入内核APC;其中,在执行完所述钩子后直接调用所述内核APC,以确保执行所述第一条指令。

本发明第三方面公开了一种电子设备。所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现本公开第一方面中任一项所述的一种基于注册表回调机制的用户态核心态同步方法中的步骤。

本发明第四方面公开了一种计算机可读存储介质。所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现本公开第一方面中任一项所述的一种基于注册表回调机制的用户态核心态同步方法中的步骤。

综上,在深入分析注册表回调机制的基础上,提出了一种注册表回调钩子,该种钩子包括精心构造的数据结构和指令,可以有效应用于钩子线程第一条指令和函数等,并正确调用ZwCreateKey,传递命令码和信息。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为根据本发明实施例的用户态与核心态进行同步的流程示意图;

图2为根据本发明实施例的一种电子设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例只是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明第一方面公开了一种基于注册表回调机制的用户态核心态同步方法。所述方法包括:步骤S1、以“\REGISTRY\$MUY\cmdCode\Parametres”配置注册表的表项,作为所述注册表的表项的模式;步骤S2、利用CmRegisterCallbackEx例程注册所述注册表的回调函数RegistryCallback;步骤S3、操作系统调用所述回调函数RegistryCallback,并通过调用的所述回调函数RegistryCallback的参数获取当前状态下的注册表的表项;其中,在所述当前状态下的注册表的表项的模式为所述步骤S1中经配置的所述注册表的表项的模式的情况下,提取cmdCode的参数,并执行与所述cmdCode的参数对应的任务。

注册表回调是微软在Windows系统里引入的监控注册表的手段,通过CmRegisterCallback或者CmRegisterCallbackEx(Windows VISTA及之后的系统)例程注册一个回调函数,通过该回调函数来监控对系统注册表的修改动作。注册表操作有以下几类:(1)创建注册表键或值;(2)修改注册表键或值;(3)删除注册表键或值。其中(1)操作在系统中的调用频率低,监控此类操作系统的开销小,本发明采用监控此种操作来实现。

在一些实施例中,在所述方法中,用户态的目标线程以所述步骤S1中经配置的所述注册表的表项的模式来注册一个注册表项,具体包括:核心态在所述目标线程的第一条指令处配置钩子,使得所述目标线程在执行到所述第一条指令时先执行所述钩子,以通过调用ZwCreateKey例程注册所述一个注册表项,执行完所述钩子后再执行所述第一条指令;所述核心态获取经注册的所述回调函数RegistryCallback在所述当前状态下的参数,并提取所述当前状态下cmdCode的参数,以执行与所述当前状态下cmdCode的参数对应的任务。

在一些实施例中,所述钩子包括两段结构:第一段结构包括与调用所述ZwCreateKey例程相关的数据结构,以及为调用所述ZwCreateKey例程所需要的准备环境的指令;第二段结构为所述调用ZwCreateKey例程的包装。

具体地,第一段结构包含与调用ZwCreateKey例程相关的数据结构和准备环境的指令,钩子的开头是一个跳转指令,跳过接下来数据部分,接着执行准备环境的指令,准备好环境后,调用第二段结构,钩子执行完成后跳转到原始代码处执行;第二段结构是调用ZwCreateKey例程的包装。

在一些实施例中,所述核心态在所述目标线程中插入内核APC;其中,在执行完所述钩子后直接调用所述内核APC,以确保执行所述第一条指令。

图1为根据本发明实施例的用户态与核心态进行同步的流程示意图;如题1所示。

进程的创建过程中会调用LoadLibrary函数,本实施例描述一种拦截LoadLibrary调用的过程,目的是为了获取LoadLibrary调用的相关参数。本例涉及两个注册表回调钩子,分别用于挂钩线程第一条指令和LoadLibrary函数。

箭头序号表示操作系统运行相对顺序。核心态线程首先将第一个注册表回调钩子放置于目标线程第一条指令处,待目标线程执行到钩子时,会调用ZwCreateKey例程,触发本专利所述的注册表回调函数。核心态会调用回调函数,在该回调函数中,核心态线程根据cmdCode执行不同的操作,当前情况下cmdCode为1,执行挂钩LoadLibrary操作,将第二个钩子放置于LoadLibrary函数开头。

与之类似,当目标线程执行LoadLibrary函数时,会运行第二个钩子代码,将LoadLibrary函数运行的参数信息放入注册表项的Parametres处并执行ZwCreateKey例程,同样核心态会调用回调函数,当前情况下cmdCode为2,在该回调函数中,核心态线程根据此时的cmdCode执行不同的操作。由此,可以有效地协调核心态、用户态运行过程,核心态能在准确的时机获取用户态调用LoadLibrary时的有关信息。

本发明第二方面公开了一种基于注册表回调机制的用户态核心态同步系统;在所述系统中通过模块单元执行:以“\REGISTRY\$MUY\cmdCode\Parametres”配置注册表的表项,作为所述注册表的表项的模式;利用CmRegisterCallbackEx例程注册所述注册表的回调函数RegistryCallback;操作系统调用所述回调函数RegistryCallback,并通过调用的所述回调函数RegistryCallback的参数获取当前状态下的注册表的表项;其中,在所述当前状态下的注册表的表项的模式为经配置的所述注册表的表项的模式的情况下,提取cmdCode的参数,并执行与所述cmdCode的参数对应的任务。

根据第二方面的系统,在所述系统中,用户态的目标线程以所述经配置的所述注册表的表项的模式来注册一个注册表项,具体包括:核心态在所述目标线程的第一条指令处配置钩子,使得所述目标线程在执行到所述第一条指令时先执行所述钩子,以通过调用ZwCreateKey例程注册所述一个注册表项,执行完所述钩子后再执行所述第一条指令;所述核心态获取经注册的所述回调函数RegistryCallback在所述当前状态下的参数,并提取所述当前状态下cmdCode的参数,以执行与所述当前状态下cmdCode的参数对应的任务。

根据第二方面的系统,所述钩子包括两段结构:第一段结构包括与调用所述ZwCreateKey例程相关的数据结构,以及为调用所述ZwCreateKey例程所需要的准备环境的指令;第二段结构为所述调用ZwCreateKey例程的包装。

根据第二方面的系统,所述核心态在所述目标线程中插入内核APC;其中,在执行完所述钩子后直接调用所述内核APC,以确保执行所述第一条指令。

本发明第三方面公开了一种电子设备。所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现本公开第一方面中任一项所述的一种基于注册表回调机制的用户态核心态同步方法中的步骤。

图2为根据本发明实施例的一种电子设备的结构图,如图2所示,电子设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、近场通信(NFC)或其他技术实现。该电子设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是电子设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图2中示出的结构,仅仅是与本公开的技术方案相关的部分的结构图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

本发明第四方面公开了一种计算机可读存储介质。所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现本公开第一方面中任一项所述的一种基于注册表回调机制的用户态核心态同步方法中的步骤。

综上,由于在Windows驱动和安全程序开发中,使用命名事件、文件回调等方式进行用户态与核心态的同步和传递信息存在种种缺点和不稳定。本发明通过应用于注册表回调的钩子,注册注册表回调函数并针对ZwCreateKey作检查,根据注册表项传递的命令码和参数来进行某些操作,从而实现用户态与核心态的同步和传递信息,提高了同步稳定性。

请注意,以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号