CN111919198B - 内核函数回调的方法和系统 - Google Patents
内核函数回调的方法和系统 Download PDFInfo
- Publication number
- CN111919198B CN111919198B CN201880091970.3A CN201880091970A CN111919198B CN 111919198 B CN111919198 B CN 111919198B CN 201880091970 A CN201880091970 A CN 201880091970A CN 111919198 B CN111919198 B CN 111919198B
- Authority
- CN
- China
- Prior art keywords
- kernel function
- callback
- kernel
- operating system
- handler
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 87
- 230000006870 function Effects 0.000 claims description 438
- 238000012545 processing Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 description 23
- 239000010410 layer Substances 0.000 description 14
- 238000004891 communication Methods 0.000 description 12
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000012544 monitoring process Methods 0.000 description 7
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000002346 layers by function Substances 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002155 anti-virotic effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了用于内核函数回调的系统和方法。该方法可以包括将预回调处理程序和回调后处理程序挂接到计算设备的现有操作系统上。根据预回调处理程序,获得在操作系统的内核模式下执行的内核函数的内核函数请求,确定是否允许执行该内核函数,并使该内核函数在内核模式下执行以生成内核函数结果。根据回调后处理程序,确定是否允许返回内核函数的内核函数结果,并使该内核函数的内核函数结果返回给在操作系统非内核模式下执行的应用程序。
Description
版权声明
本申请包含受版权保护的内容。版权所有者不反对任何人以专利和商标局文件或记录中的形式对本专利申请进行传真复制,但在其他方面保留所有版权。
相关申请
本申请要求享有于2018年4月6日提交的题为“内核函数回调的方法和系统”的美国非临时申请No.15/946,963的优先权的权益,其全部内容通过引用包含于此。
发明领域
本申请一般涉及内核函数回调的方法和系统。
背景技术
向计算机系统的现有操作系统的内核中添加新的监控功能,将是增强计算机系统功能的有用方法。例如,将安全功能(例如,防病毒功能、勒索软件阻止功能、数据访问审核功能和数据泄漏监控功能)添加到现有操作系统的内核中,将有助于提高计算机系统的安全级别。但是,取决于现有操作系统的类型,操作系统的制造商已采取了一些限制措施,以防止第三方增加此类新功能。
发明内容
本说明书的各种实施例可以包括用于内核函数回调的系统、方法和非暂时性计算机可读介质。用于内核函数回调的方法可以包括将预回调处理程序和回调后处理程序挂接到计算设备的现有操作系统上。根据预回调处理程序,获得以操作系统的内核模式执行内核函数的内核函数请求,确定是否允许执行内核函数,以及使内核函数以内核模式执行以生成内核函数结果。根据回调后处理程序,确定是否允许返回内核函数的内核函数结果,并使该内核函数的内核函数结果返回给在操作系统的非内核模式下执行的应用程序。
在一些实施例中,该方法可以进一步包括:在确定不允许执行该内核函数之后,防止该内核函数被执行,并且使预操作错误返回给应用程序。
在一些实施例中,该方法可以进一步包括:在确定不允许返回该内核函数的内核函数结果之后,使操作后错误返回给应用程序。
在一些实施例中,该方法可以进一步包括:在确定不允许返回该内核函数的内核函数结果之后,修改该内核函数的内核函数结果,并使修改后的内核函数结果返回给应用程序。在一些实施例中,所述修改内核函数结果包括过滤掉包含在内核函数结果中的至少一部分数据。
在一些实施例中,预回调处理程序和回调后处理程序与内核函数唯一地关联,并且与不同类型的内核函数相关联的多个预回调处理程序和多个回调后处理程序被挂接到操作系统上。
在一些实施例中,内核函数包括文件系统操作。在一些实施例中,内核函数包括非文件系统操作,并且不包括文件系统操作。
在一些实施例中,在操作系统不受内核补丁保护的状态下,预回调处理程序和回调后处理程序挂接到操作系统。在某些实施例中,操作系统是MacOS或32位Windows操作系统。
参照附图考虑以下描述和所附权利要求,本文公开的系统、方法和非暂时性计算机可读介质的这些和其他的特征,以及相关结构元件的功能和操作方法,以及部件组合和制造经济性,可以变得更加显而易见,这些附图都构成本说明书的一部分,其中,相似的附图标记在各个附图中表示相应的部分。然而,应当理解的是,附图仅仅是为了说明和描述的目的,并不旨在限制本发明的范围。
附图说明
在所附权利要求中具体阐述了本技术的各种实施例的某些特征。通过参考下面的详细描述,可以更好地理解本技术的特征和优点,下面的详细描述阐明了利用本发明的原理的示例性实施例,及其附图:
图1示出了根据一些实施例的用于实现内核函数回调的操作系统(OS)操作架构的示例。
图2示出了根据一些实施例的与预操作回调函数和操作后回调函数有关的详细的操作系统(OS)操作架构的示例。
图3示出了根据一些实施例的用于执行预操作回调函数和操作后回调函数的示例方法的流程图。
图4示出了可以实现本文描述的任何实施例的示例计算机系统的框图。
具体实施方式
描述了本说明书的各种实施例,包括用于内核函数回调的系统、方法和非暂时性计算机可读介质,其可以适用于将新的监控功能添加到计算机系统的现有操作系统的内核中。
但是,这一操作取决于现有操作系统的类型,操作系统的制造商已采取了一些限制措施,以防止第三方增加此类新功能。例如,市场上可买到的操作系统(例如,macOS)提供了两个官方系统内核导出接口:i)内核授权接口和ii)强制访问控制接口,以向操作系统添加新功能。但是,内核编程接口仅限于几个文件操作的功能,并且可能缺乏将其可用性扩展到各种功能的灵活性。另外,可以拒绝来自第三方的强制访问控制接口,这取决于操作系统的制造商程序设置。实际上,由于制造商禁止第三方访问macOS的强制访问控制接口,因此macOS的强制访问控制接口对第三方不再可用。在另一示例中,市场上可用的操作系统(例如,Windows64位操作系统)通过实施内核补丁保护来限制第三方的内核补丁,据此,内核和内核代码使用的关键资源受到监控,当检测到某些数据结构或代码的未授权补丁时,操作系统将关闭。
根据本说明书的各种实施例,针对一些操作系统执行内核修补,这些操作系统至少临时授权其上的内核修补以添加新的监控功能。根据内核修补程序,即使没有系统内核导出接口可用于非制造方,也可以向操作系统的内核中添加新的监控功能。为了实现此目的,在一些实施例中,用于内核函数回调的方法包括将预回调处理程序和回调后处理程序挂接到计算设备的现有操作系统。根据预回调处理程序,用于在操作系统的内核模式下执行的内核函数的内核函数调用被获取,是否允许执行该内核函数被确定,并使该内核函数在内核模式下被执行以生成内核函数结果。根据回调后处理程序,是否允许返回内核函数的内核函数结果被确定,并使该内核函数的内核函数结果被返回给在操作系统非内核模式中执行的应用程序。
图1示出了根据一些实施例的用于实现内核函数回调的操作系统(OS)操作架构100的示例。在图1的示例中,操作架构100包括被执行的应用程序102、与应用程序102对应的应用程序接口(API)层104、系统服务分配器106、I/O管理器108、内核函数管理器110、内核函数执行处理程序112、可配置的预回调处理程序114和可配置的回调后处理程序116。如图所示,在操作系统的用户模式下执行应用程序102,并且在操作系统的内核模式下执行系统服务分配器106、内核函数管理器110、内核函数执行处理程序112、可配置的预回调处理程序114和可配置的回调后处理程序116,本发明的主题当然不限于这种架构。还应当理解,尽管以单数形式讨论了操作架构100的一些功能组件,但是可以在应用中采用一个或以上各种功能组件中的多个实例。
在一些实施例中,基于本说明书的操作系统包括适用的操作系统,而与操作系统所引入的计算设备无关。例如,计算设备可以包括服务器、诸如台式计算机和笔记本电脑之类的个人计算机、移动电话(例如,智能电话)、平板电脑、智能设备(例如,智能手表)和在操作系统之上运行的IoT(物联网)设备。具体而言,适用的操作系统可以包括基于Mac的操作系统(例如,macOS、iOS)、基于Windows的操作系统、基于Android的操作系统、Linux等。自然地,本说明书可以适用于不采用内核补丁保护的操作系统,例如,macOS。
在一些实施例中,基于本说明书的操作系统可以包括,在一个或以上集中和/或分布在网络中的物理计算机系统中仿真的一个或以上虚拟机(VM)上运行的操作系统。在一些实施例中,当基于本说明书的操作系统被应用于在类型2管理程序之上运行的虚拟机的操作系统(例如,客户操作系统)时,基于本说明书的操作系统还可以应用于宿主机的操作系统(例如,主机操作系统)。在一些实施例中,当基于本说明书的操作系统被应用于在类型1或类型2管理程序之上运行的虚拟机的一个或以上操作系统(例如,客户操作系统)时,基于本说明书的操作系统可以应用于部分客户操作系统,而不是全部客户操作系统。例如,采用macOS的一个或以上客户操作系统可以采用基于本说明书的操作系统,而采用基于Windows的操作系统的一个或以上客户操作系统可以不采用基于本说明书的操作系统。
在一些实施例中,图1所示的应用程序102旨在表示在操作系统之上执行的一个或多个应用程序。如图1所示,应用程序102在操作系统的用户模式下执行。在一些实施例中,在操作系统的用户模式下,执行代码通常不具有直接访问运行该操作系统的计算机系统的硬件或引用内存的能力。在一些实施例中,以用户模式运行的应用程序102的代码必须委托给应用程序接口层104以访问硬件或内存。由于这种隔离提供了保护,因此用户模式下的崩溃通常可以恢复。
在一些实施例中,图1所示的应用程序接口层104旨在表示与应用程序102调用的相应功能相关联的一个或以上API,和/或与不同的应用程序102相关联的一个或以上API。在一些实施例中,由应用程序102进行的功能调用通过应用程序接口层104被传递到以内核模式执行的组件。例如,对于运行该操作系统的计算机系统的硬件和/或内存,当在用户模式下运行的应用程序102生成输入和/或输出的I/O请求时,该I/O请求通过与来自应用程序102的I/O请求相对应的API传递,该API在应用程序接口层104中。
在一些实施例中,图1所示的系统服务分配器106旨在表示功能模块,该功能模块被配置为:使通过应用程序接口层104接收的功能调用在系统服务分配器106的系统服务分配表中排队,并从排队的功能调用中选择要为其执行内核函数(进程)的功能调用。在一些实施例中,系统服务分配器106将所选择的功能调用传递给内核函数管理器110,使之以操作系统的内核模式执行与所选择的功能调用相对应的内核进程。在一些实施例中,系统服务分配器106将功能调用结果传递到应用程序接口层104,使该功能调用结果被转发到已经生成了相应功能调用的应用程序102。在一些实施例中,在操作系统的内核模式下,执行代码具有对运行该操作系统的计算机系统的基础硬件的完整且不受限制的访问。操作系统通常可以执行任何CPU指令并引用任何内存地址。在一些实施例中,内核模式通常被保留用于最低级别,即操作系统最受信任的功能。
在一些实施例中,系统服务分配器106的系统服务分配表是逻辑表,在表中,通过应用程序接口层104接收的功能调用被排队。在一些实施例中,每个排队的功能调用的状态被维护在系统服务分配表中,使得可以管理功能调用的状态,诸如,准备处理、正在处理、已经处理。在一些实施例中,在系统服务分配表中,接收到的功能调用以适用顺序(诸如,先进先出(FIFO))排队,并且可根据功能调用的优先级而中断。在一些实施例中,系统服务分配器106参考排队的顺序和/或功能调用的状态,选择要传递给内核函数管理器110的下一个功能调用,并基于处理状态使功能调用的状态被更新。
在一些实施例中,图1中的I/O管理器108旨在表示功能模块,其被配置为管理应用程序102与设备驱动器提供的接口之间的通信。在一些实施例中,I/O管理器108将来自应用程序102的异步请求排队,并维持请求的状态。
在一些实施例中,图1所示的内核函数管理器110旨在表示功能模块,该功能模块被配置为:基于从系统服务分配器106接收的功能调用来生成内核函数请求,并使与该内核函数请求相对应的内核函数(进程)被执行。在一些实施例中,内核函数管理器110还被配置为接收通过执行内核函数生成的内核函数结果,并根据内核函数请求进一步处理内核函数结果。例如,内核函数管理器110将内核函数结果返回给系统服务分配器106。在另一个示例中,内核函数管理器110基于通过执行内核函数而生成的内核函数结果来生成要进一步执行的次要内核函数请求。
在一些实施例中,图1所示的内核函数执行处理程序112旨在表示功能模块,其被配置为执行与内核函数管理器110生成的内核函数请求相对应的内核函数。例如,内核函数请求指定关于硬盘和/或内存的I/O操作,内核函数执行处理程序112执行I/O操作。在一些实施例中,对于内核函数请求所请求的不同内核函数,内核函数执行处理程序112执行这些不同的内核函数。例如,当第一内核函数请求指定第一内核函数时,内核函数执行处理程序112执行第一内核函数;当第二内核函数请求指定与第一内核函数不同的第二内核函数时,内核函数执行处理程序112执行第二内核函数。在内核函数执行处理程序112执行内核函数之后,内核函数执行处理程序112生成内核函数结果,并将所生成的内核函数结果发送给内核函数管理器110。
在一些实施例中,图1所示的可配置的预回调处理程序114旨在表示功能模块,其被配置为:执行与内核函数关联的预操作回调函数,该函数由从内核函数管理器110接收的内核函数所请求。在一个具体的实现中,所述预操作回调函数包括对内核函数请求中所包括的输入参数的检查过程,例如,要执行进程的名称、签名、文件哈希等等,以及执行该进程的驱动程序的名称、签名、文件哈希等等。例如,当一个或以上检查的输入参数包括错误或产生错误,可配置的预回调处理程序114将内核函数请求返回给内核函数管理器110,使得对应于该内核函数请求的内核函数不被执行。在另一个示例中,当所检查的输入参数不包括错误或不产生错误,可配置的预回调处理程序114将内核函数请求从内核函数管理器110传递到内核函数执行处理程序112,使得对应于该内核函数请求的内核函数由此被执行。在一些实施例中,当可配置的预回调处理程序114返回(即,拒绝)内核函数请求时,内核函数管理器110生成错误通知,使该错误通知被转发到应用程序102,应用程序102通过系统服务分配器106和应用程序接口层104生成了与被拒绝的内核函数请求相对应的功能调用。
在一些实施例中,基于内核函数请求的类型,可配置的预回调处理程序114可以执行或不执行预操作回调函数,并且预操作回调函数由可配置的预回调处理程序114执行,其中预回调处理程序114可以不同。例如,当内核函数管理器110生成第一内核函数请求以执行第一内核函数时,可配置的预回调处理程序114执行与第一内核函数相关联的预操作回调函数。当内核函数管理器110生成第二内核函数请求以执行与第一内核函数不同的第二内核函数时,可配置的预回调处理程序114不执行任何预操作回调函数,而仅传递第二内核函数对内核函数执行处理程序112的请求。在另一示例中,当内核函数管理器110生成第一内核函数请求以执行第一内核函数时,可配置的预回调处理程序114执行与第一内核函数相关联的第一预操作回调函数;当内核函数管理器110生成第二内核函数请求以执行与第一内核函数不同的第二内核函数时,可配置的预回调处理程序114执行与第一预操作回调函数不同的第二预操作回调函数。
在一些实施例中,图1所示的可配置的回调后处理程序116旨在表示功能模块,该功能模块被配置为:执行与内核函数管理器110执行的内核函数相关联的操作后回调函数。在一个具体的实现中,操作后回调函数包括:内核函数结果中包含的输出参数的检查过程、修改输出参数以指示内核函数结果错误的修改过程、和/或从内核函数结果中过滤掉不可访问部分的过滤过程。例如,通过修改后的输出参数,内核函数结果可以表明应用程序102不能访问内核函数结果的内容,其中应用程序102生成了与内核函数相对应的功能调用。在另一示例中,通过修改后的输出参数,内核函数结果可以使执行某些功能(例如,对过程代码的修改)的一系列内核函数被中止。在一些实施例中,当操作后回调函数通过检查过程未发现错误时,可配置的回调后处理程序116将内核函数执行处理程序112获得的内核函数结果返回给内核函数管理器110,使之进行后续处理。
在图1中所示的操作架构100的操作示例中,以操作系统的用户模式运行的应用程序102生成功能调用并传递到应用程序接口层104(130a)。在操作示例中,应用程序接口层104将应用程序102生成的功能调用传递给以操作系统的内核模式运行的系统服务分配器106(130b)。在操作示例中,系统服务分配器106在系统服务分配表中对接收到的功能调用进行排队,并且当排队的功能调用准备好进行处理时,将排队的功能调用转发至内核函数管理器110(130c)。
在操作示例中,内核函数管理器110生成与所接收的功能调用相对应的内核函数请求,并将所生成的内核函数请求转发至可配置的预回调处理程序114(130d)。在操作示例中,可配置的预回调处理程序114通过参考内核函数请求的输入参数,来执行与所接收的内核函数请求相关联的预操作回调函数。在操作示例中,当可配置的预回调处理程序114在内核函数请求中发现错误时,可配置的预回调处理程序114拒绝内核函数请求,使得由内核函数请求所请求的内核函数不被执行。在操作示例中,当可配置的预回调处理程序114在内核函数请求中未发现错误时,可配置的预回调处理程序114将内核函数请求转发至内核函数执行处理程序112,使得由内核函数请求所请求的内核函数被执行(130e)。
在操作示例中,内核函数执行处理程序112生成执行所请求的内核函数获得的内核函数结果,并将生成的内核函数结果传递给可配置的回调后处理程序116(130f)。在操作示例中,可配置的回调后处理程序116通过参考内核函数结果的输出参数,来执行与接收到的内核函数结果相关联的操作后回调函数,并将经过操作后回调函数的内核函数结果传递给内核函数管理器110(130g)。在操作示例中,当可配置的回调后处理程序116在内核函数结果中发现错误时,可配置的回调后处理程序116修改和/或过滤内核函数结果,使得应用程序的预期功能被中止。在操作示例中,当可配置的回调后处理程序116在内核函数结果中未发现错误时,可配置的回调后处理程序116将内核函数结果转发给内核函数管理器110,以便执行后续操作,例如,将内核函数结果(功能调用结果)返回给应用程序102,和/或进一步执行由内核函数执行处理程序112执行的内核函数。
在操作示例中,内核函数管理器110将接收到的内核函数结果返回给系统服务分配器106(130h)。在操作示例中,系统服务分配器106基于接收到的内核函数结果来更新系统服务分配表108,并将该内核函数结果对应的功能调用结果传递给应用程序接口层104(130i)。在操作示例中,应用程序接口层104将功能调用结果传递给应用程序102(130j)。
如相关计算机和互联网相关领域的技术人员所理解的,图1所示的每个功能组件(例如,引擎、模块或数据库),可以使用硬件(例如,机器的处理器),或逻辑(例如,可执行软件指令)与执行逻辑的硬件(例如,机器的内存和处理器)的组合来实现。此外,图1中描绘的各种功能组件可以驻留在单个机器(例如,服务器)上,或者可以以各种布置分布在多个机器上,譬如基于云的架构。而且,这些组件中的任意两个或以上可以组合成单个组件(例如,单个模块),并且本文针对单个组件描述的功能可以在多个引擎之间细分。参照图4的例子示出了图1所示的功能组件的具体硬件结构。
图2示出了基于一些实施例的,与预操作回调函数和操作后回调函数有关的详细的操作系统(OS)操作架构200的示例。在图2的示例中,详细的操作系统操作架构200包括内核函数管理器210、内核函数执行处理程序212、可配置的预回调处理程序214和可配置的回调后处理程序216。在一些实施例中,内核函数管理器210、内核函数执行处理程序212、可配置的预回调处理程序214和可配置的回调后处理程序216,分别对应于图1中的内核函数管理器110、内核函数执行处理程序112、可配置的预回调处理程序114和可配置的回调后处理程序116。
在一些实施例中,图2中所示的内核函数执行处理程序212被配置为:执行由内核函数请求指定的多个内核函数212a-212n(n≥1)其中之一。在一些实施例中,内核函数212a-212n不限于文件系统相关的函数,还可以包括非文件系统相关的函数。例如,当响应于内核函数请求而执行内核函数212a时,输入为用于内核函数212a的输入参数,基于输入参数执行内核函数212a,并且作为内核函数212a的输出结果而生成输出参数。当接收到相应的内核函数请求时,针对每个内核函数212a-212n执行相同或相似的处理。
在一些实施例中,图2中所示的可配置的预回调处理程序214被配置为:注册一个或以上预回调子处理程序214a-214n(n≥1),每个子处理程序与内核执行函数212a-212n中的一个相关联。例如,预回调子处理程序214a、214b、…、214n分别与内核函数212a、212b、…、212n相关联。在一个具体的实现中,当内核函数管理器210生成的内核函数请求请求执行内核函数212a时,注册的预回调子处理程序214a被调出,预回调子处理程序214a执行与内核函数212a相对应的预操作回调函数。类似地,为内核函数212b、...、212n调出预回调子处理程序214b、...、214n,并且预回调子处理程序214b、...、214n执行相应的预操作回调函数。
在一些实施例中,当内核补丁保护未生效时,可配置的预回调处理程序214能够被引入(例如,挂接到)操作系统中。例如,在基于Mac的操作系统(例如,macOS)和基于32位Windows的操作系统中,未采用内核补丁保护,因此可配置的预回调处理程序214可以被挂接到操作系统。在另一个示例中,在基于64位Windows的操作系统中,默认情况下内核补丁保护处于活动状态,因此,可能需要禁用内核补丁保护才能挂接可配置的预回调处理程序214。此外,当可配置的预回调处理程序214挂接到操作系统时,可以根据对操作系统内核的具体要求(例如,安全级别、处理速度等)自由地添加或删除预回调子处理程序214a-214n。例如,当需要与某个内核函数相关联的安全功能时,可以将预回调子处理程序添加到可配置的预回调处理程序214中,该预回调子处理程序被配置为执行适合该安全功能的预操作回调函数。在另一个示例中,当不再需要与某个内核函数关联的安全功能时,可以从可配置的预回调处理程序214中删除预回调子处理程序,该预回调子处理程序被配置为执行适合该安全功能的预操作回调函数。在替代实施例中,可以为对应的内核函数添加或删除一个或以上单独的预回调处理程序。
在一些实施例中,图2中所示的可配置的回调后处理程序216被配置为:注册一个或以上回调后子处理程序216a-216n(n≥1),每个子处理程序与内核执行函数212a-212n中的一个相关联。例如,回调后子处理程序216a、216b、……、216n分别与内核函数212a、212b、……、212n相关联。在一个具体的实现中,当内核函数执行处理程序212执行内核函数212a生成内核函数结果时,注册的回调后子处理程序216a被调出,并且回调后子处理程序216a执行与内核函数212a的相对应的操作后回调函数。类似地,为内核函数212b、...、212n调出回调后子处理程序216b、...、216n,并且回调后子处理程序214b、...、214n执行相应的操作后回调函数。
在一些实施例中,与可配置的预回调处理程序214类似,当内核补丁保护未生效时,可配置的回调后处理程序216能够被引入(例如,挂接到)操作系统。而且,可以根据操作系统内核的具体要求自由地添加或删除回调后子处理程序216a-216n。
取决于实施例的具体实现,内核函数可以具有或不具有关联的回调前子处理程序和/或关联的回调后子处理程序。例如,第一内核函数可以具有关联的回调前子处理程序和关联的回调后子处理程序。在另一个示例中,第二内核函数可以具有关联的回调前子处理程序,并且可以不具有关联的回调后子处理程序。在又一个示例中,第三内核函数可以不具有关联的回调前子处理程序,并且可以具有关联的回调后子处理程序。在又一个示例中,第四内核函数可以既不具有关联的回调前子处理程序,也不具有关联的回调后子处理程序。
优点在于,根据预操作回调函数和/或操作后回调函数,可以将用于监视内核函数的功能层添加到操作系统的内核。在一些实施例中,用于监视内核函数的功能层可以用作审核内核函数和/或阻止恶意内核补丁的安全层。例如,基于针对未授权的内核修补而实施的预操作回调函数,通过这个预操作回调函数,将驱动程序(例如,恶意驱动程序)加载到操作系统的内核函数请求被检测到,并且驱动程序加载函数被中止。在另一个示例中,基于针对未经授权的内核修补而实施的操作后回调函数,获得指示加载驱动程序失败的内核函数结果,并将其返回给请求加载驱动程序的应用程序。
恶意攻击者可能尝试使用各种方法来触发和利用系统内核漏洞。这些方法可能包括:输入格式错误的数组索引以触发数组越界访问漏洞;输入一组格式错误的参数组合以触发整型溢出漏洞;以及发送恶意的销毁窗口请求以触发内核的释放后使用漏洞。根据预操作回调函数和/或操作后回调函数,可以防止这些方法触发系统内核漏洞。特别地,在获得来自操作系统供应商的官方补丁之前,可能需要几个月的时间才能知道漏洞,在此之前,预操作回调函数和/或操作后回调函数可用作临时的漏洞缓解解决方案。而且,预操作回调函数和/或操作后回调函数对于不再正式支持的操作系统(例如,不再发布官方安全补丁程序的诸如WindowsXP之类的操作系统)可能很有用。
图3示出了根据一些实施例的用于执行预操作回调函数和操作后回调函数的示例方法300的流程图。本文中描述的流程图描述了以有助于理解的方式组织的模块(以及可能的决策点)。但是,应该认识到,在情况允许的情况下,可以对模块进行重组以并行执行、重新排序、修改(更改、删除或扩充)。方法300可以在各种环境中实现,例如,图1中的操作系统操作架构100。示例方法300可以由图1中的操作系统操作架构100的一个或以上组件和/或图4的计算机系统400来实现。示例方法300可以由类似于操作系统操作架构100的多个系统来实现。下面介绍的方法300的操作意在说明。
在图3的模块302中,获取对于要执行的内核函数的内核函数请求。对应模块(例如,图1中的可配置的预回调处理程序114和/或图2中的可配置的预回调处理程序214)用于获取内核函数请求,由这个对应模块获取内核函数请求。在一些实施例中,从诸如图1中的内核函数管理器110和/或图2中的内核函数管理器210的对应模块获得内核函数请求。在一些实施例中,内核函数请求指定要执行的具体内核函数,例如,文件系统操作和/或与文件系统无关的操作。在一些实施例中,为了执行模块302,作为预备步骤,图1中的可配置的预回调处理程序114和/或可配置的预回调处理程序214,通过内联钩子方法预先被挂接到操作系统上。
在图3的模块304中,检查所获得的内核函数请求,以确定所获得的内核函数请求是否包括错误的(不可接受的)请求。对应模块(例如,图1中的可配置的预回调处理程序114和/或图2中的可配置的预回调处理程序214)用于检查内核函数请求,由这个对应模块检查获得的内核函数请求。在一些实施例中,基于某些标准(例如,阈值和/或标准值(范围)),检查所获得的内核函数请求的输入参数,例如,进程名称、签名、进程和/或驱动程序的文件哈希值。
在图3的决策点306,确定是否允许执行内核函数。在一些实施例中,对应模块(例如,图1中的可配置的预回调处理程序114和/或图2中的可配置的预回调处理程序214)用于确定是否允许执行内核函数,由这个对应模块确定是否允许执行内核函数。在一些实施例中,在决策点306中做出决策的规则是基于本地规则和/或外部规则,其中本地规则在运行操作系统的相应设备上本地确定,外部规则从互联网上的云端指示。在一些实施例中,当输入参数的值超过阈值和/或与标准值(范围)不匹配时,确定不允许执行内核函数。另一方面,当输入参数的值不超过阈值和/或与标准值范围匹配时,确定允许执行内核函数。当确定不允许执行内核函数时,方法300进行到模块316。当确定允许执行内核函数时,方法300进行到模块308。
在图3的模块308中,确定为允许在模块306中执行的内核函数被执行。对应模块(例如,图1中的内核函数执行处理程序112和/或图2中的内核函数执行处理程序212)用于执行内核函数,由这个内核模块执行内核函数。在一些实施例中,内核函数包括基于内核函数请求中包括的输入参数而执行的一系列代码处理操作。在一些实施例中,作为内核函数的一系列代码处理操作的结果,获得一个或以上输出参数作为内核函数结果。
在图3的模块310中,检查执行内核函数所获得的内核函数结果,以确定所获得的内核函数结果是否包括错误的(不可接受的)处理结果。对应模块(例如,图1中的可配置的回调后处理程序116和/或图2中的可配置的回调后处理程序216)用于检查内核函数结果,由这个对应模块检查获得的内核函数结果。在一些实施例中,参考某些标准(例如,阈值和/或标准值(范围)),来检查获得的内核函数结果的输出参数(例如,文件内容、对象句柄、进程令牌、内核内存数据、配置数据和/或系统密码),方式与在模块304中执行的输入参数的检查类似。
在图3的模块312中,确定是否允许返回内核函数结果。对应模块(例如,图1中的可配置的回调后处理程序116和/或图2中的可配置的回调后处理程序216)用于确定是否允许返回内核函数结果,由这个对应模块确定是否允许返回内核函数结果。在一些实施例中,当输出参数的值超过阈值和/或与标准值(范围)不匹配时,确定不允许返回内核函数结果。另一方面,当输出参数的值不超过阈值和/或与标准值范围匹配时,确定允许返回内核函数结果。当确定不允许返回内核函数结果时,方法300进行到模块318。当确定允许返回内核函数结果时,方法300进行到模块314。
在图3的模块314中,返回执行的内核函数的内核函数结果。对应模块(例如,图1中的可配置的回调后处理程序116和/或图2中的可配置的回调后处理程序216)用于返回内核函数结果,由这个对应模块返回执行的内核函数的内核函数结果。在一些实施例中,当内核函数包括基于文件系统的写操作时,内核函数结果可以包括对成功完成写操作的确认。在一些实施例中,当内核函数包括基于文件系统的读取操作时,内核函数结果可以包括通过读取操作读取的数据集。在一些实施例中,内核函数结果首先返回到对应的模块,例如,图1中的内核函数管理器110和/或图2中的内核函数管理器210,随后进行处理,例如,返回应用程序和/或进一步执行内核函数。
在图3的模块316中,在不执行所请求的内核函数的情况下返回预操作错误。对应模块(例如,图1中的可配置的预回调处理程序114和/或图2中的可配置的预回调处理程序214)用于返回预操作错误,由这个对应模块返回预操作错误。在一些实施例中,预操作错误表示所请求的内核函数被拒绝和/或所请求的内核函数未被执行。
在图3的模块318中,在未成功执行所请求的内核函数的情况下返回操作后错误。对应模块(例如,图1中的可配置的回调后处理程序116和/或图2中的可配置的回调后处理程序216)用于返回操作后错误,由这个对应模块返回操作后错误。在一些实施例中,操作后错误表示不能访问所请求的内核结果和/或所请求的内核函数尚未成功执行。
本文描述的技术由一个或以上专用计算设备实现。为了执行该技术,专用计算设备可以硬连接,或者可以包括集成电路或数字电子设备,例如,一个或以上被固定编程为执行该技术的可编程专用集成电路(ASIC)或现场可编程门阵列(FPGA),或者可以包括一个或以上硬件处理器,这些硬件处理器被编程为根据固件、内存、其他存储器或其组合中的程序指令执行该技术。这样的专用计算设备还可以将定制的硬连接逻辑电路、ASIC或FPGA与定制的程序相结合,以实现该技术。专用计算设备可以是台式计算机系统、服务器计算机系统、便携式计算机系统、手持式设备、网络设备或任何其他设备,或者将硬连接和/或程序逻辑结合的设备组合,以实现该技术。计算设备通常由操作系统软件控制和协调。传统操作系统控制和调度计算机进程的执行,执行内存管理,提供文件系统、网络、I/O服务,以及提供诸如图形用户界面(“GUI”)之类的用户界面功能。
图4是示出可以在其上实现本文描述的任何实施例的计算机系统400的框图。具体地,系统400使图1中描述的系统100的功能组件能够如上所述地起作用。计算机系统400包括总线402或用于传递信息的其他通信机制,与总线402耦合以用于处理信息的一个或以上硬件处理器404。硬件处理器404可以是,例如,一个或以上通用微处理器。
计算机系统400还包括主存储器406(例如,随机存取存储器(RAM)、高速缓存和/或其他动态存储设备),其耦合到总线402,用于存储信息和由处理器404执行的指令。主存储器406还可以用于,在执行由处理器4504执行的指令期间,存储临时变量或其他中间信息。当这些指令存储在处理器404可访问的存储介质中时,计算机系统400配置为专用于执行指令中指定操作的专用机器。计算机系统400还包括耦合到总线402的只读存储器(ROM)408或其他静态存储设备,用于存储静态信息和处理器404的指令。提供了存储设备410,例如,磁盘、光盘或U盘(闪存盘)等,其耦合到总线402以存储信息和指令。
计算机系统400可以使用定制的硬连接逻辑电路、一个或以上ASIC或FPGA、固件和/或程序逻辑来实现本文描述的技术,这些逻辑与计算机系统结合,或者给计算机系统编程,使计算机系统400成为专用机器。根据一个实施例,本文的技术由计算机系统400来实施,计算机系统400响应处理器404,处理器404执行包含在主存储器406中的一个或以上指令的一个或多个序列。可以从诸如存储设备410之类的另一存储介质将这样的指令读入主存储器406。执行包含在主存储器406中的指令序列,使处理器404执行本文所述的处理步骤。在替代实施例中,可以使用硬连接电路代替软件指令或与软件指令结合使用。
主存储器406,只读存储器408和/或存储设备410可以包括非暂时性存储介质。如本文所述,术语“非暂时性介质”和类似术语是指存储数据和/或使机器以特定方式操作的指令的任何介质。这样的非暂时性介质可以包括非易失性介质和/或易失性介质。非易失性介质,例如,存储设备410,包括光盘或磁盘之类。易失性介质,例如,主存储器406,包括动态存储器。非暂时性媒体的常见形式包括,例如,软盘、小软盘、硬盘、固态硬盘、磁带或任何其他磁数据存储介质;CD-ROM、任何其他光数据存储介质;任何有孔样式的物理介质;RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其他存储芯片或存储卡;以及它们的网络版本。
计算机系统400还包括耦合到总线402的通信接口418。通信接口418提供耦合到一个或以上网络链路的双向数据通信,该网络链路连接到一个或以上本地网络。例如,通信接口418可以是综合业务数字网(ISDN)卡、电缆调制解调器、卫星调制解调器或普通的调制解调器,以提供对应类型电话线路的数据通信连接。作为另一个例子,通信接口418可以是局域网(LAN)卡,以提供兼容LAN(或与WAN通信的WAN组件)的数据通信连接。也可以使用无线连接实现。在任何这类实现中,通信接口418发送和接收电、电磁或光信号,这些信号携带表示各种类型信息的数字数据流。
计算机系统400可以通过网络、网络链路和通信接口518,发送消息并接收数据,包括程序代码。在因特网的例子中,服务器可以通过因特网、ISP、本地网络和通信接口418,传送针对应用程序的请求的代码。
接收到的代码可以在接收后由处理器404执行,和/或存储在存储设备410或其他非易失性存储器中,供以后执行。
前面各章节中描述的过程、方法和算法中的每一个,都可以体现在由一个或以上计算机系统或包括计算机硬件的处理器执行的代码模块中,由其完全或部分自动执行。该过程和算法可以在专用电路中部分或全部实现。
上述的各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合都将在本申请的范围内。另外,在某些实施方式中,可以省略某些方法或过程中的步骤。本文所述的方法和过程也不限于任何特定的顺序,并且可以以适当的其他顺序执行与之相关的步骤或方法。例如,执行所描述的步骤或方法的顺序,可以与具体披露的顺序不同,或者可以将多个步骤或方法组合为一个步骤或方法。例子中的步骤或方法可以以串行、并行或其他方式执行。可以将步骤或方法添加到所披露的示例性实施例中,或从中删除。本文描述的示例系统和组件的配置可以与所描述的不同。例如,与所公开的示例性实施例相比,可以将元素添加、移除或重新布置。
本文描述的示例方法的各种操作可以至少部分地通过算法来执行。该算法可以包括在存储器(例如,上述非暂时性计算机可读存储介质)上存储的程序代码或指令中。这样的算法可以包括机器学习算法。在一些实施例中,机器学习算法可以不显式地给计算机编程以执行功能,但是可以从训练数据中学习以形成执行该功能的预测模型。
本文描述的示例性方法的各种操作,可以至少部分地由一个或以上临时配置(例如,通过软件)或永久配置为执行相关操作的处理器执行。无论是临时配置还是永久配置,这样的处理器都可以构成处理器实现的引擎,以执行本文所述的一个或以上操作或功能。
类似地,本文描述的方法可以至少部分地由处理器实现,其中一个或多个特定处理器是示例硬件。例如,一种方法的至少一些操作可以由一个或以上处理器或处理器实现的引擎执行。此外,一个或以上处理器还可在“云计算”环境中或作为“软件即服务”(SaaS)来支持相关操作的执行。例如,至少一些操作可以由一组计算机(作为包括处理器的机器的示例)执行,这些操作可以通过网络(例如,互联网)和一个或以上适当的接口(例如,应用程序接口(API))来访问。
某些操作的执行可能会分布在多个处理器上,不仅仅驻留在单个计算机,而是会部署在多个计算机上。在一些示例性实施例中,处理器或处理器实现的引擎可以位于单个地理位置(例如,在家庭环境、办公室环境或服务器集群中)。在其他示例性实施例中,处理器或处理器实现的引擎可以分布在多个地理位置上。
在整个说明书中,多个实例都可以实现被描述为单个实例的组件、操作或结构。尽管将一种或多种方法的单独操作示出并描述为单独的操作,但是可以同时执行一个或以上单独操作,并且不需要按照所示顺序执行操作。在示例配置中表示为单独组件的结构和功能可以实现为结构组合或组件。类似地,表示为单个组件的结构和功能可以实现为单独的组件。这些以及其他变形、修改、补充和改进仍属于本文主题的范围。
尽管已经参考具体示例性实施例描述了主题的概况,但是在不脱离本说明书实施例更广泛范围的情况下,可以对这些实施例进行各种修改和改变。仅出于方便起见,本文的主题的这些实施例可以单独地或共同地用术语“发明”来指代,并且,如果实际上披露了多个申请内容,则无意将本申请的范围限制为任何单个申请内容或概念。
充分详细地描述了本文示出的实施例,以使本领域技术人员能够按照所披露的教导实践。可使用并由此衍生出其他实施例,从而可以在不脱离本申请范围的情况下进行结构和逻辑上的替换和改变。因此,不应在限制意义上理解详细描述,并且各种实施例的范围仅由所附权利要求以及这些权利要求所赋予的全部等效范围来定义。
本文中描述的流程图,和/或在附图中描绘的流程图中的任何过程描述、元素或步骤,都应被理解为隐含地表示模块、代码段或代码部分,其包括用于实施具体逻辑功能或步骤的一个或多个进程中的可执行指令。替代实施方式包括在本文描述的实施方式的范围内,如本领域技术人员将理解的,根据所涉及的功能,其中的元素或功能可能会从中删除,以不同于所示或所讨论的顺序执行,包括基本相同的时序或逆序,
如本文所使用的,术语“或”可以以包括性或排他性的意义来解释。此外,对本文中描述为单个实例的资源、操作或结构,也可以认为其为多个实例。另外,各种资源、操作、引擎和数据存储之间的边界有些模糊,并且具体的操作在具体的配置说明内容中说明。可以设想功能的其他分配方式,并且其可以落入本申请的各种实施例的范围内。通常,在示例配置中表示为单独资源的结构和功能可以实现为组合结构或资源。类似地,表示为单个资源的结构和功能可以实现为单独的资源。这些以及其他变形、修改、补充和改进仍属于如所附权利要求所表示的本说明书的实施例的范围内。因此,说明书和附图应被认为是说明性的而不是限制性的。
除非另外明确说明,或所使用的上下文中有另外的理解,否则,条件性语言(例如,“能够”,“可以”,“可能”或“也许可以”等)通常旨在传达,某些实施方式包括,而其他实施例不包括某些特征、元素和/或步骤。因此,这样的条件语言,通常不旨在暗示特征、元素和/或步骤以任何方式对于一个或以上实施例是必需的,或者一个或以上实施例必须包括某些逻辑,这些逻辑用于确定,无论用户是否输入或提示,这些特征、元素和/或步骤在任何特定实施例中被包括或将被执行。
Claims (20)
1.一种内核函数回调的方法,包括:
将预回调处理程序和回调后处理程序挂接到计算设备的现有操作系统上,其中,当可配置的所述预回调处理程序挂接到所述操作系统时,根据对操作系统内核的要求,为所述内核函数添加或删除关联的预回调子处理程序,所述对操作系统内核的要求包括安全级别和处理速度中的至少一种;
所述预回调处理程序获取内核函数请求,所述内核函数请求要求内核函数以所述操作系统的内核模式执行;
所述预回调处理程序根据所述内核函数请求的参数,确定是否允许执行所述内核函数;
在确定允许执行所述内核函数之后,使所述内核函数以内核模式执行以生成内核函数结果;
所述回调后处理程序确定是否允许返回所述内核函数的所述内核函数结果;
在确定允许返回所述内核函数的所述内核函数结果之后,使所述内核函数的所述内核函数结果返回给以所述操作系统的非内核模式执行的应用程序。
2.根据权利要求1所述的方法,进一步包括:在确定不允许执行所述内核函数之后,防止所述内核函数被执行,并且使预操作错误返回给所述应用程序。
3.根据权利要求1所述的方法,进一步包括:在确定不允许返回所述内核函数的所述内核函数结果之后,使操作后错误返回给所述应用程序。
4.根据权利要求1所述的方法,进一步包括:在确定不允许返回所述内核函数的所述内核函数结果之后,修改所述内核函数的所述内核函数结果,并使所述修改后的内核函数结果返回给所述应用程序。
5.根据权利要求4所述的方法,其中,所述修改所述内核函数结果包括:过滤掉包含在所述内核函数结果中的至少一部分参数。
6.根据权利要求1所述的方法,其中,所述预回调处理程序和回调后处理程序与所述内核函数唯一地关联,并且与不同类型的内核函数相关联的多个预回调处理程序和多个回调后处理程序被挂接到所述操作系统上。
7.根据权利要求1所述的方法,其中,所述内核函数包括文件系统操作。
8.根据权利要求1所述的方法,其中,所述内核函数包括非文件系统操作,并且不包括文件系统操作。
9.根据权利要求1所述的方法,其中,在所述操作系统不受内核补丁保护的状态下,所述预回调处理程序和所述回调后处理程序挂接到所述操作系统。
10.根据权利要求1所述的方法,其中,所述操作系统是macOS或32位Windows操作系统。
11.一种内核函数回调的计算机系统,包括:
一个或以上处理器;以及
存储指令的存储器,当指令被所述一个或以上处理器执行时,使所述计算机系统:
通过挂接在所述计算机系统的操作系统上的预回调处理程序,获取内核函数请求,所述内核函数请求要求内核函数在所述计算机系统中以操作系统的内核模式执行,当可配置的所述预回调处理程序挂接到所述操作系统时,根据对操作系统内核的要求,为所述内核函数添加或删除关联的预回调子处理程序,所述对操作系统内核的要求包括安全级别和处理速度中的至少一种;
所述预回调处理程序根据所述内核函数请求的参数确定是否允许执行所述内核函数;
在确定允许执行所述内核函数之后,使所述内核函数以所述内核模式执行以生成内核函数结果;
由同样挂接到所述计算机系统的所述操作系统的回调后处理程序确定是否允许返回所述内核函数的所述内核函数结果;
在确定允许返回所述内核函数的所述内核函数结果之后,使所述内核函数的所述内核函数结果返回给以所述操作系统的非内核模式执行的应用程序。
12.根据权利要求11所述的计算机系统,其中,在确定不允许执行所述内核函数之后,所述指令还使所述计算机系统防止所述内核函数被执行,并且使预操作错误返回给所述应用程序。
13.根据权利要求11所述的计算机系统,其中,在确定不允许返回所述内核函数的所述内核函数结果之后,所述指令还使所述计算机系统将操作后错误返回给所述应用程序。
14.根据权利要求11所述的计算机系统,其中,在确定不允许返回所述内核函数的所述内核函数结果之后,所述指令还使所述计算机系统修改所述内核函数的所述内核函数结果,并使所述修改后的内核函数结果返回给所述应用程序。
15.根据权利要求14所述的计算机系统,其中,所述修改所述内核函数结果包括:过滤掉包含在所述内核函数结果中的至少一部分数据。
16.根据权利要求11所述的计算机系统,其中,所述预回调处理程序和回调后处理程序与所述内核函数唯一地关联,并且与不同类型的内核函数相关联的多个预回调处理程序和多个回调后处理程序被挂接到所述操作系统上。
17.根据权利要求11所述的计算机系统,其中,所述内核函数包括文件系统操作。
18.根据权利要求11所述的计算机系统,其中,所述内核函数包括非文件系统操作,并且不包括文件系统操作。
19.根据权利要求11所述的计算机系统,其中,在所述操作系统不受内核补丁保护的状态下,所述预回调处理程序和所述回调后处理程序挂接到所述操作系统。
20.根据权利要求11所述的计算机系统,其中,所述操作系统是macOS或32位Windows操作系统。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/946,963 US11106491B2 (en) | 2018-04-06 | 2018-04-06 | Method and system for kernel routine callbacks |
US15/946,963 | 2018-04-06 | ||
PCT/US2018/063824 WO2019194873A1 (en) | 2018-04-06 | 2018-12-04 | Method and system for kernel routine callbacks |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111919198A CN111919198A (zh) | 2020-11-10 |
CN111919198B true CN111919198B (zh) | 2024-05-03 |
Family
ID=68097190
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880091970.3A Active CN111919198B (zh) | 2018-04-06 | 2018-12-04 | 内核函数回调的方法和系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11106491B2 (zh) |
CN (1) | CN111919198B (zh) |
WO (1) | WO2019194873A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11169869B1 (en) * | 2020-07-08 | 2021-11-09 | International Business Machines Corporation | System kernel error identification and reporting |
CN113452532B (zh) * | 2021-06-25 | 2022-08-12 | 统信软件技术有限公司 | 一种网络通信方法、计算设备及可读存储介质 |
CN114138691A (zh) * | 2021-11-05 | 2022-03-04 | 杭州薮猫科技有限公司 | 基于回调机制的内核扩展方法、装置及设备 |
CN114462388A (zh) * | 2022-02-11 | 2022-05-10 | 阿里巴巴(中国)有限公司 | 句柄管理或通信方法、电子设备、存储介质及程序产品 |
US11902435B1 (en) * | 2022-07-20 | 2024-02-13 | CUBE Security Inc. | Access control interfaces for blockchains |
CN116204336B (zh) * | 2023-02-16 | 2023-09-22 | 中国人民解放军61660部队 | 一种基于注册表回调机制的用户态核心态同步方法与系统 |
CN117235686B (zh) * | 2023-10-30 | 2024-01-30 | 杭州海康威视数字技术股份有限公司 | 数据保护方法、装置及设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101841470A (zh) * | 2010-03-29 | 2010-09-22 | 东南大学 | 一种基于Linux的底层数据包的高速捕获方法 |
CN103620613A (zh) * | 2011-03-28 | 2014-03-05 | 迈克菲股份有限公司 | 用于基于虚拟机监视器的反恶意软件安全的系统和方法 |
CN104008330A (zh) * | 2014-05-23 | 2014-08-27 | 武汉华工安鼎信息技术有限责任公司 | 基于文件集中存储及隔离技术的数据防泄漏系统及其方法 |
CN104598823A (zh) * | 2015-01-21 | 2015-05-06 | 华东师范大学 | 一种安卓系统中内核级rootkit检测方法及其系统 |
CN106055979A (zh) * | 2016-05-24 | 2016-10-26 | 百度在线网络技术(北京)有限公司 | 内核修复方法和装置 |
CN106228062A (zh) * | 2016-07-12 | 2016-12-14 | 北京金山安全软件有限公司 | 一种处理进程注册的方法、装置及电子设备 |
CN106919458A (zh) * | 2015-12-25 | 2017-07-04 | 腾讯科技(深圳)有限公司 | Hook目标内核函数的方法及装置 |
CN107016283A (zh) * | 2017-02-15 | 2017-08-04 | 中国科学院信息工程研究所 | 基于完整性验证的Android权限提升攻击安全防御方法和装置 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7526797B2 (en) | 2002-07-24 | 2009-04-28 | Sun Microsystems, Inc. | System and method for processing callback requests included in web-based procedure calls through a firewall |
US6993603B2 (en) * | 2002-12-09 | 2006-01-31 | Microsoft Corporation | Managed file system filter model and architecture |
US7048877B2 (en) | 2004-03-30 | 2006-05-23 | Intel Corporation | Efficiently supporting interrupts |
US7676508B2 (en) * | 2004-11-10 | 2010-03-09 | Microsoft Corporation | Method and system for recording and replaying input-output requests issued by a user-mode program |
US7599907B2 (en) * | 2004-11-30 | 2009-10-06 | Microsoft Corporation | Method and system applying policy on screened files |
US8434098B2 (en) * | 2008-02-07 | 2013-04-30 | Microsoft Corporation | Synchronizing split user-mode/kernel-mode device driver architecture |
US8271996B1 (en) * | 2008-09-29 | 2012-09-18 | Emc Corporation | Event queues |
US8561090B2 (en) * | 2009-02-26 | 2013-10-15 | Red Hat, Inc. | Method and an apparatus to implement secure system call wrappers |
US8806511B2 (en) | 2010-11-18 | 2014-08-12 | International Business Machines Corporation | Executing a kernel device driver as a user space process |
CN102725763A (zh) * | 2010-12-08 | 2012-10-10 | 松下电器产业株式会社 | 信息处理装置及信息处理方法 |
US20130304705A1 (en) * | 2012-05-11 | 2013-11-14 | Twin Peaks Software, Inc. | Mirror file system |
US9122873B2 (en) * | 2012-09-14 | 2015-09-01 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
WO2015160118A1 (ko) * | 2014-04-15 | 2015-10-22 | (주)나무소프트 | 보안 저장 영역에 대한 응용 프로그램의 접근 제어 방법 및 장치 |
US10198674B2 (en) * | 2016-12-22 | 2019-02-05 | Canon Kabushiki Kaisha | Method, apparatus and system for rendering a graphical representation within limited memory |
-
2018
- 2018-04-06 US US15/946,963 patent/US11106491B2/en active Active
- 2018-12-04 WO PCT/US2018/063824 patent/WO2019194873A1/en active Application Filing
- 2018-12-04 CN CN201880091970.3A patent/CN111919198B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101841470A (zh) * | 2010-03-29 | 2010-09-22 | 东南大学 | 一种基于Linux的底层数据包的高速捕获方法 |
CN103620613A (zh) * | 2011-03-28 | 2014-03-05 | 迈克菲股份有限公司 | 用于基于虚拟机监视器的反恶意软件安全的系统和方法 |
CN104008330A (zh) * | 2014-05-23 | 2014-08-27 | 武汉华工安鼎信息技术有限责任公司 | 基于文件集中存储及隔离技术的数据防泄漏系统及其方法 |
CN104598823A (zh) * | 2015-01-21 | 2015-05-06 | 华东师范大学 | 一种安卓系统中内核级rootkit检测方法及其系统 |
CN106919458A (zh) * | 2015-12-25 | 2017-07-04 | 腾讯科技(深圳)有限公司 | Hook目标内核函数的方法及装置 |
CN106055979A (zh) * | 2016-05-24 | 2016-10-26 | 百度在线网络技术(北京)有限公司 | 内核修复方法和装置 |
CN106228062A (zh) * | 2016-07-12 | 2016-12-14 | 北京金山安全软件有限公司 | 一种处理进程注册的方法、装置及电子设备 |
CN107016283A (zh) * | 2017-02-15 | 2017-08-04 | 中国科学院信息工程研究所 | 基于完整性验证的Android权限提升攻击安全防御方法和装置 |
Non-Patent Citations (5)
Title |
---|
An Executable File Encryption Based Scheme for Malware Defense;Chenghua Yan;2009 International Workshop on Intelligent Systems and Applications;全文 * |
Linux下用户态和内核态内存共享的实现;陈浩;;电脑编程技巧与维护(第04期);全文 * |
Windows内核恶意代码分析与检测技术研究;左黎明;;计算机技术与发展(第09期);全文 * |
基于文件系统过滤驱动的文件加密系统设计;刘伟;胡平;;微电子学与计算机(第04期);全文 * |
操作系统内核程序函数执行上下文的自动检验;汪黎;杨学军;王戟;罗宇;;软件学报(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
WO2019194873A1 (en) | 2019-10-10 |
US11106491B2 (en) | 2021-08-31 |
US20190310883A1 (en) | 2019-10-10 |
CN111919198A (zh) | 2020-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111919198B (zh) | 内核函数回调的方法和系统 | |
US10810164B2 (en) | Securing access to functionality of a file-based write filter | |
US11645390B2 (en) | Cloud-based method to increase integrity of a next generation antivirus (NGAV) security solution in a virtualized computing environment | |
US10565378B1 (en) | Exploit of privilege detection framework | |
US10528735B2 (en) | Malicious code protection for computer systems based on process modification | |
US10002252B2 (en) | Verification of trusted threat-aware microvisor | |
US8220029B2 (en) | Method and system for enforcing trusted computing policies in a hypervisor security module architecture | |
US9094451B2 (en) | System and method for reducing load on an operating system when executing antivirus operations | |
US7631249B2 (en) | Dynamically determining a buffer-stack overrun | |
US20170180318A1 (en) | Dual Memory Introspection for Securing Multiple Network Endpoints | |
US7865952B1 (en) | Pre-emptive application blocking for updates | |
US11100242B2 (en) | Restricted resource classes of an operating system | |
US20180247055A1 (en) | Methods for protecting a host device from untrusted applications by sandboxing | |
US10467058B2 (en) | Sandboxing for multi-tenancy | |
EP2973175B1 (en) | Managing device driver cross ring accesses | |
US8752130B2 (en) | Trusted multi-stakeholder environment | |
JP2010182196A (ja) | 情報処理装置およびファイル検証システム | |
US10242182B2 (en) | Computer security system and method | |
US11386199B2 (en) | Isolating an application running inside a native container application | |
US11442770B2 (en) | Formally verified trusted computing base with active security and policy enforcement | |
KR101710328B1 (ko) | 동적 재구성 및 교체를 지원하는 os 보안 커널 시스템 및 그 방법 | |
US20190334949A1 (en) | Protecting computing devices from a malicious process by exposing false information | |
GB2566347A (en) | Computer device and method for controlling process components | |
US11677754B2 (en) | Access control systems and methods | |
US10809924B2 (en) | Executable memory protection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |