CN109446755A - 内核钩子函数保护方法、装置、设备以及存储介质 - Google Patents

内核钩子函数保护方法、装置、设备以及存储介质 Download PDF

Info

Publication number
CN109446755A
CN109446755A CN201811163052.5A CN201811163052A CN109446755A CN 109446755 A CN109446755 A CN 109446755A CN 201811163052 A CN201811163052 A CN 201811163052A CN 109446755 A CN109446755 A CN 109446755A
Authority
CN
China
Prior art keywords
access
instruction
access instruction
internal storage
control area
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.)
Granted
Application number
CN201811163052.5A
Other languages
English (en)
Other versions
CN109446755B (zh
Inventor
章隆兵
王剑
肖俊华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Loongson Technology Corp Ltd
Original Assignee
Loongson Technology Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Loongson Technology Corp Ltd filed Critical Loongson Technology Corp Ltd
Priority to CN201811163052.5A priority Critical patent/CN109446755B/zh
Publication of CN109446755A publication Critical patent/CN109446755A/zh
Application granted granted Critical
Publication of CN109446755B publication Critical patent/CN109446755B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供的一种内核钩子函数保护方法、装置、设备以及存储介质,该方法包括:根据针对钩子函数的访存指令中包含的访存信息,对访存指令进行检测,确定访存指令为非正常访问指令或者正常访问指令,若访存指令是非正常访问指令,则对访存指令进行报警。本方案减少了内核钩子函数保护的系统开销,且具有保护全面和难以绕开的特点。

Description

内核钩子函数保护方法、装置、设备以及存储介质
技术领域
本发明涉及计算机安全技术领域,尤其涉及一种内核钩子函数保护方法、装置、设备以及存储介质。
背景技术
目前,计算机安全受到越来越多的关注。由于计算机系统是复杂的软硬件系统,漏洞的存在几乎是不可避免的,针对各种漏洞的攻击行为为计算机系统带来很大的安全隐患。
其中,内核钩子函数攻击就是攻击者利用Size漏洞覆盖内核中钩子函数结构中的钩子函数指针,从而导致恶意代码被执行引发提权。全反夹式(full-nelson)攻击就是一种典型内核钩子函数攻击,通过改变堆上的内核控制依赖数据(函数钩子),劫持了内核控制流,进而调用敏感函数完成提权攻击。目前,已有的内核钩子函数保护方法大致有3种,包括:基于纯软件的HookScout、基于虚拟机技术的HookSafe和利用英特尔(Intel)管态模式访问保护机制SMAP(Supervisor mode access prevention)的基于硬件的内核钩子函数保护方法。
但是,现有技术针对内核钩子函数的保护方法存在保护方法系统开销大、保护不完备和易于被绕开的缺点。
发明内容
本发明提供一种内核钩子函数保护方法、装置、设备以及存储介质,拟克服现有技术中保护方法系统开销大、保护不完备和易于被绕开的缺点。
第一方面,本发明提供一种内核钩子函数的保护方法,包括:
接收访存指令;其中,所述访存指令用于对钩子函数执行访存操作,且所述访存指令中包含访存信息;
根据所述访存信息和内存访问控制区域,对所述访存指令进行检测,判断所述访存指令为非正常访问指令或者正常访问指令;所述内存访问控制区域为预先配置的存储区域,且所述内存访问控制区域用于存储所述钩子函数的指针;
若所述访存指令是非正常访问指令,则对所述访存指令进行报警。
进一步的,所述方法还包括:
若所述访存指令是正常访问指令,则获取所述内存访问控制区域中存储的所述钩子函数的指针;
根据获取的所述钩子函数的指针,对所述钩子函数进行访问。
在一种具体的实现方式中,所述访存指令的信息包括:所述访存指令的操作码和要访存的地址,则根据所述访存信息和内存访问控制区域,对所述访存指令进行检测,判断所述访存指令为非正常访问指令或者正常访问指令,包括:
若所述地址在所述内存访问控制区域内,且根据所述访存指令的操作码确定所述访存指令是预设指令,则所述访存指令为正常访问指令;
若所述地址不在所述内存访问控制区域内,且根据所述访存指令的操作码确定所述访存指令是预设指令,则所述访存指令为非正常访问指令;
若所述地址在所述内存访问控制区域内,且根据所述访存指令的操作码确定所述访存指令不是预设指令,则所述访存指令为非正常访问指令。
具体的,所述预设指令包括特定读指令和特定写指令。
具体的,接收访存指令之前,所述方法还包括:
配置所述内存访问控制区域;
在所述内存访问控制区域内分配预设大小的空间,并将钩子函数的指针存储在所述内存访问控制区域内分配的空间中,生成空间指针;其中,所述空间指针为指向所述内存访问控制区域内为所述钩子函数分配的空间的指针;
在所述钩子函数的结构体中存入空间指针。
第二方面,本发明提供一种内核钩子函数的保护装置,包括:
接收模块,用于接收访存指令;其中,所述访存指令用于对钩子函数执行访存操作,且所述访存指令中包含访存信息;
判断模块,用于根据所述访存信息和内存访问控制区域,对所述访存指令进行检测,判断所述访存指令为非正常访问指令或者正常访问指令;所述内存访问控制区域为预先配置的存储区域,且所述内存访问控制区域用于存储所述钩子函数的指针;
处理模块,用于若所述访存指令是非正常访问指令,则对所述访存指令进行报警。
在一种具体的实现方式中,所述处理模块还用于:
若所述访存指令是正常访问指令,则获取所述内存访问控制区域中存储的所述钩子函数的指针;
根据获取的所述钩子函数的指针,对所述钩子函数进行访问。
具体的,所述访存指令的信息包括:所述访存指令的操作码和要访存的地址,则所述判断模块具体用于:
若所述地址在所述内存访问控制区域内,且根据所述访存指令的操作码确定所述访存指令是预设指令,则所述访存指令为正常访问指令;
若所述地址不在所述内存访问控制区域内,且根据所述访存指令的操作码确定所述访存指令是预设指令,则所述访存指令为非正常访问指令;
若所述地址在所述内存访问控制区域内,且根据所述访存指令的操作码确定所述访存指令不是预设指令,则所述访存指令为非正常访问指令。
具体的,所述预设指令包括特定读指令和特定写指令。
在一种具体的实现方式中,所述接收访存指令之前,所述处理模块还用于:
配置所述内存访问控制区域;
在所述内存访问控制区域内分配预设大小的空间,并将钩子函数的指针存储在所述内存访问控制区域内分配的空间中,生成空间指针;其中,所述空间指针为指向所述内存访问控制区域内为所述钩子函数分配的空间的指针;
在所述钩子函数的结构体中存入空间指针。
第三方面,本发明提供一种电子设备,包括:存储器、处理器、以及计算机程序,所述计算机程序存储在所述存储器中,所述处理器运行所述计算机程序执行第一方面所述的内核钩子函数的保护方法。
第四方面,本发明提供一种存储介质,包括:可读存储介质和计算机程序,所述计算机程序用于实现第一方面所述的内核钩子函数的保护方法。
本发明实施例提供的一种内核钩子函数的保护方法、装置、电子设备和存储介质,根据对钩子函数的访存指令的信息对访存指令进行检测,确定访存指令为非正常访问指令或者正常访问指令,若访存指令是非正常访问指令,则对访存指令进行报警,实现了通过内存访问控制区域的判断,检测出对内核钩子函数的攻击,能够完整的保护内核钩子函数且难以被绕开,不管攻击者修改钩子函数指向用户空间或者内核代码都能检测出来。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的一种内核钩子函数的保护方法实施例一的流程示意图;
图2为本发明实施例提供的一种内核钩子函数保护方法实施例二的流程示意图;
图3为本发明实施例提供的一种内核钩子函数的保护方法实施例三的流程示意图;
图4为本发明实施例提供的一种处理器中支持内存访问控制区域的硬件模块设计示意图;
图5为本发明实施例提供的一种内存访问控制区域的访问检测模块的控制逻辑的流程图;
图6为本发明实施例提供的一种内核钩子函数攻击检测流程;
图7为本发明实施例提供的一种内核钩子函数的保护装置的结构示意图;
图8为本发明实施例提供的电子设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
现有技术中,对内核钩子函数的保护方法主要有基于纯软件的、基于虚拟机监视器和基于硬件的三种方法。现有基于纯软件的、基于虚拟机监视器的保护方法主要采用动态收集所有钩子函数的保存位置和钩子函数的合法目标地址,配置动态监控引擎,对钩子函数的保存位置和合法目标地址进行监控。动态监控引擎可以检查对钩子函数进行访存的访存指令所包含的地址是否合法,从而判断钩子函数是否受到攻击。然而,采用动态收集钩子函数保存位置和合法目标地址的方法,收集到的集合很可能不是完整的。同时,动态监控引擎可能会被绕过或者误导,并且,内核中对钩子函数的访问都需要重新定位,并进行相应正确性检查,这些操作导致系统开销较大,对系统性能有较大影响。现有的基于硬件的钩子函数保护方法,是利用Intel管态模式访问保护机制使得处于内核态的代码不能够访问或者执行用户空间的数据或者代码,可以用来防御钩子函数攻击。但是也存在保护不完整、可能会被绕过、支持范围小的缺陷。
为克服现有技术的问题,本方案提出一种软件硬件配合的基于内存访问控制区域的内核钩子函数保护方法,可以实现对内核钩子函数的保护。通过软硬件配合来实现内存访问控制区域,将钩子函数指针统一存放到内存访问控制区域,所有对该内存访问控制区域的非正常访问将被检测出来进行攻击报警,从而实现对内核钩子函数的保护;并且本方案设计了专门的硬件支持,相比于软件或者基于虚拟机技术的钩子函数保护方法而言,具有难以绕开的优点。另外,由于本发明主要依赖硬件来进行动态内核钩子函数的攻击检测,具有高性能的特点。本发明能够完整地保护内核钩子函数,不管攻击者修改钩子函数指向用户空间或者内核代码都能检测出来。
下面通过几个具体实施例对该方案进行详细说明。
实施例一:
图1为本发明实施例提供的一种内核钩子函数的保护方法实施例一的流程示意图,如图1所示,内核钩子函数的保护方法的流程示意图可以包括:
S101:接收访存指令。
其中,该访存指令用于对钩子函数执行访存操作,该访存操作包括读操作和写操作。在一种具体的实现方式中,访存信息包括操作码和访存的地址;操作码为预先设置的指示访存指令类型的标识信息;该访存的地址为物理地址或者虚拟地址,较佳的,访存的地址为虚拟地址,以下均以虚拟地址为例进行方案的阐述。
S102:根据上述访存信息和内存访问控制区域,对访存指令进行检测,判断该访存指令为非正常访问指令或者正常访问指令。
在本步骤中,应理解,在执行访问指令之前,需先判断该访存指令是正常访问指令还是非正常访问指令,通过判断识别出对钩子函数有攻击意图的访存指令。
具体的,根据接收到的对钩子函数的访存指令,获取访存信息;并根据该访存信息,确定访存的虚拟地址和操作码;通过判断访存的虚拟地址是否在内存访问控制区域内及根据操作码判断是否为预设指令,确定访存指令为非正常访问指令或者正常访问指令。其中,上述访存指令目的为访问内核钩子函数;上述访存的虚拟地址为访存指令所要访问的目的地址。
具体的,如果访存信息中访存的虚拟地址在内存访问控制区域内,且根据操作码确定访存指令是预设指令,则访存指令为正常访问指令,并且该访存指令为钩子函数的访问指令。
具体的,如果访存信息中访存的虚拟地址在内存访问控制区域内,且根据操作码确定访存指令不是预设指令,则访存指令为非正常访问指令。
或者,如果访存信息中的虚拟地址不在内存访问控制区域内,且根据操作码确定访存指令是预设指令,则访存指令为非正常访问指令。
可选的,如果访存信息中访存的虚拟地址不在内存访问控制区域内,且根据操作码确定访存指令不是预设指令,则访存指令为正常访问指令,但该访存指令可判断为一个非内核钩子函数的普通访存指令。
此处,应理解,上述预设指令即为特定读写指令,包括特定读指令和特定写指令。两类指令只允许访问内存访问控制区域,不能访问其他内存区域,否则报错。
具体的,内存访问控制区域是在内存中配置的一块限制访问存储区域,用来存放内核钩子函数的指针,对该区域只允许采用特定读写指令进行访问;内存访问控制区域为一段连续的地址空间,相应的,根据内存访问控制区域,对访存指令进行检测即是指根据内存访问控制区域的地址空间,对访存指令进行检测;具体的,访存信息中访存的虚拟地址在内存访问控制区域内是指访存的虚拟地址落入内存访问控制区域对应的地址空间之内,而访存的虚拟地址不在内存访问控制区域内是指访存的虚拟地址没有落入内存访问控制区域对应的地址空间内。
S103:若访存指令是非正常访问指令,则对访存指令进行报警。
在一种具体的实现方式中,若访存指令为非正常访问指令,则表明内核钩子函数受到攻击,此时,拒绝执行该访存指令并执行攻击报警操作。报警的具体方式可以是触发处理器指令执行例外,可以是向用户发送告警或者提示等,本方案对此不做要求。
在一种具体的实现方式中,内核钩子函数攻击可以是通过堆溢出的手段,通过覆盖钩子函数结构体的方式来进行。由于钩子函数结构体中包含钩子函数的指针,通过钩子函数的指针能够访问到钩子函数,如果在钩子函数攻击过程中将钩子函数的指针位置覆盖后指向普通访存空间,则采用特定读写指令来读取非内存访问控制区域(即普通访存空间),硬件实现的内存访问控制区域就会判定访存指令为非正常访问指令,处理器将拒绝执行该访存指令并执行报警操作。
本发明实施例提供内核钩子函数的保护方法,预先将内核钩子函数的指针存储至内存访问控制区域,以通过对钩子函数的指针进行保护的方式来保护钩子函数;当接收到对钩子函数进行访问的访存指令时,根据访存指令中包含的访存信息对访存指令进行检测,确定访存指令为非正常访问指令或者正常访问指令,若访存指令是非正常访问指令,则对访存指令进行报警,能够减少内核钩子函数保护的系统开销,具有保护全面和难以绕开的特点。
实施例二:
图2为本发明实施例提供的一种内核钩子函数保护方法实施例二的流程示意图,在实施例一的基础上,图2所示为实施例一中的内核钩子函数的正常访问指令的访问流程,如图2所示,该内核钩子函数的保护方法还包括:
S104:若访存指令是正常访问指令,则获取所述内存访问控制区域中存储的所述钩子函数的指针;根据内存访问控制区域中存储的钩子函数的指针,对钩子函数进行访问。
本发明实施例中,钩子函数的指针是预先配置的指向钩子函数的指针,且该钩子函数的指针存储在内存访问控制区域中,通过上述钩子函数的指针即可访问钩子函数。
在S102步骤中,若确定访存指令是正常访问指令,且为钩子函数的访存指令,则继续执行该访存指令。该访存指令将根据内存访问控制区域中存储的钩子函数的指针,对钩子函数进行访问。而内存访问控制区域是通过配置寄存器预先配置的,具体的配置过程将在下一实施例中详述。
在一种具体的实现方式中,从内存访问控制区域中分配空间,将钩子函数的指针存入该空间中,并将指向内存访问控制区域空间的指针存入钩子函数结构体中。在访问钩子函数的过程中,采用特定读操作指令去读钩子函数结构体中的指针指向的值,该值为真正指向钩子函数的指针;通过该真正指向钩子函数的指针能够访问钩子函数,即可以通过读取该真正指向钩子函数的指针后跳转到钩子函数执行。
上述方案中,应理解,该过程由于采用了特定读写指令访问内存访问控制区域,即为在上述步骤中可确认出的正常的钩子函数的访问指令,因此能够正常调用钩子函数。
具体的,钩子函数的结构体为操作系统内核中的用于保存钩子函数指针的结构体。
本实施例提供的一种内核钩子函数的保护方法,当确认访存指令为正常访问指令后,根据预先配置的对钩子函数进行访问的内存访问控制区域中存储的钩子函数的指针,对钩子函数进行访问,实现了仅允许正常访问指令访问钩子函数,从而避免钩子函数受到恶意攻击。
实施例三:
图3为本发明实施例提供的一种内核钩子函数的保护方法实施例三的流程示意图,在实施例一和实施例二所述方法的具体步骤之前,还包括实施例三所述的步骤。
S201:配置内存访问控制区域。
在本步骤中,通过向内存访问控制区域的配置寄存器对中写入内存访问控制区域的起始地址和长度,在内存中配置内存访问控制区域。
在一种具体的实现方式中,设置内存访问控制区域的配置寄存器,用来配置内存访问控制区域。这些配置寄存器只能在处理器的核心态才能被访问,在用户态不能访问这些配置寄存器,保证了内存访问控制区域的安全性。
进一步地,配置寄存器成对出现,其中一个配置寄存器用于存放内存访问控制区域的起始地址,另一个配置寄存器用于存放内存访问控制区域的长度。采用上述技术方案,配置寄存器成对出现能够保证对内存访问控制区域配置工作的合理性,避免由于一个配置寄存器中位数不够,导致内存访问控制区域配置工作无法顺利完成的问题。
可选的,配置寄存器的数量可以是一对或者多对,这样能支持一个或者多个内存访问控制区域。具体设置多少对配置寄存器,可以根据具体设计情况来定。
可选的,在内存访问控制区域的配置过程中,上述配置寄存器可以由基本输入输出系统(Basic Input Output System,BIOS)或者内核代码来执行对内存访问控制区域的配置任务。
S202:在内存访问控制区域内分配预设大小的空间,并将钩子函数的指针存储在内存访问控制区域内对应的空间,生成空间指针。
在一种具体的实现方式中,对于从内存访问控制区域内分配空间的工作,可以通过分配函数和释放函数来实现,例如:memory_controlled_malloc函数和memory_controlled_free函数。通过调用memory_controlled_malloc函数可以从内存访问控制区域中分配预设大小的空间,该分配空间的预设大小与钩子函数指针的大小相等。当从内存访问控制区域中为钩子函数的指针分配空间成功后,采用特殊写指令(例如sstore)将钩子函数的指针写入到内存访问控制区域的相应空间位置上;其中,该相应空间位置即为通过分配函数在内存访问控制区域中为钩子函数的指针分类的空间地址位置。另外,当在内存访问控制区域内分配的上述空间使用完毕时,应该调用memory_controlled_free函数释放空间。其中,上述空间指针为指向内存访问控制区域内为钩子函数分配的空间的指针。
可选的,分配函数的声明可以为Void*memory_cotrolled_malloc(int size),函数功能为从内存访问控制区域中分配size字节大小的空间。如果分配成功,则返回值为指向被分配空间的指针,否则,返回值为空指针NULL。
可选的,根据处理器架构不同,钩子函数的指针的大小可以为4字节或者8字节等。
可选的,释放函数的声明可以为Void memory_controlled_free(void*pointer),函数功能为释放pointer指针指向的内存访问控制区域中的空间。
S203:在钩子函数的结构体中存入空间指针。
在本步骤中,空间指针即为S202步骤中调用分配函数在内存访问控制区域中分配的空间的指针,将该空间指针写入到钩子函数结构体的指针变量中,例如hook_function_memory_controlled_pointer变量。也就是使得钩子函数结构体中的钩子函数指针变量指向内存访问控制区域的空间。
现有技术中,钩子函数结构体为操作系统内核中用于保存钩子函数的指针的结构体。
可选的,本发明实施例中,钩子函数结构体中的Hookfuction*hook_function_memory_controlled_pointer变量用于存放空间指针,该空间指针为指向内存访问控制区域中的空间的指针,该内存访问控制区域中的空间中保存有钩子函数的指针。
本实施例提供的一种内核钩子函数的保护方法,在对访存指令进行判断之前,通过配置内存访问控制区域,在内存访问控制区域内分配空间,将钩子函数的指针存储在内存访问控制区域内分配的空间,并将指向该分配的空间的指针作为空间指针;在钩子函数的结构体中存入空间指针,从而使访存指令能够经过判断后,再通过调用空间指针获得钩子函数的指针,进而通过钩子函数的指针访问钩子函数。
在上述实施例的基础上,下面将以软件和硬件结合的角度,以预设指令为特定读指令和特定写指令为例,阐述本发明提供的一种内核钩子函数的保护方法。
实施例四:
内核钩子函数的保护方法可以包括两部分内容:
第一部分,处理器中内存访问控制区域的硬件模块支持;
第二部分,软硬件配合的内核钩子函数攻击检测。
在处理器中增加对内存访问控制区域的硬件支持部分,主要是在处理器中增加对内存访问控制区域的访问控制逻辑,以及增加特定的读写指令支持。内存访问控制区域是内存中的一块限制访问区域,对该区域的访问只允许采用特定读写指令进行。如果对内存访问控制区域的访问操作(读或写)不是来自于特定读写指令,则处理器运行内存访问控制区域的非法访问例外。内存访问控制区域还可以用来存储操作系统内核中的特殊敏感数据,本实施例中主要用来存放钩子函数。
在基于内存访问控制区域的内核钩子函数攻击检测部分,主要将操作系统内核的钩子函数的指针统一存放到内存访问控制区域,如果存在非特定读写指令访问该区域(该区域只允许特定读写指令访问),则判定为内核钩子函数攻击。
下面结合图4、图5、图6进行详细说明。图4为本发明实施例提供的一种处理器中支持内存访问控制区域的硬件模块设计示意图;图5为本发明实施例提供的一种内存访问控制区域的访问检测模块的控制逻辑的流程图;图6为本发明实施例提供的一种内核钩子函数攻击检测流程。
第一部分,处理器中内存访问控制区域的硬件模块设计:
本发明实施例中,将处理器中内存访问控制区域的硬件模块划分为三个部分,如图4所示,分别为:处理器访存模块、内存访问控制区域的访问检测模块以及访问检测报告模块。并配套给出特定读写指令对内存访问控制区域进行访问。
其中,处理器访存模块是处理器中用于执行访存指令的硬件模块;内存访问控制区域的访问检测模块获得处理器访存模块传来的访存指令中包含的访存信息,进行内存访问检测,得到内存访问检测结果;访问检测报告模块根据得到的内存访问检测结果,进行相应的检测报告。
处理器访存模块是处理器中用于执行访存指令的模块。在该模块中主要包含访存指令发射队列、访存专用定点寄存器堆、访存地址生成部件、高速缓冲存储器(CacheMemory)部件、转换检测缓冲区(Translation Lookaside Buffer,TLB)部件等部件。该模块主要计算出访存指令要访问的内存数据的虚拟地址,并将虚拟地址根据TLB内容转换成物理地址,然后再根据获得的物理地址发出实际的内存取数请求。处理器访存模块中主要利用处理器设计已有的各个部件,该各个部件的功能为现有技术,在此不做过多描述。本实施例中,处理器访存模块向内存访问控制区域的访问检测模块传递两个信息:一是访存指令的操作码,操作码的格式及位数可以根据具体的处理器架构确定;二是访存指令要访存的虚拟地址,其位数根据具体处理器架构来确定。
内存访问控制区域的访问检测模块从处理器访存模块获得每条访存指令包含的访问信息,进行内存访问控制区域的内存访问检测,并得到内存访问检测结果。访存信息包括操作码和访存的虚拟地址。如图2所示,检测过程如下:
第1步,得到处理器访存模块传送过来的访存指令包含的访存信息;
其中,访存信息中包含访存的虚拟地址和操作码。
第2步,判断访存的虚拟地址是否在内存访问控制区域内,如果是在内存访问控制区域内,则要进一步判断访存指令是否是预设指令,跳到第3步,否则跳到第4步;
第3步,判断访存指令是否是预设指令,如果是预设指令则表明检测结果正常,跳到第6步;如果不是预设指令,则跳到第5步;
第4步,判断访存指令是否是预设指令。由于这一步的访存指令访问的虚拟地址不在内存访问控制区域之内,因此,如果该访存指令是预设指令,则表明预设指令访问的不是内存访问控制区域,按照本发明对特定读指令和特定写指令的定义,这是不允许的,因此跳到第7步;如果不是预设指令的话,则表明检测结果正常,跳到第6步,该过程图中未示出;
第5步,检测结果赋为1,表明有普通访存指令访问了内存访问控制区域,这是不允许的。本次的访存指令是非正常访问指令;
第6步,检测结果赋为0,表明访存指令是正常访问指令;
第7步,检测结果赋为2,表明有预设指令访问的不是内存访问控制区域。按照本发明对特定读指令和特定写指令的定义,这是不允许的。本次的访存指令是非正常访问指令。
访问检测报告模块,主要根据从内存访问控制区域的访问检测模块传来的检测结果,进行报告。如果检测结果为0,则说明访问指令为正常访问指令,无需处理;如果检测结果为1,则说明有普通访存指令访问了内存访问控制区域,表明钩子函数受到了攻击,执行攻击报警操作;如果检测结果为2,则说明有预设指令访问了非内存访问控制区域,表明钩子函数受到了攻击,执行攻击报警操作。报警的具体方式可以触发处理器指令执行例外等,此处不做赘述。
关于内存访问控制区域的配置,本实施例设置内存访问控制区域的配置寄存器,用来配置内存访问控制区域。这些配置寄存器只能在处理器的核心态才能被访问,在用户态不能访问这些配置寄存器,从而确保了内存访问控制区域的安全性。
配置寄存器成对出现,其中一个配置寄存器用于存放内存访问控制区域的起始地址,另一个配置寄存器用于存放内存访问控制区域的长度。
配置寄存器的数量可以是1对或者多对,这样能支持1个或者多个内存访问控制区域。具体设置多少对配置寄存器,可以根据具体设计情况来定。
配套的特定读写指令主要包括特定读指令和特定写指令两类。这两类指令只允许访问内存访问控制区域,不能访问其他内存区域,否则执行报警操作。
可选的,特定读指令可以是sload指令(Sload rt,rs),将rs寄存器中的值作为地址,将存储在内存访问控制区域中该地址对应的数据,读入到rt寄存器中。该条特定读指令读入的数据可以是1个字节、2字节、4字节、8字节等;特定写指令可以是sstore指令(Sstorert,rs),将rt寄存器中的值作为地址,将rs中的值写到内存访问控制区域中该地址对应的位置上。可以将rs寄存器中的1个字节、2个字节、4个字节、8个字节等内容写入。(Sload rt,rs)和(Sstore rt,rs)分别为特定读指令和特定读指令的指令形式。
关于增加新指令,需要在处理器指令集中增加新指令,主要通过在指令编码中增加特定的操作码等来区分新增加指令的类型,并相应修改处理器的指令流水线,使之支持新增指令的执行。
第二部分,软硬件配合的内核钩子函数攻击检测:
本实施例主要通过软硬件配合来进行内核钩子函数攻击检测。在硬件上实现了对内存访问控制区域的支持,通过将内核钩子函数指针统一存放到内存访问控制区域,所有对该内存访问控制区域的非正常访问指令均将被检测出来并报警,从而实现对内核钩子函数的保护。
如图6所示,内核钩子函数的攻击检测流程,主要包括:
S301:配置内存访问控制区域。
本发明实施例中,通过向内存访问控制区域的配置寄存器对中写入内存访问控制区域的起始地址和长度,来进行配置;可以由BIOS或者内核代码来执行配置任务。
S302:分配内存访问控制区域的空间,并将钩子函数的指针存入该空间。
从内存访问控制区域中分配空间,并将钩子函数的指针存入该空间中。为了实现这个步骤,首先需要在操作系统内核中设计一个内存访问控制区域的分配函数和释放函数memory_controlled_malloc/memory_controlled_free。具体函数的说明如下表1所示。该函数的具体实现与操作系统中已有的内存空间分配和释放函数malloc/free的实现类似。
表1:内存访问控制区域的空间分配及释放函数说明
通过调用memory_controlled_malloc来从内存访问控制区域中分配空间,分配空间大小为钩子函数指针的大小,通常根据处理器架构不同,该分配空间大小可以为4字节或者8字节等。当从内存访问控制区域中分配空间成功后,采用特殊写指令(sstore)将钩子函数指针写入到内存访问控制区域的相应空间位置上。另外,当内存访问控制区域中所分配的空间使用完毕的时候,可以调用memory_controlled_free函数释放上述分配的空间。
S303:将指向内存访问控制区域中所分配的空间的指针,存入到钩子函数结构体中。
将指向内存访问控制区域中所分配的空间的指针,存入到钩子函数结构体中。操作系统内核中的用于保存钩子函数指针的结构体,称为钩子函数结构体。这个结构体的声明通常如下所示。
Struct{
…//其他变量
Hookfuction*hook_function_memory_controlled_pointer;//指向内存访问控制区域中所分配的空间
…//其他变量
}
在本步骤中,首先调用常见的内存分配函数malloc为钩子函数结构体分配内存空间,然后将上一步骤中调用memory_controlled_malloc将所分配空间的空间指针,写入到钩子函数结构体的hook_function_memory_controlled_pointer变量中。也就是使得钩子函数结构体中包含的钩子函数指针变量指向内存访问控制区域所分配的空间。
S304:系统运行时动态检测钩子函数攻击情况。
运行时调用钩子函数,动态检测钩子函数攻击情况。此步骤中通过软硬件配合来进行,主要依赖硬件来进行钩子函数攻击检测。本发明对内核钩子函数的调用过程做了严格规定,并且与内核开发人员配合,要求内核开发人员按照该规定来进行内核钩子函数的调用,否则就起不到内核钩子函数保护效果。本发明规定内核钩子函数结构体中的指针,必须指向内存访问控制区域内,而在内核控制访问区域中存放真正指向钩子函数的指针。在调用内核钩子函数时,必须采用特定读操作(sload)指令去读钩子函数结构体中的指针指向的值,在读到该值后(该值为真正指向钩子函数的指针),跳转到钩子函数进行执行。
在正常调用钩子函数情况时,从钩子函数结构体中获得的钩子函数指针,是指向内存访问控制区域的,通过采用特定读指令来读取该指针指向的位置,获得真正钩子函数的指针,然后跳转到钩子函数执行。这个过程由于采用了特定读写指令访问内存访问控制区域,能够通过硬件实现的内存访问控制区域的访问检测模块的检查,因此能够正常调用钩子函数。
对于不正常调用钩子函数的情况(也就是受到攻击时),由于内核钩子函数攻击是通过堆溢出等手段,覆盖钩子函数结构体的方式来进行。如果将钩子函数的指针位置覆盖后指向普通访存空间,则采用特定读写指令来读取非内存访问控制区域,硬件实现的内存访问控制区域的访问检测模块就会自动检测出攻击;如果覆盖为特定内存访问控制区域的空间,由于攻击者不能将指向攻击代码的指针写入到内存访问控制访问区域(如果攻击者采用普通内存访问指令读写内存访问控制区域,硬件实现的内存访问控制区域的访问检测模块就会检测出来;如果要采用特定内存访问指令,则必须要处理处理器核心态下代码才能执行,这是很难做到的),因此攻击者最多引导内核执行其他的钩子函数或者非法地址,引起程序运行失败,但不能劫持程序控制流以执行攻击代码,也就是达不到提权的效果,攻击的破坏性就不大。
图7为本发明实施例提供的一种内核钩子函数的保护装置的结构示意图。如图7所示,内核钩子函数的保护装置10包括:
接收模块11,用于接收访存指令;其中,所述访存指令用于对钩子函数执行访存操作,且所述访存指令中包含访存信息;
判断模块12,用于根据所述访存信息和内存访问控制区域,对所述访存指令进行检测,判断所述访存指令为非正常访问指令或者正常访问指令;所述内存访问控制区域为预先配置的存储区域,且所述内存访问控制区域用于存储所述钩子函数的指针;
处理模块13,用于若所述访存指令是非正常访问指令,则对所述访存指令进行报警。
在一种具体的实现方式中,处理模块13还用于:若判断模块判断所述访存指令是正常访问指令,则获取所述内存访问控制区域中存储的所述钩子函数的指针;根据获取的所述钩子函数的指针,对所述钩子函数进行访问。
在一种具体的实现方式中,判断模块12具体用于:
若所述地址在所述内存访问控制区域内,且根据所述访存指令的操作码确定所述访存指令是预设指令,则所述访存指令为正常访问指令;
若所述地址不在所述内存访问控制区域内,且根据所述访存指令的操作码确定所述访存指令是预设指令,则所述访存指令为非正常访问指令;
若所述地址在所述内存访问控制区域内,且根据所述访存指令的操作码确定所述访存指令不是预设指令,则所述访存指令为非正常访问指令。
具体的,预设指令包括特定读指令和特定写指令。
在一种具体的实现方式中,在接收访存指令之前,处理模块13还用于:
配置所述内存访问控制区域;
在所述内存访问控制区域内分配预设大小的空间,并将钩子函数的指针存储在所述内存访问控制区域内分配的空间中,生成空间指针;其中,所述空间指针为指向所述内存访问控制区域内为所述钩子函数分配的空间的指针;
在所述钩子函数的结构体中存入空间指针。
本实施例提供的装置,可用于执行上述方法的实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
图8为本发明实施例提供的电子设备的硬件结构示意图,如图8所示,该电子设备20包括:
存储器201,用于存储计算机执行指令;
处理器202,用于执行存储器存储的计算机执行指令,以实现上述实施例中终端设备所执行的各个步骤。具体可以参见前述方法实施例中的相关描述。
可选地,存储器201既可以是独立的,也可以跟处理器202集成在一起。
当存储器201独立设置时,该终端设备还包括总线203,用于连接所述存储器201和处理器202。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上所述的内核钩子函数的保护方法。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述模块成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。
应理解,上述处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application Specific Integrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称:ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (12)

1.一种内核钩子函数的保护方法,其特征在于,包括:
接收访存指令;其中,所述访存指令用于对钩子函数执行访存操作,且所述访存指令中包含访存信息;
根据所述访存信息和内存访问控制区域,对所述访存指令进行检测,判断所述访存指令为非正常访问指令或者正常访问指令;所述内存访问控制区域为预先配置的存储区域,且所述内存访问控制区域用于存储所述钩子函数的指针;
若所述访存指令是非正常访问指令,则对所述访存指令进行报警。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述访存指令是正常访问指令,则获取所述内存访问控制区域中存储的所述钩子函数的指针;
根据获取的所述钩子函数的指针,对所述钩子函数进行访问。
3.根据权利要求2所述的方法,其特征在于,所述访存信息包括:所述访存指令的操作码和要访存的地址,则所述根据所述访存信息和内存访问控制区域,对所述访存指令进行检测,判断所述访存指令为非正常访问指令或者正常访问指令,包括:
若所述地址在所述内存访问控制区域内,且根据所述访存指令的操作码确定所述访存指令是预设指令,则所述访存指令为正常访问指令;
若所述地址不在所述内存访问控制区域内,且根据所述访存指令的操作码确定所述访存指令是预设指令,则所述访存指令为非正常访问指令;
若所述地址在所述内存访问控制区域内,且根据所述访存指令的操作码确定所述访存指令不是预设指令,则所述访存指令为非正常访问指令。
4.根据权利要求3所述的方法,其特征在于,所述预设指令包括特定读指令和特定写指令。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述接收访存指令之前,所述方法还包括:
配置所述内存访问控制区域;
在所述内存访问控制区域内分配预设大小的空间,并将钩子函数的指针存储在所述内存访问控制区域内分配的空间中,生成空间指针;其中,所述空间指针为指向所述内存访问控制区域内为所述钩子函数分配的空间的指针;
在所述钩子函数的结构体中存入所述空间指针。
6.一种内核钩子函数的保护装置,其特征在于,包括:
接收模块,用于接收访存指令;其中,所述访存指令用于对钩子函数执行访存操作,且所述访存指令中包含访存信息;
判断模块,用于根据所述访存信息和内存访问控制区域,对所述访存指令进行检测,判断所述访存指令为非正常访问指令或者正常访问指令;所述内存访问控制区域为预先配置的存储区域,且所述内存访问控制区域用于存储所述钩子函数的指针;
处理模块,用于若所述访存指令是非正常访问指令,则对所述访存指令进行报警。
7.根据权利要求6所述的装置,其特征在于,所述处理模块还用于:
若所述访存指令是正常访问指令,则获取所述内存访问控制区域中存储的所述钩子函数的指针;
根据获取的所述钩子函数的指针,对所述钩子函数进行访问。
8.根据权利要求7所述的装置,其特征在于,所述访存指令的信息包括:所述访存指令的操作码和要访存的地址,则所述判断模块具体用于:
若所述地址在所述内存访问控制区域内,且根据所述访存指令的操作码确定所述访存指令是预设指令,则所述访存指令为正常访问指令;
若所述地址不在所述内存访问控制区域内,且根据所述访存指令的操作码确定所述访存指令是预设指令,则所述访存指令为非正常访问指令;
若所述地址在所述内存访问控制区域内,且根据所述访存指令的操作码确定所述访存指令不是预设指令,则所述访存指令为非正常访问指令。
9.根据权利要求8所述的装置,其特征在于,所述预设指令包括特定读指令和特定写指令。
10.根据权利要求6至9任一项所述的方法,其特征在于,所述接收访存指令之前,所述处理模块还用于:
配置所述内存访问控制区域;
在所述内存访问控制区域内分配预设大小的空间,并将钩子函数的指针存储在所述内存访问控制区域内分配的空间中,生成空间指针;其中,所述空间指针为指向所述内存访问控制区域内为所述钩子函数分配的空间的指针;
在所述钩子函数的结构体中存入所述空间指针。
11.一种电子设备,其特征在于,包括:存储器、处理器、以及计算机程序,所述计算机程序存储在所述存储器中,所述处理器运行所述计算机程序执行权利要求1至5任一项所述的内核钩子函数的保护方法。
12.一种存储介质,其特征在于,包括:可读存储介质和计算机程序,所述计算机程序用于实现权利要求1至5任一项所述的内核钩子函数的保护方法。
CN201811163052.5A 2018-09-30 2018-09-30 内核钩子函数保护方法、装置、设备以及存储介质 Active CN109446755B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811163052.5A CN109446755B (zh) 2018-09-30 2018-09-30 内核钩子函数保护方法、装置、设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811163052.5A CN109446755B (zh) 2018-09-30 2018-09-30 内核钩子函数保护方法、装置、设备以及存储介质

Publications (2)

Publication Number Publication Date
CN109446755A true CN109446755A (zh) 2019-03-08
CN109446755B CN109446755B (zh) 2021-03-30

Family

ID=65544539

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811163052.5A Active CN109446755B (zh) 2018-09-30 2018-09-30 内核钩子函数保护方法、装置、设备以及存储介质

Country Status (1)

Country Link
CN (1) CN109446755B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112395610A (zh) * 2019-08-15 2021-02-23 奇安信安全技术(珠海)有限公司 内核层shellcode的检测方法及装置
US11899782B1 (en) * 2021-07-13 2024-02-13 SentinelOne, Inc. Preserving DLL hooks

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1808402A (zh) * 2005-01-17 2006-07-26 华为技术有限公司 一种内存访问监控方法
CN101079083A (zh) * 2006-05-25 2007-11-28 中国科学院计算技术研究所 一种对访存操作进行权限检查的系统、装置及方法
CN101561775A (zh) * 2009-05-12 2009-10-21 华为技术有限公司 内存监控方法和装置
US20150242626A1 (en) * 2014-02-27 2015-08-27 National Chiao Tung University Method of generating in-kernel hook point candidates to detect rootkits and the system thereof
CN106203093A (zh) * 2016-06-30 2016-12-07 北京金山安全软件有限公司 进程保护方法、装置以及终端
KR101710328B1 (ko) * 2016-08-18 2017-02-27 주식회사 시큐브 동적 재구성 및 교체를 지원하는 os 보안 커널 시스템 및 그 방법
CN106502926A (zh) * 2016-09-26 2017-03-15 华为技术有限公司 一种内存监控方法、内存访问控制器及SoC系统
CN107045436A (zh) * 2016-02-05 2017-08-15 龙芯中科技术有限公司 访问处理方法和装置
CN107066311A (zh) * 2017-03-20 2017-08-18 中国科学院软件研究所 一种内核数据访问控制方法与系统
CN107220189A (zh) * 2017-03-14 2017-09-29 晨星半导体股份有限公司 内存空间管理及内存访问控制方法及装置
CN107977577A (zh) * 2016-10-21 2018-05-01 龙芯中科技术有限公司 访存指令访问检测方法及装置
CN108388814A (zh) * 2018-02-09 2018-08-10 清华大学 检测处理器的方法、检测装置以及检测系统
CN108388517A (zh) * 2018-03-14 2018-08-10 深圳怡化电脑股份有限公司 一种内存检测方法、装置、设备及存储介质
CN108460287A (zh) * 2018-03-21 2018-08-28 南通大学 内存保护单元中用户控制区域的划分方法及内存保护系统

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1808402A (zh) * 2005-01-17 2006-07-26 华为技术有限公司 一种内存访问监控方法
CN101079083A (zh) * 2006-05-25 2007-11-28 中国科学院计算技术研究所 一种对访存操作进行权限检查的系统、装置及方法
CN101561775A (zh) * 2009-05-12 2009-10-21 华为技术有限公司 内存监控方法和装置
US20150242626A1 (en) * 2014-02-27 2015-08-27 National Chiao Tung University Method of generating in-kernel hook point candidates to detect rootkits and the system thereof
CN107045436A (zh) * 2016-02-05 2017-08-15 龙芯中科技术有限公司 访问处理方法和装置
CN106203093A (zh) * 2016-06-30 2016-12-07 北京金山安全软件有限公司 进程保护方法、装置以及终端
KR101710328B1 (ko) * 2016-08-18 2017-02-27 주식회사 시큐브 동적 재구성 및 교체를 지원하는 os 보안 커널 시스템 및 그 방법
CN106502926A (zh) * 2016-09-26 2017-03-15 华为技术有限公司 一种内存监控方法、内存访问控制器及SoC系统
CN107977577A (zh) * 2016-10-21 2018-05-01 龙芯中科技术有限公司 访存指令访问检测方法及装置
CN107220189A (zh) * 2017-03-14 2017-09-29 晨星半导体股份有限公司 内存空间管理及内存访问控制方法及装置
CN107066311A (zh) * 2017-03-20 2017-08-18 中国科学院软件研究所 一种内核数据访问控制方法与系统
CN108388814A (zh) * 2018-02-09 2018-08-10 清华大学 检测处理器的方法、检测装置以及检测系统
CN108388517A (zh) * 2018-03-14 2018-08-10 深圳怡化电脑股份有限公司 一种内存检测方法、装置、设备及存储介质
CN108460287A (zh) * 2018-03-21 2018-08-28 南通大学 内存保护单元中用户控制区域的划分方法及内存保护系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
傅建明等: "《一种基于动态污点的内存越界访问检测框架》", 《武汉大学学报(理学版)》 *
纪程等: "《针对内核模块访存错误的内存检测方法》", 《计算机系统应用》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112395610A (zh) * 2019-08-15 2021-02-23 奇安信安全技术(珠海)有限公司 内核层shellcode的检测方法及装置
CN112395610B (zh) * 2019-08-15 2024-04-16 奇安信安全技术(珠海)有限公司 内核层shellcode的检测方法及装置
US11899782B1 (en) * 2021-07-13 2024-02-13 SentinelOne, Inc. Preserving DLL hooks

Also Published As

Publication number Publication date
CN109446755B (zh) 2021-03-30

Similar Documents

Publication Publication Date Title
CN110268411B (zh) 计算机系统中基于处理器跟踪实施的控制流完整性
JP5580857B2 (ja) 計算機システム内のセキュリティ侵害を識別して防ぐためのシステムと方法
EP1708071B1 (en) Method and system for detection and neutralization of buffer overflow attacks
US9852295B2 (en) Computer security systems and methods using asynchronous introspection exceptions
CN106991324B (zh) 一种基于内存保护类型监控的恶意代码跟踪识别方法
US7665138B2 (en) Detecting method and architecture thereof for malicious codes
US10565379B2 (en) System, apparatus and method for instruction level behavioral analysis without binary instrumentation
EP2973155B1 (en) Method, apparatus, system, and computer readable medium for providing apparatus security
CN101408917A (zh) 应用程序行为合法性检测方法及系统
US20070266435A1 (en) System and method for intrusion detection in a computer system
US9542557B2 (en) Snoop-based kernel integrity monitoring apparatus and method thereof
US10114948B2 (en) Hypervisor-based buffer overflow detection and prevention
EP3121749B1 (en) Method and apparatus for ensuring control flow integrity
US8185952B2 (en) Static and dynamic firewalls
US10467410B2 (en) Apparatus and method for monitoring confidentiality and integrity of target system
TW201935305A (zh) 用於後快取互鎖之系統和方法
CN109446755A (zh) 内核钩子函数保护方法、装置、设备以及存储介质
CN111213144A (zh) 单芯片系统,用于运行单芯片系统的方法及机动车
CN106127054B (zh) 一种面向智能设备控制指令的系统级安全防护方法
JP5069406B2 (ja) 計算機システム内のセキュリティ侵害を識別して防ぐためのシステムと方法
CN112463288A (zh) 基于插桩的行为监控方法及系统
CN112464231A (zh) 基于虚拟机的威胁检测方法及系统
Dong et al. Kims: kernel integrity measuring system based on trustzone
CN113518055B (zh) 数据安全防护的处理方法及装置、存储介质、终端
KR102183649B1 (ko) 커널 무결성 검증 장치 및 그 방법

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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Applicant after: Loongson Zhongke Technology Co.,Ltd.

Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Applicant before: LOONGSON TECHNOLOGY Corp.,Ltd.

GR01 Patent grant
GR01 Patent grant