CN110414218A - 内核检测方法、装置、电子设备及存储介质 - Google Patents
内核检测方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN110414218A CN110414218A CN201811346957.6A CN201811346957A CN110414218A CN 110414218 A CN110414218 A CN 110414218A CN 201811346957 A CN201811346957 A CN 201811346957A CN 110414218 A CN110414218 A CN 110414218A
- Authority
- CN
- China
- Prior art keywords
- kernel
- target
- objective function
- memory region
- module
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种内核检测方法、装置、设备及存储介质,包括:当所述目标内核运行至插桩点位置时中断所述目标内核中位于所述插桩点位置的目标函数的运行,将所述目标函数的运行数据存储至所述目标内存区域,其中,所述目标内存区域存储有所述目标函数中位于所述插桩点位置处的源指令;调用并执行所述目标内存区域中的桩函数以检测所述目标内核的运行状态,当所述桩函数被执行完成时,从所述目标内存区域中读取所述源指令及所述目标函数的运行数据,根据所述目标函数的运行数据执行所述源指令以重新启动所述目标函数的运行。可检测目标内核的运行状态,提高目标内核的安全性。
Description
技术领域
本发明涉及计算机技术领域,具体涉及内核处理技术领域,尤其涉及一种内核检测方法、一种内核检测装置、一种电子设备及一种计算机存储介质。
背景技术
内核是操作系统的核心,负责管理系统的进程、内存、设备驱动程序、文件和网路系统等,决定着操作系统的性能和稳定性。但是,由于操作系统(例如安卓操作系统)具有开源化及碎片化特性,导致内核通常存在一个或多个内核漏洞,所谓内核漏洞是指内核安全方面的缺陷;内核漏洞会导致内核所在的操作系统的保密性、完整性、可用性、访问控制和监测机制等面临威胁;例如,如果内核漏洞被非法利用,很可能会使得内核所在操作系统产生隐私数据被泄露、用户数据被丢失或被篡改等问题,从而影响操作系统的性能、稳定性及安全性。此处内核漏洞被利用(或称漏洞利用)是指针对内核漏洞而编写的恶意程序,该恶意程序可能会对操作系统的保密性、完整性、可用性、访问控制和监测机制等造成破坏或损失。实践中,通常需要检测内核的运行状态以便在内核处于漏洞利用的状态时,及时拦截针对内核的漏洞利用程序,提高内核的安全性。因此,如何有效地检测内核的运行状态是确保内核的安全性的关键因素。
发明内容
本发明实施例所要解决的技术问题在于,提供一种内核检测方法、装置、电子设备及存储介质,可快速、有效地检测内核的运行状态,提高内核的安全性。
一方面,本发明实施例提供一种内核检测方法,该方法包括:
当所述目标内核运行至插桩点位置时中断所述目标内核中位于所述插桩点位置的目标函数的运行;
将所述目标函数的运行数据存储至所述目标内存区域,其中,所述目标内存区域存储有所述目标函数中位于所述插桩点位置处的源指令;
调用并执行所述目标内存区域中的桩函数以检测所述目标内核的运行状态;
当所述桩函数被执行完成时,从所述目标内存区域中读取所述源指令及所述目标函数的运行数据;
根据所述目标函数的运行数据执行所述源指令以重新启动所述目标函数的运行。
一方面,本发明实施例提供一种内核检测装置,该装置包括:
存储单元,用于当所述目标内核运行至插桩点位置时中断所述目标内核中位于所述插桩点位置的目标函数的运行,将所述目标函数的运行数据存储至目标内存区域,其中,所述目标内存区域存储有所述目标函数中位于所述插桩点位置处的源指令。
获取单元,用于调用并执行所述目标内存区域中的桩函数以检测所述目标内核的运行状态。
读取单元,用于当所述桩函数被执行完成时,从所述目标内存区域中读取所述源指令及所述目标函数的运行数据。
执行单元,用于根据所述目标函数的运行数据执行所述源指令以重新启动所述目标函数的运行。
一方面,本发明实施例提供一种电子设备,包括:处理器和存储装置;
所述存储装置存储有计算机程序指令,所述处理器调用所述计算机程序指令,用于执行如下步骤:
当所述目标内核运行至插桩点位置时中断所述目标内核中位于所述插桩点位置的目标函数的运行;
将所述目标函数的运行数据存储至所述目标内存区域,其中,所述目标内存区域存储有所述目标函数中位于所述插桩点位置处的源指令;
调用并执行所述目标内存区域中的桩函数以检测所述目标内核的运行状态;
当所述桩函数被执行完成时,从所述目标内存区域中读取所述源指令及所述目标函数的运行数据;
根据所述目标函数的运行数据执行所述源指令以重新启动所述目标函数的运行。
一方面,本发明实施例提供一种计算机存储介质,所述计算机存储介质存储有计算机程序指令,该计算机程序指令被执行时,实现所述的内核检测方法,该方法包括:
当所述目标内核运行至插桩点位置时中断所述目标内核中位于所述插桩点位置的目标函数的运行;
将所述目标函数的运行数据存储至所述目标内存区域,其中,所述目标内存区域存储有所述目标函数中位于所述插桩点位置处的源指令;
调用并执行所述目标内存区域中的桩函数以检测所述目标内核的运行状态;
当所述桩函数被执行完成时,从所述目标内存区域中读取所述源指令及所述目标函数的运行数据;
根据所述目标函数的运行数据执行所述源指令以重新启动所述目标函数的运行。
本发明实施例中,可以通过在目标内核中注册插桩点位置,在目标内核运行至插桩点位置时执行桩函数来检测目标内核的运行状态,从而有利于提高目标内核的安全性。另外,本发明实施例的内核检测过程并不需要批量修改目标内核中目标函数的源指令,仅需针对目标函数中插桩点位置处的一条源指令进行改动即可,采用这样轻量级的内核检测方法,既能够快速、有效地对目标内核的运行状态进行检测,又避免对操作系统的整体性能产生影响,适用范围广泛;此外,当目标内核运行到插桩点位置时,存储目标函数的运行数据,在桩函数执行完成时,再根据目标函数的运行数据执行源指令以重新启动目标函数的运行,这样可有效地减少对目标函数正常执行顺序的干扰。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种内核检测系统的架构示意图;
图2是本发明实施例提供的一种内核轻量级插桩框架的示意图;
图3是本发明实施例提供的一种内核检测方法的流程示意图;
图4是本发明实施例提供的另一种内核检测方法的流程示意图;
图5是本发明实施例提供的一种内核检测系统的架构示意图;
图6是本发明实施例提供的一种ELF格式的文件的示意图;
图7是本发明实施例提供的一种内核检测装置的结构示意图;
图8是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,常用的内核检测方法主要是LKRG(Linux Kernel Runtime Guard,基于Linux(一种操作系统)的内核防护项目),该检测方法通过在操作系统中的所有用户态进程及多个系统调用中插入检测函数,执行该检测函数从而达到检测内核的运行状态的目的。其中,用户态是指非特权的执行状态,操作系统的内核禁止处于用户态的代码执行潜在危险的操作,比如禁止写入系统配置文件、禁止杀掉其他用户的进程、禁止重启系统等。系统调用是指运行在用户态的程序向操作系统内核请求需要更高权限运行的服务。使用LKRG实现内核检测主要存在如下缺陷,第一,LKRG需要对操作系统中的内核的源指令进行大批量修改,这样对操作系统的整体性能影响较大,不适用于在手机等交互型对延迟敏感的设备中使用。第二,LKRG的设计初衷是用于作为Linux内核的加固补丁,因此,该方法需要针对所有的Linux内核版本作具体的适配工作,即需要为不同版本的内核或不同版本的操作系统构建不一样的内核检测工具,复杂度较高。第三,LKRG基于GPL(General Public License,通用性公开许可证)的开源协议,由于该协议严格要求使用了GPL类库的软件产品必须也使用GPL协议,这给开发工作带来不便。
本发明实施例提出一种轻量级的内核检测方案,该方案提出一种内核检测系统的架构,请参见图1,该架构可设于目标平台;此处的目标平台是指用于部署软件应用程序的平台,该平台能够为软件应用程序提供运行环境。目标平台包括目标操作系统,该目标操作系统包括目标内核,并且目标内核中加载了内核模块。其中:
目标操作系统可以是基于Linux的操作系统,例如:安卓操作系统等;目标内核可以是指实现目标操作系统核心功能的组件所组成的整体。具体地,目标内核可以包括多个函数,每个函数包括多条指令,在目标内核运行的过程中多个函数可以并行的方式被执行,每个函数被执行时在目标内核中生成一个执行流,因此,通常同一时间的目标内核中包括多个执行流;此处执行流可以是指函数中的指令被顺序执行的轨迹。
内核模块是指能够被加载至目标操作系统中的、一个可插拔的、独立于目标内核的内核镜像的可运行代码文件,用于实现独立于操作系统核心功能外的可选的功能;例如内核模型可用于实现检测目标内核的运行状态的功能。内核模块可以在构建平台上被构建并编译得到;其中,构建是指根据内核模块的功能编写源程序;例如:根据内核模块的插桩功能编写相应桩函数的源程序。编译是指将源程序翻译成计算机可以识别的二进制语言;例如:将内核模块中的桩函数的源程序编译成由二进制语言形成的桩函数。内核模块可以提供简明易用的接口,利用该接口可快捷扩展内核模块的功能,例如:用户可调用该接口定义插桩点位置及回调函数。其中,构建平台是指开发内核模块的平台,该平台能够为程序的构建和编译提供系统环境,该构建平台可以包括但不限于基于Linux的操作系统(如安卓操作系统)或其他开发机的系统等的平台。若构建平台与目标平台为同一平台,即对内核模块的开发(包括构建和编译)及应用(如加载及使用)均在同一平台中,那么对内核模块的应用属于同平台应用;若构建平台为独立于目标平台的另一平台系统,即对内核模型的开发及应用分别位于不同的平台中,那么对内核模块的应用属于跨平台应用。
内核模块在构建平台被编译后,该内核模块的内容可用于实现内核轻量级插桩框架,该内核轻量级插桩框架包括插桩机制及插桩策略;其中,插桩机制用于定义在目标内核中进行插桩的细节,例如定义在目标内核的哪个或哪些函数中进行插桩以及如何插桩等细节;插桩策略用于描述实现插桩的具体手段,例如:描述在目标内核中的哪个或哪些函数中的什么位置处注册插桩点位置,以及描述当目标内核运行至插桩点位置时执行什么样的操作;等等。请参见图2所示的内核轻量级插桩框架,该内核轻量级插桩框架规定在内核模块成功加载至目标内核之后可在目标内核中注册插桩点位置,注册插桩点位置的过程包括:①若需要在目标内核中的目标函数处进行插桩,则将内核模块的桩函数存储至目标内存区域的回调函数存储区;此处的目标函数可以为目标内核中的任一函数。②在目标函数中定位插桩点位置,采用一条跳转指令替换目标函数的插桩点位置处的源指令,并且将被替换的源指令存储至与内核模块对应的目标内存区域中的替换指令存储区;此处,当插桩点位置处的跳转指令被执行时可跳转至目标内存区域以启动内核检测过程。经过上述①-②即完成了任一个插桩点位置在目标内核中的注册,若需要在目标内核的多个函数处进行插桩,则均可重复上述①-②来实现每个插桩点位置在目标内核中的注册。需要说明的是,目标内存区域是由目标内核为内核模块所分配的一块内存区;当内核模块被成功加载至目标内核中后则可使用该目标内存区域。请一并参见图2,目标内存区域可以包括运行数据存储区、回调函数存储区、运行数据恢复存储区、替换指令存储区及跳转指令存储区。其中,运行数据存储区用于存储插桩位置点所在的目标函数的运行数据,此处的运行数据可包括硬件上下文(如硬件寄存器等内容)。回调函数存储区用于存储内核模块中的桩函数以方便在内核检测过程中进行回调。运行数据恢复存储区用于存储用于恢复目标函数的运行数据的程序,当该程序被执行时可恢复目标函数的运行数据。替换指令存储区用于存储目标函数的插桩点位置处被替换的源指令。跳转指令存储区用于存储跳转指令,此处所存储的跳转指令被执行时可跳转至目标函数的插桩点位置的下一位置以恢复目标函数的运行。
基于图1所示的架构,图2所示的内核轻量级插桩框架所定义的内核检测的实现流程大致如下:(1)当目标内核运行至插桩点位置时中断目标内核中位于所述插桩点位置的目标函数的运行,中断目标函数的运行就是指中断目标函数的执行流。(2)将该目标函数的运行数据存储至与该目标内存区域,具体是存储至目标内存区别中的运行数据存储区。(3)调用并执行该目标内存区域中的桩函数以检测目标内核的运行状态。(4)当该桩函数被执行完成时,从目标内存区域中读取被替换的源指令及该目标函数的运行数据。(5)恢复目标函数的运行数据并执行该被替换的源指令以重新启动目标函数的运行,具体可以在被替换的源指令被执行完后,执行目标内存区域中存储的跳转指令跳转至目标函数的插桩点位置的下一位置并开始继续执行被中断的目标函数的执行流。
本发明实施例的上述内核检测方案中:第一、内核模块定义了内核轻量级插桩框架,在目标内核中加载内核模块则可通过插桩方式实现对目标内核的检测过程,这样有利于提高目标内核的安全性;第二、内核检测过程并不需要对目标内核中的函数的源指令进行批量修改,仅需针对目标函数中插桩点位置处的一条源指令进行改动即可实现,采用这样轻量级插桩过程,既能够快速、有效地对目标内核的运行状态进行检测,又避免对操作系统的整体性能产生影响,适用范围广泛,尤其适用于智能手机等交互型对延迟敏感的设备;第三、内核检测过程中,当目标内核运行到插桩点位置时会存储插桩点位置处的目标函数的运行数据,而当桩函数执行完成后可再根据目标函数的运行数据重新恢复目标函数的运行,这样可有效地减少对目标内核的执行流的干扰。
实际应用中,图1所示的内核检测系统的架构可以应用于各种互联网场景中;例如:可以应用于基于Linux的操作系统的智能手机中,以用于对智能手机的操作系统中的内核运行状态进行检测;若检测到内核处于漏洞利用状态,可拦截针对内核的漏洞利用程序,以避免通过利用智能手机的内核漏洞盗取用户数据或隐私数据等,提高智能手机的使用安全性。再如,可以设置于车载终端中,可有效监测车载终端是否处于漏洞利用(如漏洞攻击)状态,以便在车载终端处于漏洞利用状态时,可以及时拦截漏洞利用程序,以避免通过利用车载终端的内核的漏洞修改装载该车载终端的车辆的行驶轨迹或修改车辆的行驶参数(如速度或方向),可以降低交通事故发生的概率,提高驾驶者的生命安全。
基于上述图1所示的内核检测系统及图2所示的内核轻量级插桩框架,本发明实施例提供一种内核检测方法,该内核检测方法可以是由内核检测装置来执行,该内核检测装置可以运行于电子设备,此处电子设备可以包括智能手机、车载终端(如车联网设备)、智能手表、机器人或电脑等等。该电子设备包括目标操作系统,目标操作系统可以是指基于Linux的操作系统,基于Linux的操作系统可以包括安卓操作系统,该目标操作系统包括目标内核,该目标内核中包括已经成功加载的内核模块,同时实现了插桩点位置在目标内核中的注册。内核模块与目标内存区域相对应,该目标内存区域存储有桩函数、目标函数中的插桩位置处被替换的源指令以及跳转指令;如图3所示,该内核检测方法包括以下步骤S101-S105:
S101、当目标内核运行至插桩点位置时中断该目标内核中位于该插桩点位置的目标函数的运行。
若需要在目标内核中的目标函数处进行插桩,那么需要在目标函数中注册插桩点位置;其中,目标函数可以为目标内核中的任一函数;插桩点位置可以是目标函数的任一源指令所在的位置,该插桩点位置可以是用户设置的或者是内核检测装置根据实际的检测需求设置的。当目标内核运行至插桩点位置时中断目标函数的运行,即中断该目标函数的执行流;参见图2所示的例子,设目标函数为图2所示的基本块函数,该基本块函数的某源指令sub w1,w2,#0x2所在的位置为插桩点位置,在进行插桩点位置注册时,该源指令sub w1,w2,#0x2被跳转指令b probe_stub替换,且该源指令sub w1,w2,#0x2被存储至目标内存区域的替换指令存储区。当目标内核运行至插桩点位置时执行跳转指令b probe_stub,从而中断该基本块函数的运行,并跳转至目标内存区域以启动内核检测流程。
S102、将目标内核的运行数据存储至目标内存区域。
如图2所示,目标函数的运行数据具体被存储至于目标内存区域的运行数据存储区。此处的运行数据可包括硬件上下文,例如硬件寄存器等内容。目标内存区域是由目标内核为内核模块所分配的一块内存区;在一种实施方式中,目标内存区域采用静态方式分配;静态方式是指由目标内核为内核模块提前预留的目标内存区域,当内核模块被成功加载至目标内核后则可使用该目标内存区域;在另一种实施方式中,目标内存区域采用动态方式分配;动态方式具体是指在内核模块被加载至目标内核的过程中,目标内核动态为内核模块实时分配目标内存区域。
S103、调用并执行该目标内存区域中的桩函数以检测目标内核的运行状态。
桩函数是根据内核检测需求预先编译好的函数代码,当内核模块被加载至目标内核之后,桩函数被存储在目标内存区域中,具体如图2所示,桩函数被存储在目标内存区域中的回调函数存储区。步骤S103中,可以从目标内存区域中获取并执行桩函数以检测目标内核的运行状态。其中,该目标内核的运行状态包括正常状态或异常状态,正常状态是指目标内核的源指令(即函数或源代码)的运行过程中未出现错误、警告或异常中断等的异常事件,且该目标内核中的源指令被执行后可以实现指定的功能的状态,如读数据或写数据等。异常状态是指执行目标函数的源指令在运行过程中出现了上述异常事件的状态。该异常状态可以包括漏洞利用状态和非漏洞利用状态,漏洞利用状态是由目标内核中被插入利用目标内核的漏洞的代码所造成的;非漏洞利用状态是由目标内核中的代码本身存在逻辑性或兼容性等漏洞所造成的。本发明实施例中,当检测到该目标内核的运行状态处于异常状态时,可以及时采取补救措施,例如当检测到该目标内核的运行状态处于漏洞利用的状态,可以拦截针对目标内核的漏洞利用;以提高目标内核的安全性。
S104、当桩函数被执行完成时,从目标内存区域中读取目标内核中位于插桩点位置处的源指令及该目标函数的运行数据。
如前述及图2所示例子,基本块函数中被替换的源指令sub w1,w2,#0x2被存储在目标存储区域的替换指令存储区中,并且基本块函数的运行数据被存储在目标内存区域的运行数据存储区中;那么,当桩函数被执行完成时可从目标内存区域中读取被替换的源指令sub w1,w2,#0x2及目标函数(如基本块函数)的运行数据。
S105、根据目标函数的运行数据执行源指令以重新启动目标函数的运行。
恢复目标函数的运行数据并执行该被替换的源指令(如图2所示的源指令sub w1,w2,#0x2)以重新启动目标函数(如基本块函数)的运行,具体可以在被替换的源指令被执行完后,执行目标内存区域中存储的跳转指令跳转至目标函数的插桩点位置的下一位置并开始继续执行被中断的目标函数的执行流;如图2所示,恢复基本块函数的运行数据并执行该替换的源指令sub w1,w2,#0x2,当该源指令被执行完后,执行目标内存区域中存储的跳转指令跳转至基本块函数的插桩点位置的下一位置即源指令cmp w1,#0x1处开始继续执行被中断的基本块函数的执行流。
本发明实施例中:内核模块定义了内核轻量级插桩框架,在目标内核中加载内核模块则可通过插桩方式实现对目标内核的检测过程,这样有利于提高目标内核的安全性;另外,内核检测过程并不需要对目标内核中的函数的源指令进行批量修改,仅需针对目标函数中插桩点位置处的一条源指令进行改动即可实现,采用这样轻量级插桩过程,既能够快速、有效地对目标内核的运行状态进行检测,又避免对操作系统的整体性能产生影响,适用范围广泛,尤其适用于智能手机等交互型对延迟敏感的设备;此外,内核检测过程中,当目标内核运行到插桩点位置时会存储插桩点位置处的目标函数的运行数据,而当桩函数执行完成后可再根据目标函数的运行数据重新恢复目标函数的运行,这样可有效地减少对目标内核的执行流的干扰。
基于上述图1所示的内核检测系统及图2所示的内核轻量级插桩框架,本发明实施例提供另一种内核检测方法,该内核检测方法可以是由内核检测装置来执行,该内核检测装置可以运行于电子设备,此处电子设备可以包括智能手机、车载终端(如车联网设备)、智能手表、机器人或电脑等等。该电子设备包括目标操作系统,目标操作系统可以是指基于Linux的操作系统,基于Linux的操作系统可以包括安卓操作系统,该目标操作系统包括目标内核,该目标内核中包括已经成功加载的内核模块,同时实现了插桩点位置在目标内核中的注册。内核模块与目标内存区域相对应,该目标内存区域存储有桩函数、目标函数中的插桩位置处被替换的源指令以及跳转指令;请参见图4,该内核检测方法包括以下步骤S201-S208:
S201、在目标内核中加载内核模块。
S202、建立该内核模块与目标内存区域的对应关系。
S203、将该内核模块中的桩函数存储至该目标内存区域。
在步骤S201~S203中,若内核模块与目标内核相适配,则内核模块能够成功加载至目标内核中;之后,内核模块可使用对应的目标内存区域,该目标内存区域为目标内核中的一个存储区域,该存储区域可以是采用静态方式或动态方式分配的。另外,内核模块中的桩函数可被存储至该目标内存区域的回调函数存储区中。
在一个实施例中,该方法还包括如下步骤s21~s22。
S21、在该目标内核的目标函数中注册该插桩点位置。
S22、采用跳转指令替换该目标函数中位于该插桩点位置处的源指令,并将该源指令存储至该目标内存区域中。
步骤s21~s22描述的是插桩点位置的注册过程,该过程可以是在内核模块被成功加载至目标内核之后执行的,即步骤s21-s22可以是在步骤S201之后所执行的。若需要在目标内核中的目标函数处进行插桩,此处的目标函数可以为目标内核中的任一函数;则在目标函数中定位插桩点位置,采用一条跳转指令替换目标函数的插桩点位置处的源指令,并且将被替换的源指令存储至与内核模块对应的目标内存区域中的替换指令存储区;此处,当插桩点位置处的跳转指令被执行时可跳转至目标内存区域以启动内核检测过程。经过上述步骤s21~s22即完成了任一个插桩点位置在目标内核中的注册,若需要在目标内核的多个函数处进行插桩,则均可重复上述步骤s21~s22来实现每个插桩点位置在目标内核中的注册。例如图2所示,目标函数为基本块函数,该基本块的源指令sub w1,w2,#0x2所在的位置为插桩点位置;在该目标内核的基本块函数中注册该插桩点位置,采用跳转指令bprobe_stub替换该基本块函数中的源指令sub w1,w2,#0x2,并将该源指令sub w1,w2,#0x2存储至该目标内存区域中替换指令存储区。
S204、当目标内核运行至插桩点位置时中断该目标内核位于该插桩点位置的目标函数的运行。步骤S204可参见图3所示实施例的步骤S101,在此不赘述。
S205、将目标内核的运行数据存储至目标内存区域。
在一个实施例中,步骤S205包括如下步骤s31和s32。
s31、执行插桩点位置处的跳转指令以跳转至目标内存区域。
s32、将目标函数的运行数据存储至目标内存区域。
在步骤s31~s32中,执行插桩点位置处的跳转指令以跳转至目标内存区域,将目标函数的运行数据存储至目标内存区域,以便可以根据目标函数的运行数据返回到目标内核原来的执行流程。例如图2所示,执行插桩点位置的跳转指令b probe_stub以跳转至目标内存区域,将基本块函数的运行数据存储至目标内存区域的运行数据存储区。
S206、调用并执行该目标内存区域中的桩函数以检测目标内核的运行状态。步骤S206可参见图3所示实施例的步骤S103,在此不赘述。
在一个实施例中,执行步骤S206之后还包括如下步骤s41~s42。
s41、根据所检测到的目标内核的运行状态生成日志,并输出日志;目标内核的运行状态包括正常运行状态或漏洞利用状态。
s42、若目标内核处于漏洞利用状态,拦截针对目标内核的漏洞利用程序。
在步骤s41~s42中,为了提高目标内核的安全性,可以根据所检测到的目标内核的运行状态生成日志,并可以采用在用户界面上显示的方式输出日志,和/或采用语音播报的方式输出日志,若目标内核处于漏洞利用状态,表明目标内核的漏洞被非法分子恶意利用,拦截针对目标内核的漏洞利用程序,以避免目标内核中的用户数据泄露、数据丢失或被篡改。
S207、当桩函数被执行完成时,从目标内存区域中读取目标内核中位于插桩点位置处的源指令及该目标函数的运行数据。步骤S207可参见图3所示实施例的步骤S104,在此不赘述。
S208、根据目标函数的运行数据执行源指令以重新启动目标函数的运行。
在一个实施例中,该运行数据包括硬件上下文,硬件上下文包括目标内核中的进程的运行环境相关的参数,环境相关的参数包括寄存器变量、进程打开的文件或内存信息等等。步骤S208包括如下步骤s51~s53。
s51、在目标内存区域中恢复目标函数的运行数据。
s52、执行源指令。
s53、待源指令执行完成后,跳转至目标函数中从插桩点位置的下一位置继续运行该目标函数。
在步骤s51~s53中,恢复目标函数的运行数据并执行该被替换的源指令(如图2所示的源指令sub w1,w2,#0x2)以重新启动目标函数(如基本块函数)的运行,具体可以在被替换的源指令被执行完后,执行目标内存区域中存储的跳转指令跳转至目标函数的插桩点位置的下一位置并开始继续执行被中断的目标函数的执行流;如图2所示,恢复基本块函数的运行数据并执行该替换的源指令sub w1,w2,#0x2,当该源指令被执行完后,执行目标内存区域中存储的跳转指令跳转至基本块函数的插桩点位置的下一位置即源指令cmp w1,#0x1处开始继续执行被中断的基本块函数的执行流。
在本发明实施例中,若内核模块与目标内核适配可以在目标内核中成功加载内核模块,内核模块定义了内核轻量级插桩框架,在目标内核中加载内核模块后则可通过插桩方式实现对目标内核的检测过程,这样有利于提高目标内核的安全性;另外,内核检测过程并不需要对目标内核中的函数的源指令进行批量修改,仅需针对目标函数中插桩点位置处的一条源指令进行改动即可实现,采用这样轻量级插桩过程,既能够快速、有效地对目标内核的运行状态进行检测,又避免对操作系统的整体性能产生影响,适用范围广泛,尤其适用于智能手机等交互型对延迟敏感的设备;此外,内核检测过程中,当目标内核运行到插桩点位置时会存储插桩点位置处的目标函数的运行数据,而当桩函数执行完成后可再根据目标函数的运行数据重新恢复目标函数的运行,这样可有效地减少对目标内核的执行流的干扰。
图3-图4所示的内核检测方法的实现基础在于内核模块能够被成功加载至目标内核,这要求内核模块与目标内核相互适配。所谓适配是指目标内核与内核模块能够相互兼容,内核模块能够成功加载至目标内核中,并且成功加载之后内核模块与目标内核后均能够成功运行。若内核模块与目标内核不适配,那么内核模块不能成功加载至目标内核中。
为了使内核模块能够成功加载至目标内核中以实现图3-图4所示的内核检测方法,需要使内核模块与目标内核相适配,传统的适配方法是:若已编译好的内核模块与目标内核不适配,那么需要针对目标内核的属性信息重新构建一个新的内核模块。由于操作系统的版本具有碎片化特征,碎片化特征是指不同版本的操作系统的差异性较大;因此若采用上述传统方案,当需要针对多个操作系统进行内核检测时,就需要针对各个操作系统的内核分别构建和编译多个内核模块,这样开发成本高,且比较费时费力。基于此,本发明实施例提出了一种适配工具,该适配工具可以根据各个操作系统的内核的属性信息自动对已编译好的内核模块的配置信息做一些二进制代码上的修改,就可实现内核模块与各内核的适配。这种自适应适配功能使内核模块可被加载至任意类型的操作系统的内核中,因此开发过程中无需针对各种操作系统分别构建不同的内核模块;大幅度提升了部署效率,并节省了人力,降低了工作量及复杂度;尤其适用于批量开发场景。
本发明实施例提供一种改进的内核检测系统的架构图,请参见图5,可在构建平台上构建并编译适配工具,该适配工具可以是一段能够实现内核模块及目标内核之间的适配的计算机程序代码。该适配工具可以在目标操作系统中运行以获得目标操作系统中的目标内核的属性信息,当内核模块与目标内核不适配时,适配工具可以根据目标内核的属性信息对内核模块进行修改,从而使得修改后的内核模块能够与目标内核适配;进而使得内核模块能够被成功加载至目标内核中。
在一个实施例中,适配工具判断待加载的内核模块与目标内核是否适配的具体方式包括:①适配工具被调用(即在目标操作系统中运行)以获取目标内核的镜像,并从镜像中读取目标内核的属性信息;此处的属性信息可包括用于表示内核版本、内核特征的一些字符串、符号等等。②获取内核模块的配置信息;引处的配置信息可包括适用的内核版本、适用的内核特征的一些字符串、符号等等。③若该内核模块的配置信息与该目标内核的属性信息相匹配,则确认该内核模块与该目标内核适配;④若该内核模块的配置信息与该目标内核的属性信息不匹配,则确定该内核模块与该目标内核不适配。
适配工具可以获取目标内核的镜像,并对镜像进行解析以读取目标内核的属性信息;以及获取内核模块的配置信息。将目标内核的属性信息与内核模块的配置信息进行匹配,若内核模块的配置信息与目标内核的属性信息相匹配,表明内核模块的配置信息与目标内核的属性信息相同或差异性较小,则内核模块与目标内核适配;若内核模块的配置信息与目标内核的属性信息不匹配,表明内核模块的配置信息与目标内核的属性信息不相同或差异性较大,则内核模块与目标内核不适配。
在一个实施例中,目标操作系统可以为基于Linux的操作系统,内核模块为对象格式(Executable and Linking Format,ELF)的文件;内核模块包括扩展字段,该扩展字段用于存储内核模块的配置信息。例如,内核模块为如图6所示的ELF格式的文件,该文件包括ELF header段、代码段“.text”、数据段“.data”、常量段“.rodata”、段头表(Sectionheader table)、程序头表(Program header table)及扩展字段等等。其中,ELF header段用于存放描述信息,该描述信息用于指示该文件应用的操作系统类型,如32位或64位等类型的操作系统。代码段“.text”用于存放可执行的代码;数据段“.data”用于存放全局数据,常量段用于存放常量数据,段头表用于描述ELF header段、代码段“.text”、“.rodata”段及数据段“.data”。程序头表主要用于描述操作系统加载或执行程序所需要的信息。扩展字段用于存储内核模块的配置信息,该扩展字段可以存放于ELF文件中的任意位置。该扩展字段包括“.gnu.linkonce.this_module”段、“.modinfo”段和“__versions”段。“.modinfo”用于存放“vermagic”信息,此信息由字符串构成,用于标示该内核模块的特定信息;“__versions”段用于存放内核模块所引用的目标内核的所有符号和符号的哈希值;“.gnu.linkonce.this_module”段用于存放的是一个结构模块“struct module”。
目标内核的属性信息可以包括:“vermagic”信息、结构模块的特征信息、符号及符号的哈希值。适配工具根据内核模块的配置信息及目标内核的属性信息判断内核模块与目标内核是否配置包括:从内核模块的“.modinfo”段中抽取“vermagic”信息,当抽取的“vermagic”信息与目标内核模块中的“vermagic”信息不相同时,确定内核模块与目标内核不适配,对内核模块的“vermagic”信息进行修改,以使内核模块的“vermagic”信息与目标内核的“vermagic”信息相同。将内核模块的“__versions”段中的哈希值与目标内核的属性信息中的哈希值进行比较,若两者不相同,确定内核模块与目标内核不适配,对内核模块“__versions”段中的哈希值进行修改,以使内核模块“__versions”段中的哈希值与目标内核中的哈希值相同。将内核模块中的“struct module”的特征信息与目标内核的结构模块的特征信息进行比较;若内核模块中的“struct module”的特征信息与目标内核的结构模块的特征信息不相同,则确定内核模块与目标内核不适配,对内核模块的“struct module”进行修改,以使内核模块的“struct module”与目标内核的特征信息相同。特征信息包括结构模块的结构大小和/或布局,当内核模块的扩展字段中的每个字段与目标内核的中对应的属信息相同时,确定内核模块与目标内核适配。通过该实施例,适配工具可以在内核模块与目标内核不适配时,可以根据目标内核的属性信息对内核模块进行修改,从而使得修改后的内核模块能够与目标内核适配;进而使得内核模块能够被成功加载至目标内核中。
在本发明实施例中,通过设置适配工具能够以自适应适配方式实现内核模块与目标内核的适配,不需要针对不同版本的内核构建不一样的内核模块,降低了工作量及复杂度;内核模块与目标内核相适配就能够成功将内核模块加载至目标内核中从而实现内核检测,这样可不受开源协议限制,开发可行度更高,尤其适用于批量开发及批量内核检测的场景。
基于上述描述,本发明实施例提供一种内核检测装置的结构示意图,该内核检测装置可以运行于电子设备,此处电子设备可以包括智能手机、车载终端(如车联网设备)、智能手表、机器人或电脑等等。该电子设备包括目标操作系统,目标操作系统可以是指基于Linux的操作系统,基于Linux的操作系统可以包括安卓操作系统,该目标操作系统包括目标内核;如图7所示,该装置包括存储单元701、获取单元702、读取单元703、执行单元704、加载单元705、适配单元706、输出单元707以及拦截单元708。
存储单元701,用于当所述目标内核运行至插桩点位置时中断所述目标内核中位于所述插桩点位置的目标函数的运行,将所述目标函数的运行数据存储至目标内存区域,其中,所述目标内存区域存储有所述目标函数中位于所述插桩点位置处的源指令。
获取单元702,用于调用并执行所述目标内存区域中的桩函数以检测所述目标内核的运行状态。
读取单元703,用于当所述桩函数被执行完成时,从所述目标内存区域中读取所述源指令及所述目标函数的运行数据。
执行单元704,用于根据所述目标函数的运行数据执行所述源指令以重新启动所述目标函数的运行。
可选的,加载单元705,用于在所述目标内核中加载所述内核模块;建立所述内核模块与所述目标内存区域的对应关系,所述目标内存区域是采用静态方式或动态方式对所述目标内核的内存空间进行分配得到的;将所述内核模块中的桩函数存储至所述目标内存区域。
可选的,存储单元701,还用于在所述目标内核的目标函数中注册所述插桩点位置;采用跳转指令替换所述目标函数中位于所述插桩点位置处的源指令,并将所述源指令存储至所述目标内存区域中。
可选的,存储单元701,还用于执行所述插桩点位置处的跳转指令以跳转至所述目标内存区域;将所述目标函数的运行数据存储至所述目标内存区域。
可选的,执行单元701,具体用于在所述目标内存区域中恢复所述目标函数的运行数据;执行所述源指令;待所述源指令执行完成后,跳转至所述目标函数中从所述插桩点位置的下一位置继续运行所述目标函数。
可选的,适配单元706,用于调用适配工具判断所述内核模块与所述目标内核是否适配;若所述内核模块与所述目标内核不适配,则对所述内核模块的配置信息进行修改以使得所述内核模块与所述目标内核适配;若所述内核模块与所述目标内核适配,则执行在所述目标内核中加载所述内核模块的步骤。
可选的,适配单元706,具体用于调用适配工具获取所述目标内核的镜像,并从所述镜像中读取所述目标内核的属性信息;获取所述内核模块的配置信息;若所述内核模块的配置信息与所述目标内核的属性信息相匹配,则确认所述内核模块与所述目标内核适配;若所述内核模块的配置信息与所述目标内核的属性信息不匹配,则确定所述内核模块与所述目标内核不适配。
可选的,输出单元707,用于根据所检测到的所述目标内核的运行状态生成日志,并输出所述日志;所述目标内核的运行状态包括正常运行状态或漏洞利用状态。
可选的,拦截单元708,用于若所述目标内核处于漏洞利用状态,拦截针对所述目标内核的漏洞利用程序。
可续的,所述目标操作系统为基于Linux的操作系统,所述内核模块为ELF格式的文件;所述内核模块包括扩展字段,所述扩展字段用于存储所述内核模块的配置信息。
在本发明实施例中,内核模块定义了内核轻量级插桩框架,在目标内核中加载内核模块后则可通过插桩方式实现对目标内核的检测过程,这样有利于提高目标内核的安全性;另外,内核检测过程并不需要对目标内核中的函数的源指令进行批量修改,仅需针对目标函数中插桩点位置处的一条源指令进行改动即可实现,采用这样轻量级插桩过程,既能够快速、有效地对目标内核的运行状态进行检测,又避免对操作系统的整体性能产生影响,适用范围广泛,尤其适用于智能手机等交互型对延迟敏感的设备;此外,内核检测过程中,当目标内核运行到插桩点位置时会存储插桩点位置处的目标函数的运行数据,而当桩函数执行完成后可再根据目标函数的运行数据重新恢复目标函数的运行,这样可有效地减少对目标内核的执行流的干扰。另外,通过设置适配工具能够以自适应适配方式实现内核模块与目标内核的适配,不需要针对不同版本的内核构建不一样的内核模块,降低了工作量及复杂度;内核模块与目标内核相适配就能够成功将内核模块加载至目标内核中从而实现内核检测,这样可不受开源协议限制,开发可行度更高,尤其适用于批量开发及批量内核检测的场景。
请参见图8,是本发明实施例提供的一种电子设备的结构示意图,该电子设备1000包括:处理器1001、用户接口1003、网络接口1004以及存储装置1005,处理器1001、用户接口1003、网络接口1004以及存储装置1005之间通过总线1002连接。
用户接口1003,用于实现人机交互,用户接口可以包括显示屏或键盘等等。网络接口1004,用于与外部设备之间进行通信连接。存储装置1005与处理器1001耦合,用于存储各种软件程序和/或多组指令。具体实现中,存储装置1005可包括高速随机存取的存储器,并且也可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。存储装置1005可以存储操作系统(下述简称系统),例如ANDROID(安卓,一种移动操作系统),IOS(一种移动操作系统),或者LINUX等操作系统。存储装置1005还可以存储网络通信程序,该网络通信程序可用于与一个或多个附加设备,一个或多个终端设备,一个或多个网络设备进行通信。存储装置1005还可以存储用户接口程序,该用户接口程序可以通过图形化的操作界面将应用程序的内容形象逼真的显示出来,并通过菜单、对话框以及按键等输入控件接收用户对应用程序的控制操作。存储装置1005还可以存储一个或多个应用程序,如内核检测应用程序,用于检测操作系统中的内核的运行状态。
在一个实施例中,所述存储装置1005还可用于存储一条或一条以上的程序指令;所述处理器1001可以调用所述一条或一条以上的程序指令时能够执内核检测方法以实现监控内核的运行状态,具体地,所述处理器1001调用程序指令,执行如下步骤:
当所述目标内核运行至插桩点位置时中断所述目标内核中位于所述插桩点位置的目标函数的运行;将所述目标函数的运行数据存储至所述目标内存区域,其中,所述目标内存区域存储有所述目标函数中位于所述插桩点位置处的源指令;调用并执行所述目标内存区域中的桩函数以检测所述目标内核的运行状态;当所述桩函数被执行完成时,从所述目标内存区域中读取所述源指令及所述目标函数的运行数据;根据所述目标函数的运行数据执行所述源指令以重新启动所述目标函数的运行。
可选的,所述处理器1001可以调用所述程序指令,执行如下步骤:
在所述目标内核中加载所述内核模块;建立所述内核模块与所述目标内存区域的对应关系,所述目标内存区域是采用静态方式或动态方式对所述目标内核的内存空间进行分配得到的;将所述内核模块中的桩函数存储至所述目标内存区域。
可选的,所述处理器1001可以调用所述程序指令,执行如下步骤:
在所述目标内核的目标函数中注册所述插桩点位置;采用跳转指令替换所述目标函数中位于所述插桩点位置处的源指令,并将所述源指令存储至所述目标内存区域中。
可选的,所述处理器1001可以调用所述程序指令,执行如下步骤:
执行所述插桩点位置处的跳转指令以跳转至所述目标内存区域;将所述目标函数的运行数据存储至所述目标内存区域。
可选的,所述处理器1001可以调用所述程序指令,执行如下步骤:
在所述目标内存区域中恢复所述目标函数的运行数据;执行所述源指令;待所述源指令执行完成后,跳转至所述目标函数中从所述插桩点位置的下一位置继续运行所述目标函数。
可选的,所述处理器1001可以调用所述程序指令,执行如下步骤:
调用适配工具判断所述内核模块与所述目标内核是否适配;若所述内核模块与所述目标内核不适配,则对所述内核模块的配置信息进行修改以使得所述内核模块与所述目标内核适配;若所述内核模块与所述目标内核适配,则执行在所述目标内核中加载所述内核模块的步骤。
可选的,所述处理器1001可以调用所述程序指令,执行如下步骤:
调用所述适配工具获取所述目标内核的镜像,并从所述镜像中读取所述目标内核的属性信息;获取所述内核模块的配置信息;若所述内核模块的配置信息与所述目标内核的属性信息相匹配,则确认所述内核模块与所述目标内核适配;若所述内核模块的配置信息与所述目标内核的属性信息不匹配,则确定所述内核模块与所述目标内核不适配。
可选的,所述处理器1001可以调用所述程序指令,执行如下步骤:
根据所检测到的所述目标内核的运行状态生成日志,并输出所述日志;所述目标内核的运行状态包括正常运行状态或漏洞利用状态;若所述目标内核处于漏洞利用状态,拦截针对所述目标内核的漏洞利用程序。
可选的,所述目标操作系统为基于Linux的操作系统,所述内核模块为ELF格式的文件;所述内核模块包括扩展字段,所述扩展字段用于存储所述内核模块的配置信息。
在一个实施例中,所述处理器1001可用于读取和执行计算机指令,实现如本申请图3或图4所述的一种内核检测方法。本发明实施例中提供的电子设备解决问题的原理与图3及图4所述的方法实施例相似,因此该电子设备的实施方式可以参见方法实施例的实施方式,重复之处不再赘述。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序解决问题的实施方式可以参见上述图3及图4所述的一种内核检测方法的实施方式,重复之处不再赘述。
在本发明实施例中,内核模块定义了内核轻量级插桩框架,在目标内核中加载内核模块后则可通过插桩方式实现对目标内核的检测过程,这样有利于提高目标内核的安全性;另外,内核检测过程并不需要对目标内核中的函数的源指令进行批量修改,仅需针对目标函数中插桩点位置处的一条源指令进行改动即可实现,采用这样轻量级插桩过程,既能够快速、有效地对目标内核的运行状态进行检测,又避免对操作系统的整体性能产生影响,适用范围广泛,尤其适用于智能手机等交互型对延迟敏感的设备;此外,内核检测过程中,当目标内核运行到插桩点位置时会存储插桩点位置处的目标函数的运行数据,而当桩函数执行完成后可再根据目标函数的运行数据重新恢复目标函数的运行,这样可有效地减少对目标内核的执行流的干扰。另外,通过设置适配工具能够以自适应适配方式实现内核模块与目标内核的适配,不需要针对不同版本的内核构建不一样的内核模块,降低了工作量及复杂度;内核模块与目标内核相适配就能够成功将内核模块加载至目标内核中从而实现内核检测,这样可不受开源协议限制,开发可行度更高,尤其适用于批量开发及批量内核检测的场景。
以上所揭露的仅为本发明部分实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (12)
1.一种内核检测方法,应用于目标操作系统,所述目标操作系统包括目标内核,其特征在于,所述目标内核包含内核模块,所述内核模块与目标内存区域相对应,所述目标内存区域设有桩函数;所述方法包括:
当所述目标内核运行至插桩点位置时中断所述目标内核中位于所述插桩点位置的目标函数的运行;
将所述目标函数的运行数据存储至所述目标内存区域,其中,所述目标内存区域存储有所述目标函数中位于所述插桩点位置处的源指令;
调用并执行所述目标内存区域中的桩函数以检测所述目标内核的运行状态;
当所述桩函数被执行完成时,从所述目标内存区域中读取所述源指令及所述目标函数的运行数据;
根据所述目标函数的运行数据执行所述源指令以重新启动所述目标函数的运行。
2.如权利要求1所述的方法,其特征在于,还包括:
在所述目标内核中加载所述内核模块;
建立所述内核模块与所述目标内存区域的对应关系,所述目标内存区域是采用静态方式或动态方式对所述目标内核的内存空间进行分配得到的;
将所述内核模块中的桩函数存储至所述目标内存区域。
3.如权利要求2所述的方法,其特征在于,还包括:
在所述目标内核的目标函数中注册所述插桩点位置;
采用跳转指令替换所述目标函数中位于所述插桩点位置处的源指令,并将所述源指令存储至所述目标内存区域中。
4.如权利要求3所述的方法,其特征在于,所述将所述目标函数的运行数据存储至与所述目标内存区域,包括:
执行所述插桩点位置处的跳转指令以跳转至所述目标内存区域;
将所述目标函数的运行数据存储至所述目标内存区域。
5.如权利要求4所述的方法,其特征在于,所述目标函数的运行数据包括硬件上下文,所述根据所述目标函数的运行数据执行所述源指令以重新启动所述目标函数的运行,包括:
在所述目标内存区域中恢复所述目标函数的运行数据;
执行所述源指令;
待所述源指令执行完成后,跳转至所述目标函数中从所述插桩点位置的下一位置继续运行所述目标函数。
6.如权利要求2所述的方法,其特征在于,还包括:
调用适配工具判断所述内核模块与所述目标内核是否适配;
若所述内核模块与所述目标内核不适配,则对所述内核模块的配置信息进行修改以使得所述内核模块与所述目标内核适配;
若所述内核模块与所述目标内核适配,则执行在所述目标内核中加载所述内核模块的步骤。
7.如权利要求6所述的方法,其特征在于,所述调用所述适配工具判断所述内核模块与所述目标内核是否适配,包括:
调用所述适配工具获取所述目标内核的镜像,并从所述镜像中读取所述目标内核的属性信息;
获取所述内核模块的配置信息;
若所述内核模块的配置信息与所述目标内核的属性信息相匹配,则确认所述内核模块与所述目标内核适配;
若所述内核模块的配置信息与所述目标内核的属性信息不匹配,则确定所述内核模块与所述目标内核不适配。
8.如权利要求1-7任一项所述的方法,其特征在于,还包括:
根据检测到的所述目标内核的运行状态生成日志,并输出所述日志;所述目标内核的运行状态包括正常运行状态或漏洞利用状态;
若所述目标内核处于漏洞利用状态,拦截针对所述目标内核的漏洞利用程序。
9.如权利要求1所述的方法,其特征在于,所述目标操作系统为基于Linux的操作系统,所述内核模块为ELF格式的文件;
所述内核模块包括扩展字段,所述扩展字段用于存储所述内核模块的配置信息。
10.一种内核检测装置,应用于目标操作系统,所述目标操作系统包括目标内核,其特征在于,所述目标内核包含内核模块,所述内核模块与目标内存区域相对应,所述目标内存区域设有桩函数;所述装置包括:
存储单元,用于当所述目标内核运行至插桩点位置时中断所述目标内核中位于所述插桩点位置的目标函数的运行,将所述目标函数的运行数据存储至目标内存区域,其中,所述目标内存区域存储有所述目标函数中位于所述插桩点位置处的源指令;
获取单元,用于调用并执行所述目标内存区域中的桩函数以检测所述目标内核的运行状态;
读取单元,用于当所述桩函数被执行完成时,从所述目标内存区域中读取所述源指令及所述目标函数的运行数据;
执行单元,用于根据所述目标函数的运行数据执行所述源指令以重新启动所述目标函数的运行。
11.一种电子设备,所述电子设备内置目标操作系统,所述目标操作系统包括目标内核,其特征在于,所述电子设备包括:
处理器,适于实现一条或一条以上指令;以及,
计算机存储介质,所述计算机存储介质存储有一条或一条以上指令,所述一条或一条以上指令适于由处理器加载并执行如权利要求1-9任一项所述的内核检测方法。
12.一种计算机存储介质,其特征在于,所述计算机存储介质存储有一条或一条以上指令,所述一条或一条以上指令适于由处理器加载并执行如权利要求1-9任一项所述的内核检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811346957.6A CN110414218B (zh) | 2018-11-13 | 2018-11-13 | 内核检测方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811346957.6A CN110414218B (zh) | 2018-11-13 | 2018-11-13 | 内核检测方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110414218A true CN110414218A (zh) | 2019-11-05 |
CN110414218B CN110414218B (zh) | 2022-09-09 |
Family
ID=68358112
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811346957.6A Active CN110414218B (zh) | 2018-11-13 | 2018-11-13 | 内核检测方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110414218B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111913878A (zh) * | 2020-07-13 | 2020-11-10 | 苏州洞察云信息技术有限公司 | 基于程序分析结果的字节码插桩方法、装置及存储介质 |
CN115017058A (zh) * | 2022-08-04 | 2022-09-06 | 飞腾信息技术有限公司 | 一种内核模块的测试方法、装置、电子设备及存储介质 |
CN115617687A (zh) * | 2022-10-31 | 2023-01-17 | 清华大学 | 程序插桩方法、装置、设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060174229A1 (en) * | 2005-02-03 | 2006-08-03 | Muser Carol P | Methods and tools for executing and tracing user-specified kernel instructions |
US20070266376A1 (en) * | 2006-05-11 | 2007-11-15 | Samsung Electronics Co., Ltd. | Kernel-aware debugging system, medium, and method |
US20090013145A1 (en) * | 2007-07-02 | 2009-01-08 | Jes Kiran Chittigala | System and method for finding kernel memory leaks |
US20110258608A1 (en) * | 2010-04-15 | 2011-10-20 | International Business Machines Corporation | Method and apparatus to locate bottleneck of java program |
US20130159977A1 (en) * | 2011-12-14 | 2013-06-20 | Microsoft Corporation | Open kernel trace aggregation |
CN105893085A (zh) * | 2016-03-30 | 2016-08-24 | 百度在线网络技术(北京)有限公司 | 内核模块加载方法和装置 |
-
2018
- 2018-11-13 CN CN201811346957.6A patent/CN110414218B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060174229A1 (en) * | 2005-02-03 | 2006-08-03 | Muser Carol P | Methods and tools for executing and tracing user-specified kernel instructions |
US20070266376A1 (en) * | 2006-05-11 | 2007-11-15 | Samsung Electronics Co., Ltd. | Kernel-aware debugging system, medium, and method |
US20090013145A1 (en) * | 2007-07-02 | 2009-01-08 | Jes Kiran Chittigala | System and method for finding kernel memory leaks |
US20110258608A1 (en) * | 2010-04-15 | 2011-10-20 | International Business Machines Corporation | Method and apparatus to locate bottleneck of java program |
US20130159977A1 (en) * | 2011-12-14 | 2013-06-20 | Microsoft Corporation | Open kernel trace aggregation |
CN105893085A (zh) * | 2016-03-30 | 2016-08-24 | 百度在线网络技术(北京)有限公司 | 内核模块加载方法和装置 |
Non-Patent Citations (1)
Title |
---|
刘晨: "基于内核函数监控的Linux系统防护方法的研究与实现", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑(月刊)》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111913878A (zh) * | 2020-07-13 | 2020-11-10 | 苏州洞察云信息技术有限公司 | 基于程序分析结果的字节码插桩方法、装置及存储介质 |
CN111913878B (zh) * | 2020-07-13 | 2023-09-15 | 苏州洞察云信息技术有限公司 | 基于程序分析结果的字节码插桩方法、装置及存储介质 |
CN115017058A (zh) * | 2022-08-04 | 2022-09-06 | 飞腾信息技术有限公司 | 一种内核模块的测试方法、装置、电子设备及存储介质 |
CN115017058B (zh) * | 2022-08-04 | 2022-11-29 | 飞腾信息技术有限公司 | 一种内核模块的测试方法、装置、电子设备及存储介质 |
CN115617687A (zh) * | 2022-10-31 | 2023-01-17 | 清华大学 | 程序插桩方法、装置、设备和存储介质 |
CN115617687B (zh) * | 2022-10-31 | 2023-08-25 | 清华大学 | 程序插桩方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110414218B (zh) | 2022-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11507671B1 (en) | Detection and healing of vulnerabilities in computer code | |
US10949528B1 (en) | System and method for secure, policy-based access control for mobile computing devices | |
EP3547189B1 (en) | Method for runtime mitigation of software and firmware code weaknesses | |
WO2019072008A1 (zh) | 小程序的安全扫描方法、装置以及电子设备 | |
US10176327B2 (en) | Method and device for preventing application in an operating system from being uninstalled | |
US20210334384A1 (en) | Detecting a potential security leak by a microservice | |
CA2944586A1 (en) | Systems and methods to enforce security policies on the loading, linking, and execution of native code by mobile applications running inside of virtual machines | |
CN110414218A (zh) | 内核检测方法、装置、电子设备及存储介质 | |
CN108197476B (zh) | 一种智能终端设备的漏洞检测方法及装置 | |
CN112840341B (zh) | 用于探测与安全相关的数据流的方法 | |
CN109271789B (zh) | 恶意进程检测方法、装置、电子设备及存储介质 | |
US11829479B2 (en) | Firmware security verification method and device | |
WO2023035751A1 (zh) | 移动端应用的智能混淆 | |
WO2022017242A1 (zh) | 在第一系统运行第二系统应用的方法、装置、设备及介质 | |
US11934533B2 (en) | Detection of supply chain-related security threats to software applications | |
EP3916598A1 (en) | System and method for detecting exploitation of a vulnerability of software | |
Hamadouche et al. | Virus in a smart card: Myth or reality? | |
CN108170433A (zh) | 一种Java代码的混淆方法、恢复方法及其装置 | |
EP3692456B1 (en) | Binary image stack cookie protection | |
KR102425474B1 (ko) | BinTyper: C++ 프로그램 바이너리 대상의 타입 컨퓨전 버그 탐지 | |
CN114238943A (zh) | 应用程序防护方法、装置、设备及存储介质 | |
US20210232695A1 (en) | Augmenting executables having cryptographic primitives | |
KR20220068877A (ko) | 보안 시스템 설계 및 검증을 위한 모델 기반 보안 프레임워크 | |
CN111625846A (zh) | 一种移动终端设备及系统状态记录方法 | |
CN103984730A (zh) | 一种信息处理方法及电子设备 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230920 Address after: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Patentee after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Address before: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |