内核函数加固方法、装置、存储介质及电子设备
技术领域
本申请涉及计算机安全
技术领域
,特别的涉及一种内核函数加固方法、装置、存储介质及电子设备。背景技术
Linux操作系统的内核中具有一系列可执行设定功能的内核函数,可由SHELL解释器将用户操作指令传递至内核中以调用该内核函数。
在内核函数中存在有内核态调用用户态函数(call_usermodehelper函数),该函数可用于在内核中直接新建、运行用户的空间程序,并将处理结果返回给用户,且该函数具备ROOT权限。利用该权限特性,用户可在具备一定条件的情况下劫持内核态调用用户态函数,并以ROOT权限执行用户的空间程序。
在现有的Linux操作系统中,对于内核态调用用户态函数类仅依赖原生环境对可执行二进制文件进行常规检查和限制,并没有设定防御机制,例如当用户通过劫持内核指针的方式劫持内核态调用用户态函数时,可利用ROOT权限造成信息泄露等危害。
发明内容
本申请实施例提供了一种内核函数加固方法、装置、存储介质及电子设备,可通过判断进程权限的方式来防止内核函数被随意调用,进而避免了信息的泄露。
第一方面,本申请实施例提供了一种内核函数加固方法,包括:
在检测到触发目标内核函数指令的情况下,基于当前进程判断触发目标内核函数指令是否具有目标权限;
根据触发目标内核函数指令是否具有目标权限的判断结果对当前进程进行处理。
第二方面,本申请实施例提供了一种内核函数加固装置,包括:
第一处理模块,用于在检测到触发目标内核函数指令的情况下,基于当前进程判断触发目标内核函数指令是否具有目标权限;
第二处理模块,用于根据触发目标内核函数指令是否具有目标权限的判断结果对当前进程进行处理。
第三方面,本申请实施例提供了一种电子设备,包括处理器以及存储器;
处理器与存储器相连;
存储器,用于存储可执行程序代码;
处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行本申请实施例第一方面或第一方面的任意一种实现方式提供的内核函数加固方法。
第四方面,本申请实施例提供了一种计算机存储介质,计算机存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时,可实现本申请实施例第一方面或第一方面的任意一种实现方式提供的内核函数加固方法。
在本申请实施例中,在检测到触发目标内核函数指令的情况下,基于当前进程判断触发目标内核函数指令是否具有目标权限;根据触发目标内核函数指令是否具有目标权限的判断结果对当前进程进行处理。电子设备可对检测到的触发目标内核函数指令进行是否具有目标权限的判断,在判断出具有目标权限的情况下可防止该触发目标内核函数指令执行调用目标内核函数,为目标内核函数提供了不同于原生环境的检测机制,进而可避免因权限造成的信息泄露等危害。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种基于Linux内核的操作系统的结构示意图;
图2为本申请实施例提供的一种内核函数加固系统的架构示意图;
图3为本申请实施例提供的一种内核函数加固方法的流程示意图;
图4为本申请实施例提供的一种基于Linux系统的进程孵化示意图;
图5为本申请实施例提供的又一种内核函数加固方法的流程示意图;
图6为本申请实施例提供的又一种内核函数加固方法的流程示意图;
图7为本申请实施例提供的又一种内核函数加固方法的流程示意图;
图8为本申请实施例提供的又一种内核函数加固方法的流程示意图;
图9为本申请实施例提供的一种内核函数加固方法的整体流程框图;
图10为本申请实施例提供的又一种内核函数加固方法的流程示意图;
图11为本申请实施例提供的一种电子设备展示提示信息的效果示意图;
图12为本申请实施例提供的一种内核函数加固装置的结构示意图;
图13为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
市场上的安卓(Android)设备通常安装有安卓系统,安卓系统是一个基于Linux内核的移动操作系统,自带有便于接收用户操作指令的图形界面,通过将用户操作指令发送给Linux内核,以由Linux内核根据该用户操作指令进行相关程序处理。换句话说,用户在图形界面形成的操作指令是用于控制安装有安卓系统的计算机。然而,可对设备硬件(例如CPU、内存等)进行控制的只有Linux内核,处于安全复杂等原因用户不能直接接触Linux内核,此时需要再利用另外一个程序,作为介质实现接收用户的操作指令,并转换处理以将处理后的操作指令传递给内核。该方式既简化了用户的操作,又保护了Linux内核。
具体的,图1示出了本申请实施例提供的一种基于Linux内核的操作系统的结构示意图。如图1所示,该操作系统100可包括三个部分,分别为操作指令获取模块、SHELL解释器以及Linux内核。其中,操作指令可为用户在该操作系统的图形显示界面进行的操作,例如但不局限于点击某个图标、长按某个图标等。SHELL解释器可用于接收在图形显示界面获取的用户操作指令,对该用户操作指令进行转换处理并将处理后的用户操作指令传递给Linux内核。Linux内核可用于接收由SHELL解释器发送的处理后的用户操作指令,基于该处理后的用户操作指令运行相关程序或者调用相关函数,并可将与运行的结果返回至图形显示界面。可以理解的是,SHELL解释器可不局限于上述获取用户操作指令以及将处理的操作指令传递给Linux内核,例如还可调用其他程序或给其他程序传递数据等。
例如,以安装有安卓操作系统的电子设备为例,用户可在电子设备的主界面选择点击微信应用程序图标,SHELL解释器在接收到点击微信应用程序图标的操作指令后,对该操作指令进行转换处理,并将处理后的操作指令传递给Linux内核。Linux内核在接收到处理后的操作指令后,可对该操作指令创建相关进程并运行,并将表示打开微信应用程序的运行结果通过SHELL解释器返回至电子设备的主界面,以使电子设备显示微信应用程序的主界面。
在Linux内核中可设置有多个预定功能的函数,当接收到由SHELL解释器传递的指令后,可根据指令创建进程以调用可执行相关功能的函数。例如,Linux内核提供了内核态调用用户态函数(call_usermodehelper函数),当Linux内核调用该内核态调用用户态函数时,会在工作队列中加入一个工作线程,该工作线程在运行之后可最终启动用户空间的应用程序,并将得到的参数结果返回至该应用程序。此处可以理解的,Linux系统包括内核空间和用户空间,其中内核的驱动程序运行在内核空间,应用程序运行在用户空间。需要说明的是,该内核态调用用户态函数具有超级用户权限(root权限),也即当用户通过某种方式可直接调用该内核态调用用户态函数时,可利用root权限执行其他程序。可能的,用户可根据内核态调用用户态函数的root权限执行内核信息的调用,并可将调用的内核信息通过打印等方式获取,以造成内核信息的泄露。可能的,一些非法用户可根据内核态调用用户态函数的root权限关闭强制访问控制节点(Security-Enhanced Linux),以解除对于某些重要程序的访问权限。可能的,一些非法用户还可根据内核态调用用户态函数的root权限关闭内核符号表地址隐藏功能,以使Linux系统可显示出内核符号表中对应不同函数的符号,进而实现函数的随意调用。可能的,一些非法用户还可根据内核态调用用户态函数的root权限触发某些中低危漏洞,例如拒绝服务(DOS)等。
以现有技术中利用内核态调用用户态函数的root权限为例,基于Linux系统的绕过交换空间(SMAP)提高权限的方式可为利用内核态调用用户态函数以root权限执行binary指令。
可以理解的是,由于内核态调用用户态函数具有root权限,用户不能直接调用该内核态调用用户态函数,但当用户具备一些条件(例如劫持内核指针,通过内核指针可跳转到内核态调用用户态函数地址)时,可劫持内核态调用用户态函数。
对于上述提到的对内核态调用用户态函数的攻击方式,现有的Linux系统没有设定防御机制,仅依赖原生环境对可执行二进制文件的常规检查和限制,但该方式对于内核态调用用户态函数的攻击方式无法防御。
针对现有Linux系统的缺陷,下面对本申请进行详细的解释说明。
请参阅图2,图2示出了本申请实施例提供的一种内核函数加固系统的架构示意图。
如图2所示,该内核函数加固系统200可包括电子设备201以及控制终端202,其中:
电子设备201可为一个安装有安卓系统的电子设备201或者多个安装有安卓系统的电子设备201,在安卓系统内部的Linux内核中可配置有多个设定功能的内核函数,例如但不局限于包括具有root权限的内核态调用用户态函数。电子设备201可在显示界面接收用户想要执行的操作,例如用户想使用某个应用程序,可用手指点击显示界面中该应用程序的图标,此时电子设备201接收到的是用户点击该应用程序图标的操作指令,并可将该操作指令发送至SHELL解释器,以由SHELL解释器将处理的操作指令传递给电子设备201的Linux内核。当Linux内核执行完相应程序后可将结果返回至电子设备201的显示界面,例如电子设备201可在接收到用户点击某应用程序图标的操作指令后进入该应用程序的主界面。
由于电子设备201的Linux内核中某些内核函数具有较高权限,处于安全性不能由用户的操作指令进行执行调用,当Linux内核接收到由SHELL解释器转换处理的执行调用具有较高权限的内核函数指令时,可基于该执行调用具有较高权限的内核函数指令创建的当前进程判断该执行调用具有较高权限的内核函数指令是否具有目标权限。其中,此处的目标权限可为SHELL解释器所具有的SHELL权限,该SHELL权限可用于表征Linux内核接收到的指令为用户指令。进一步的,电子设备可根据该执行调用具有较高权限的内核函数指令是否具有目标权限的判断结果对当前进程进行处理。
本申请实施例中涉及的电子设备201可以是安装有安卓系统的智能手机、平板电脑、桌面型、膝上型、笔记本电脑、超级移动个人计算机(Ultra-mobile PersonalComputer,UMPC)、手持计算机、上网本、个人数字助理(Personal Digital Assistant,PDA)、路由设备、虚拟现实设备等。
控制终端202可为设置有SHELL解释器的终端,其与电子设备201建立连接后可基于SHELL解释器向电子设备201的Linux内核传递执行调用内核函数的指令。其中,控制终端202与电子设备201的连接方式可以但不局限于数据线连接、无线连接或近场通信连接等。可能的,当控制终端202与电子设备201为数据线连接时,用户可在控制终端202对SHELL解释器进行代码编辑,以使SHELL解释器向电子设备201的Linux内核传递执行调用具有较高权限的内核函数指令。
可能的,当控制终端202与电子设备201为无线连接时,控制终端202可先接收安装在电子设备201上的应用程序发送的执行调用具有较高权限的内核函数指令,通过SHELL解释器对该执行调用具有较高权限的内核函数指令进行处理后将处理的执行调用具有较高权限的内核函数指令返回给该应用程序,并由应用程序直接将处理的执行调用具有较高权限的内核函数指令传递给电子设备201。
本申请实施例中涉及的控制终端202可以是安装有SHELL解释器的平板电脑、桌面型、膝上型、笔记本电脑、超级移动个人计算机(Ultra-mobile Personal Computer,UMPC)、手持计算机、上网本、个人数字助理(Personal Digital Assistant,PDA)、路由设备、虚拟现实设备等。
需要说明的是,本申请实施例的内核函数加固系统的结构除了基于上述提到的控制终端202与电子设备201,还可直接由电子设备构成,该电子设备可安装有用于向电子设备的Linux内核发送执行调用较高权限的内核函数指令的应用程序。可能的,该应用程序在用户运行时可先向应用程序对应的后台服务器上传执行调用较高权限的内核函数指令,由后台服务器设置的SHELL解释器对该执行调用较高权限的内核函数指令进行处理,并将处理的执行调用较高权限的内核函数指令传递给电子设备的Linux内核,以调用较高权限的内核函数。
可能的,该应用程序可在运行时将预设存储的处理的执行调用较高权限的内核函数指令传递给电子设备的Linux内核,以调用较高权限的内核函数。
可以理解地,该应用程序也可在用户安装之后直接将执行调用较高权限的内核函数指令传递给电子设备的Linux内核,本申请实施例不局限于此。
请参阅图3,图3示出了本申请实施例提供的一种内核函数加固方法的流程示意图,该方法应用于安装有安卓系统的电子设备。
如图3所示,该内核函数加固方法具体包括以下步骤:
步骤301、在检测到触发目标内核函数指令的情况下,基于当前进程判断触发目标内核函数指令是否具有目标权限。
具体地,电子设备的Linux内核在检测到触发目标内核函数指令的情况下,会根据触发目标内核函数指令创建当前进程,并可基于当前进程判断目标内核函数指令是否具有目标权限。示例性地,该目标权限可为用于传递表征执行调用目标内核函数指令的SHELL解释器的SHELL权限。其中,目标内核函数可为Linux内核中具有较高权限的内核函数,例如但不局限于内核态调用用户态函数。
可以理解的是,可能的,当前进程可作为一个进程组的第一个进程,也即组长进程。可能的,当前进程也可作为一个进程组的最后一个进程,即由前一个进程(父进程)直接孵化得到的子进程。对于一个进程组中任意一个进程都具有权限,若进程组中存在至少两个进程则任意两个相邻进程的权限可存在关联,例如前一个进程的权限等于孵化得到的后一个进程的权限,也可能孵化得到的后一个进程根据需求降低权限,则此时前一个进程的权限大于孵化得到的后一个进程的权限。
步骤302、根据触发目标内核函数指令是否具有目标权限的判断结果对当前进程进行处理。
具体地,电子设备在确定触发目标函数指令是否具有目标权限的判断结果之后,可结合判断结果对当前进程进行处理,不同的判断结果可对应有对当前进程执行不同的处理方式。
在本申请实施例中,电子设备可对检测到的触发目标内核函数指令进行是否具有目标权限的判断,在判断出具有目标权限的情况下可防止该触发目标内核函数指令执行调用目标内核函数,为目标内核函数提供了不同于原生环境的检测机制,进而可避免因权限造成的信息泄露等危害。
为便于更好的理解当前进程以及进程组,此处可先参阅图4示出的本申请实施例提供的一种基于Linux系统的进程孵化示意图。
如图4所示,该进程孵化示意图可包括有进程组1和进程组2,其中进程组1包括有进程A、进程B以及进程C,进程B由进程A基于fork接口直接孵化得到(相当于进程A为进程B的父进程),进程C由进程B基于fork接口直接孵化得到(相当于进程B为进程C的父进程),且进程A的当前进程识别号(可用pid表示)与组长进程识别号(可用tgid表示)对应的数值均为43,进程B的pid与tgid对应的数值均为42,进程C的pid与tgid对应的数值均为41,也即可以理解为进程A、进程B以及进程C均可各自作为组长进程。需要注意的是,在进程组1中进程A并不一定代表为进程组1中所有进程的组长进程,例如进程组1的源头由init进程(Linux系统创建的第一个进程)得到。
进程组2包括有进程B、进程b1以及进程b2,进程b1由进程B基于new接口直接孵化得到(相当于进程B为进程b1的父进程),进程b2由进程b1基于new接口直接孵化得到(相当于进程b1为进程b2的父进程),且进程B的pid与tgid对应的数值均为42,进程b1的pid对应的数值为44以及tgid对应的数值为42,进程b2到的pid对应的数值为46以及tgid对应的数值为42,也即在进程组2中若以进程b2作为当前进程,则进程b1为父进程,进程B为组长进程。
可能地,若本实施例中的当前进程为图4中的进程C,则表明进程C也可表示为组长进程,且进程C具有父进程(进程B),进一步的可根据进程B所具有的权限以及进程C所具有的权限判断触发目标内核函数指令是否具有目标权限。
可能地,若本实施例中的当前进程为图4中的进程b2,则表明进程b1为父进程,进程B为组长进程,进一步的可根据进程b2所具有的权限、进程b1所具有的权限以及进程B所具有的权限判断触发目标内核函数指令是否具有目标权限。
可以理解地,基于上述提出的当前进程以及进程组,本申请实施例接下来可对当前进程仅包括组长进程、当前进程至少包括组长进程以及与组长进程处于同一进程组的父进程、当前进程不包括组长进程的情况进行详细说明。
作为本申请的一个实施例,可参阅图5示出的本申请实施例提供的又一种内核函数加固方法的流程示意图,其中当前进程的结构体包括当前进程识别号以及组长进程识别号;
如图5所示,该内核函数加固方法具体包括以下步骤:
步骤501、在检测到触发目标内核函数指令的情况下,判断当前进程识别号与组长进程识别号是否相等。
步骤502、在当前进程识别号与组长进程识别号不相等的情况下,确定当前进程具有组长进程,并获取组长进程的结构体。
步骤503、基于组长进程的结构体以及当前进程的结构体判断触发目标内核函数指令是否具有目标权限。
步骤504、根据触发目标内核函数指令是否具有目标权限的判断结果对当前进程进行处理。
其中,组长进程以及当前进程处于第一进程组,第一进程组包括组长进程以及当前进程,且当前进程由所述组长进程得到。
具体地,电子设备在基于当前进程判断触发目标内核函数指令是否具有目标权限时可优先判断当前进程所在的第一进程组是否具有组长进程,判断方式可为在当前进程的结构体中分别确定当前进程识别号(pid)与组长进程识别号(tgid)所对应的数值,并判断当前进程识别号对应的数值是否与组长进程识别号对应的数值相等,若不相等则意味着当前进程所在第一进程组中具有组长进程。可以理解的是,若当前进程所在的第一进程组具有组长进程,则当前进程是由组长进程孵化得到,换言之组长进程的权限在当前进程未根据需求降低权限的情况下等于当前进程的权限,以及在当前进程根据需求降低权限的情况下大于当前进程的权限。
需要注意的是,在确定当前进程所在的进程组具有组长进程的情况下,可表明当前进程所在的进程组至少包括当前进程和组长进程。可能的,以当前进程所在的进程组包括A、B、C以及D四个进程为例,组长进程可用A表示,当前进程则可用D表示,需注意此时当前进程的父进程可用C表示。可能的,以当前进程所在的进程组包括A和B两个进程为例,组长进程可用A表示,当前进程可用B表示,且此时父进程等同于组长进程(当前进程由父进程直接孵化得到)。
本实施例以当前进程所在的第一进程组仅包括当前进程和组长进程为例,进一步的,可将组长进程识别号输入至Linux内核的特定原生态函数得到组长进程的结构体。其中,组长进程的结构体可与当前进程的结构体一致,例如可包括对应数值相同的当前进程识别号(pid)与组长进程识别号(tgid),此处组长进程的pid对应为组长进程识别号。
进一步的,在得到组长进程的结构体的情况下,可基于组长进程的结构体所具有的权限以及当前进程的结构体所具有的权限判断触发目标内核函数指令是否具有目标权限。
在本申请实施例中,可对于当前进程具有组长进程且当前进程所在的进程组有且仅包括当前进程以及组长进程的情况,根据组长进程所具有的权限以及当前进程所具有的权限判断触发目标内核函数指令是否具有目标权限,可扩大检测是否具有目标权限的进程范围,进而提升了对目标内核函数的防御能力。
作为本申请的又一个实施例,可参阅图6示出的本申请实施例提供的又一种内核函数加固方法的流程示意图,其中当前进程的结构体包括当前进程识别号以及组长进程识别号。
如图6所示,该内核函数加固方法具体包括以下步骤:
步骤601、在检测到触发目标内核函数指令的情况下,判断当前进程识别号与组长进程识别号是否相等。
步骤602、在当前进程识别号与组长进程识别号不相等的情况下,确定当前进程具有组长进程,并获取组长进程的结构体以及基于第一接口生成的第一父进程的结构体。
步骤603、基于组长进程的结构体、第一父进程的结构体以及当前进程的结构体判断触发目标内核函数指令是否具有目标权限。
步骤604、根据触发目标内核函数指令是否具有目标权限的判断结果对当前进程进行处理。
其中,组长进程、第一父进程以及当前进程处于第二进程组,第二进程组至少包括组长进程、第一父进程以及当前进程,且当前进程由第一父进程得到,第一父进程由组长进程得到。
具体地,电子设备在确定当前进程所在的第二进程组具有组长进程的情况下,本实施例以当前进程所在的第二进程组至少包括当前进程、组长进程以及第一父进程为例,可在将组长进程识别号输入至Linux内核的特定原生态函数得到组长进程的结构体的基础上,还获取基于第一接口生成的第一父进程的结构体。其中,第一接口可为Linux系统特定用于创建进程的new接口,第一父进程可由组长进程基于new接口孵化得到,当前进程可由第一父进程基于new接口直接孵化得到。这里需注意的是,在第二进程组中除组长进程以外的其他进程,均基于new接口孵化得到。参照上述获取组长进程的结构体的方式,可将当前进程的当前进程识别号输入至Linux内核的其他特定原生态函数得到对应当前进程的父进程结构体。
进一步的,在得到组长进程的结构体以及父进程的结构体的情况下,可基于组长进程的结构体所具有的权限、第一父进程的结构体所具有的权限以及当前进程的结构体所具有的权限判断触发目标内核函数指令是否具有目标权限。
在本申请实施例中,可对于当前进程具有组长进程以及父进程的情况,根据组长进程所具有的权限、父进程所具有的权限以及当前进程所具有的权限判断触发目标内核函数指令是否具有目标权限,可扩大检测是否具有目标权限的进程范围,进而提升了对目标内核函数的防御能力。
作为本申请的又一个实施例,可参阅图7示出的本申请实施例提供的又一种内核函数加固方法的流程示意图,其中当前进程的结构体包括当前进程识别号以及组长进程识别号。
如图7所示,该内核函数加固方法具体包括以下步骤:
步骤701、在检测到触发目标内核函数指令的情况下,判断当前进程识别号与组长进程识别号是否相等。
步骤702、在当前进程识别号与组长进程识别号相等的情况下,确定当前进程不具有组长进程,并获取基于第二接口生成的第二父进程的结构体。
步骤703、在检测到第二父进程的结构体的情况下,基于第二父进程的结构体以及当前进程的结构体判断触发目标内核函数指令是否具有目标权限;其中,第二父进程与当前进程处于第三进程组,第三进程组至少包括第二父进程与当前进程,且当前进程由第二父进程得到;或
在未检测到第二父进程的结构体的情况下,基于当前进程的结构体判断触发目标内核函数指令是否具有目标权限。
步骤704、根据触发目标内核函数指令是否具有目标权限的判断结果对当前进程进行处理。
具体地,电子设备在基于当前进程判断触发目标内核函数指令是否具有目标权限时若当前进程识别号与组长进程识别号相等,可确定当前进程不具有额外的组长进程,换言之当前进程可作为所在进程组的组长进程,且该进程组只有一个进程。
需要注意的是,此处当前进程作为组长进程基于上述提到的new接口没有孵化得到其他进程,但该当前进程仍有可能由其他进程基于Linux系统特定用于创建进程的其他接口孵化得到,例如由其他进程基于Linux系统特定用于创建进程的fork接口孵化得到,也即意味着当前进程在基于fork接口孵化组成的进程组中具有父进程,此处的父进程基于fork接口孵化得到。
进一步的,当确定当前进程不具有组长进程(也即当前进程可作为组长进程)的情况下,可获取基于第二接口生成的第二父进程的结构体,此处的第二接口可为上述提到的fork接口。可能的,在没有检测到第二父进程的结构体的情况下,表明当前进程既不具有组长进程也不具有父进程,可直接基于当前进程所具有的权限判断触发目标内核函数指令是否具有目标权限。
可能的,在检测到第二父进程的结构体的情况下,表明当前进程具有父进程,则可根据当前进程所具有的权限以及第二父进程所具有的权限判断触发目标内核函数指令是否具有目标权限。其中,结合图4可得知当前进程和第二父进程为基于fork接口得到的第三进程组中的进程,该第三进程组不一定只包括有当前进程和第二父进程,且当前进程在基于new接口得到的进程组中确定当前进程作为组长进程的情况下仅需考虑是否具有基于fork接口得到该当前进程的第二父进程即可。
可以理解的是,本实施例可不局限于获取当前进程的第二父进程,例如还可获取包括当前进程以及第二父进程的第三进程组中的源头进程(也可称作该进程组中的组长进程),以进一步扩大检测是否具有目标权限的进程范围。当然,若源头进程为上述提到的init进程,则无需对该源头进程进行获取。
在本申请实施例中,对于当前进程不具有组长进程的情况,可获取基于不同接口得到当前进程的第二父进程,并根据该第二父进程的检测结果结合当前进程判断触发目标内核函数指令是否具有目标权限,可最大化检测是否具有目标权限的进程范围,进而提升对目标内核函数的防御能力。
结合上述几个实施例提到的基于当前进程判断触发目标内核函数指令是否具有目标权限的方式,具体可参阅图8示出的本申请实施例提供的又一种内核函数加固方法的流程示意图。
如图8所示,该内核函数加固方法具体包括以下步骤:
步骤801、在检测到触发目标内核函数指令的情况下,判断当前进程识别号与组长进程识别号是否相等。
步骤802、在当前进程识别号与组长进程识别号不相等的情况下,确定当前进程具有组长进程,并获取组长进程结构体。
步骤803、基于组长进程的结构体以及当前进程的结构体判断触发目标内核函数指令是否具有目标权限。
可能的,若当前进程的结构体中的当前进程识别号对应的数值与组长进程识别号对应的数值不相等,可将组长进程识别号输入至Linux内核的特定原生态函数获取对应于当前进程的组长进程的结构体,并基于组长进程的结构体以及当前进程的结构体两个进程所具有的权限判断触发目标内核函数指令是否具有目标权限。
步骤804、在当前进程识别号与组长进程识别号不相等的情况下,确定当前进程具有组长进程,并获取组长进程的结构体以及基于第一接口生成的第一父进程的结构体。
步骤805、基于组长进程的结构体、第一父进程的结构体以及当前进程的结构体判断触发目标内核函数指令是否具有目标权限。
可能的,若当前进程的结构体中的当前进程识别号对应的数值与组长进程识别号对应的数值不相等,可将组长进程识别号输入至Linux内核的特定原生态函数获取对应于当前进程的组长进程的结构体,且可将当前进程识别号输入至Linux内核的其他特定原生态函数获取对应当前进程的第一父进程结构体,并基于组长进程的结构体、第一父进程的结构体以及当前进程的结构体三个进程所具有的权限判断触发目标内核函数指令是否具有目标权限。
作为本申请的又一个实施例,组长进程的结构体包括组长进程身份标识号,第一父进程的结构体包括第一父进程身份标识号,当前进程的结构体包括当前进程身份标识号;
基于组长进程的结构体、第一父进程的结构体以及当前进程的结构体判断触发目标内核函数指令是否具有目标权限,包括:
判断组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号中任意一个是否满足预设条件;
在组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号中任意一个满足预设条件的情况下,确定判断结果为具有目标权限;或
在组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号都不满足预设条件的情况下,确定判断结果为不具有目标权限。
需要说明的是,基于SHELL解释器传递给Linux内核的指令所具有的SHELL权限可用身份标识号(UID)表示,且SHELL解释器的SHELL权限为固定值,可表示为UID等于2000。
具体地,电子设备在确定当前进程具有组长进程以及第一父进程的情况下,可判断组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号中任意一个是否满足预设条件,该预设条件可设定为上述提到的UID等于2000。换言之,组长进程的结构体、第一父进程的结构体以及当前进程的结构体中均有各自对应的身份标识号,每一个身份标识号可对应一个数值,通过判断组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号中任意一个数值是否等于2000来确定所述触发目标内核函数指令是否具有目标权限的判断结果。
可能的,若检测到在组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号中任意一个所对应的数值等于2000,则表明组长进程、第一父进程以及当前进程三个结构体中至少有一个结构体具有SHELL权限,进而可确定判断结果为具有目标权限。
可能的,若检测到在组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号中任意一个所对应的数值均不等于2000,则表明组长进程、第一父进程以及当前进程三个结构体中没有结构体具有SHELL权限,进而可确定判断结果为不具有目标权限。
此处可以理解的是,若当前进程仅具有组长进程时,可检测组长进程身份标识号以及当前进程身份标识号中任意一个所对应的数值是否等于2000,若检测到则表明组长进程以及当前进程两个结构体中至少有一个结构体具有SHELL权限,进而可确定判断结果为具有目标权限。若未检测到则表明组长进程以及当前进程两个结构体中没有结构体具有SHELL权限,进而可确定判断结果为不具有目标权限。
在本申请实施例中,具体可结合组长进程、第一父进程以及当前进程三个结构体中各自身份标识号所对应的数值是否等于2000来判断触发目标内核函数指令是否具有目标权限,在保障最大化检测是否具有目标权限的进程范围的情况下提高判断结果的准确性,进一步提升对目标内核函数多方面的防御能力。
步骤806、在当前进程识别号与组长进程识别号相等的情况下,确定当前进程不具有组长进程,获取基于第二接口生成的第二父进程的结构体。
步骤807、在检测到第二父进程的结构体的情况下,基于第二父进程的结构体以及当前进程的结构体判断触发目标内核函数指令是否具有目标权限。
可能的,若当前进程的结构体中的当前进程识别号对应的数值与组长进程识别号对应的数值相等,且获取到基于fork接口得到的进程中对应的第二父进程的结构体,可基于第二父进程的结构体以及当前进程的结构体两个进程所具有的权限判断触发目标内核函数指令是否具有目标权限。
作为本申请的又一个实施例,第二父进程的结构体包括第二父进程身份标识号,当前进程的结构体包括当前进程身份标识号;
基于第二父进程的结构体以及当前进程的结构体判断触发目标内核函数指令是否具有目标权限,包括:
判断第二父进程身份标识号以及当前进程身份标识号中任意一个是否满足预设条件;
在第二父进程身份标识号以及当前进程身份标识号中任意一个满足预设条件的情况下,确定判断结果为具有目标权限;或
在第二父进程身份标识号以及当前进程身份标识号都不满足预设条件的情况下,确定判断结果为不具有目标权限。
具体地,电子设备在确定当前进程不具有组长进程以及具有由第二接口生成的第二父进程的情况下,可按照预设判断进程顺序对第二父进程的结构体以及当前进程的结构体判断。可能的,可优先判断第二父进程身份标识号是否满足预设条件,若满足预设条件则结束判断并确定判断结果为具有权限,若不满足预设条件则再判断当前进程身份标识号是否满足预设条件,若满足预设条件则确定结果为具有权限,若不满足预设条件则确定判断结果为不具有权限。
可能的,可优先判断当前进程身份标识号是否满足预设条件,若满足预设条件则结束判断并确定判断结果为具有权限,若不满足预设条件则再判断第二父进程身份标识号是否满足预设条件,若满足预设条件则确定结果为具有权限,若不满足预设条件则确定判断结果为不具有权限。
在本申请实施例中,电子设备可根据预设的判断进程顺序对触发目标内核函数指令是否具有目标权限的判断结果进行有序判断,可在保障对目标内核函数多方面的防御能力的同时提升检测效率,给用户带来更好体验。
步骤808、在未检测到第二父进程的结构体的情况下,基于当前进程的结构体判断触发目标内核函数指令是否具有目标权限。
可能的,若当前进程的结构体中的当前进程识别号对应的数值与组长进程识别号对应的数值相等,且未检测到基于fork接口得到的进程中对应的第二父进程的结构体,则表明该当前进程不具有任何父进程且可作为组长进程,可基于当前进程的结构体所具有的权限直接判断触发目标内核函数指令是否具有目标权限。
作为本申请的又一个实施例,当前进程的结构体包括当前进程身份标识号;
基于当前进程的结构体判断触发目标内核函数指令是否具有目标权限,包括:
在当前进程身份标识号满足预设条件的情况下,确定判断结果为具有目标权限;或
在当前进程身份标识号不满足预设条件的情况下,确定判断结果为不具有目标权限。
具体地,电子设备在确定当前进程不具有组长进程以及由第二接口生成的第二父进程的情况下,判断当前进程身份标识号是否满足预设条件,若满足预设条件则确定判断结果为具有权限,若不满足预设条件则确定判断结果为不具有权限。
在本申请实施例中,电子设备可根据预设的判断进程顺序对触发目标内核函数指令是否具有目标权限的判断结果进行有序判断,可在保障对目标内核函数多方面的防御能力的同时提升检测效率,给用户带来更好体验。
步骤809、根据触发目标内核函数指令是否具有目标权限的判断结果对当前进程进行处理。
需要说明的是,对于上述提到的步骤802、步骤804以及步骤806可选择执行其中任意一项。本实施例不做过多限制。
在本申请实施例中,结合当前进程是否具有组长进程以及是否具有父进程提出多种用于判断触发目标内核函数指令是否具有目标权限的方式,可有效根据实际创建的进程对判断结果进行判断,保证检测结果的准确性。
作为本申请的又一个实施例,判断组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号中任意一个是否满足预设条件,在组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号中任意一个满足预设条件的情况下,确定判断结果为具有目标权限具体为:
按照预设顺序依次判断组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号是否满足预设条件,在当前判断的身份标识号满足预设条件的情况下,结束对下一个身份标识号的判断,确定判断结果为具体目标权限。
具体地,电子设备在确定当前进程包括组长进程以及第一父进程的情况下,可按照预设的判断进程顺序对组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号是否满足预设条件进行判断。
可能的,预设的判断进程顺序为先判断组长进程的身份标识号是否满足预设条件,若满足预设条件则结束判断并确定判断结果为具有权限,若不满足预设条件则再判断第一父进程的身份标识号是否满足预设条件,若满足预设条件则结束判断并确定判断结果为具有权限,若不满足预设条件则再判断当前进程的身份标识号是否满足预设条件,若满足预设条件则确定判断结果为具有权限,若不满足预设条件则确定判断结果为不具有权限。
具体的,以上述判断进程顺序为例,可参阅图9示出的本申请实施例提供的一种内核函数加固方法的整体流程框图,该内核函数加固方法可应用于当前进程具有组长进程以及第一父进程的情况。
如图9所示,该内核函数加固方法的整体流程包括:
步骤901、在检测到触发目标内核函数指令的情况下,获取组长进程的结构体以及基于第一接口生成的第一父进程的结构体。
步骤902、判断组长进程身份标识号是否满足预设条件,若是则进入步骤906,若否则进入步骤903。
步骤903、判断第一父进程身份标识号是否满足预设条件,若是则进入步骤906,如否则进入步骤904。
步骤904、判断当前进程身份标识号是否满足预设条件,若是则进入步骤906,若否则进入步骤905。
步骤905、判断结果为不具有目标权限。
步骤906、判断结果为具有目标权限。
步骤907、若判断结果为具有目标权限则进行拦截处理;或若判断结果为不具有目标权限则执行触发目标内核函数指令。
具体地,在确定当前进程具有组长进程以及第一父进程的情况下,电子设备可先判断组长进程的身份标识号是否满足预设条件,若满足预设条件则结束判断并确定判断结果为具有权限,若不满足预设条件则再判断第一父进程的身份标识号是否满足预设条件,若满足预设条件则结束判断并确定判断结果为具有权限,若不满足预设条件则再判断当前进程的身份标识号是否满足预设条件,若满足预设条件则确定判断结果为具有权限,若不满足预设条件则确定判断结果为不具有权限。进一步的,在判断结果为具有目标权限时电子设备可及时反应或进行进程拦截,在判断结果为不具有目标权限时电子设备可执行触发目标内核函数指令。
可能的,预设的判断进程顺序为先判断组长进程的身份标识号是否满足预设条件,若满足预设条件则结束判断并确定判断结果为具有权限,若不满足预设条件则再判断当前进程的身份标识号是否满足预设条件,若满足预设条件则结束判断并确定判断结果为具有权限,若不满足预设条件则再判断第一父进程的身份标识号是否满足预设条件,若满足预设条件则确定结果为具有权限,若不满足预设条件则确定判断结果为不具有权限。
这里需要注意的是,当判断进程顺序由当前进程到第一父进程时,表明当前进程和组长进程都不具有目标权限,但由于当前进程是由第一父进程直接孵化得到,第一父进程的权限大于或等于当前进程的权限,在当前进程的权限不满足预设条件的情况下无法确定第一父进程是否满足预设条件,且若第一父进程具有目标权限时也会执行触发目标内核函数指令。
可能的,预设的判断进程顺序为先判断当前进程的身份标识号是否满足预设条件,若满足预设条件则结束判断并确定判断结果为具有权限,若不满足预设条件则再判断第一父进程的身份标识号是否满足预设条件,若满足则结束判断并确定判断结果为具有权限,若不满足预设条件则再判断组长进程的身份标识号是否满足预设条件,若满足预设条件则确定结果为具有权限,若不满足预设条件则确定判断结果为不具有权限。
本申请实施例可不局限于上述提到的判断进程顺序,具体的判断方式可参阅上述,此处不过多赘述。
还可以理解的是,若当前进程具有组长进程且包括该组长进程的进程组至少具有四个进程时,换言之进程组包括当前进程、组长进程、第一父进程以及其他进程,也可参阅上述图9示出的内核函数加固方法。具体的,以进程组包括四个进程为例,分别可为组长进程、其他进程、第一父进程以及当前进程,其中其他进程可由组长进程直接孵化得到,第一父进程可由其他进程直接孵化得到。电子设备在获取组长进程的结构体以及第一父进程的结构体之后,也可先判断组长进程的身份标识号是否满足预设条件,若满足预设条件则结束判断并确定判断结果为具有权限,若不满足预设条件则再判断第一父进程的身份标识号是否满足预设条件,若满足预设条件则结束判断并确定判断结果为具有权限,若不满足预设条件则再判断当前进程的身份标识号是否满足预设条件,若满足预设条件则确定判断结果为具有权限,若不满足预设条件则确定判断结果为不具有权限。进一步的,在判断结果为具有目标权限时电子设备可及时反应或进行进程拦截,在判断结果为不具有目标权限时电子设备可执行触发目标内核函数指令。
在本申请实施例中,电子设备可根据预设的判断进程顺序对触发目标内核函数指令是否具有目标权限的判断结果进行有序判断,可在保障对目标内核函数多方面的防御能力的同时提升检测效率,给用户带来更好体验。
需要说明的是,当电子设备检测到的触发目标内核函数指令直接由电子设备安装的应用程序发送时,也即当前内核函数的加固系统架构直接由电子设备组成,由于应用程序发送的指令所对应的身份标识号属于特定预设范围,基于此可将上述提到的预设条件更改为此处的预设范围。其中,特定预设范围可为UID的数值大于10000,也即可将预设条件更改为UID大于或等于10000。
可能的,当电子设备基于当前进程的当前进程识别号以及组长进程识别号判断该当前进程不具有组长进程时,可基于当前进程的身份标识号所对应的数值判断是否大于或等于10000,若当前进程的身份标识号满足大于或等于10000时可确定判断结果为具有目标权限,若当前进程的身份标识号不满足大于或等于10000时,则可确定判断结果为不具有目标权限。可以理解地,此处本实施例还可获取基于第二接口生成的第二父进程的结构体,并在检测到第二父进程结构体的情况下基于第二父进程的身份标识号所对应的数值判断是否大于或等于10000,若当前进程的身份标识号满足大于或等于10000时可确定判断结果为具有目标权限,若当前进程的身份标识号不满足大于或等于10000时,则可确定判断结果为不具有目标权限。
可能的,当电子设备基于当前进程的当前进程识别号以及组长进程识别号判断该当前进程具有组长进程时,可获取组长进程的身份标识号,并基于组长进程的身份标识号所对应的数值判断是否大于或等于10000,若组长进程的身份标识号满足大于或等于10000时可确定判断结果为具有目标权限,若组长进程的身份标识号不满足大于或等于10000时,则可确定判断结果为不具有目标权限。可以理解的是,此处实施例可不限定判断的进程的顺序,也即若组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号中任意一个满足大于或等于10000时可确定具有目标权限,若组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号中任意一个均不满足大于或等于10000时可确定不具有目标权限。
本实施例还可不局限于单独将预设条件设置为等于2000或者是大于等于10000,例如可将预设条件设置为大于等于2000且小于等于10000。可能的,在电子设备基于当前进程的当前进程识别号以及组长进程识别号判断该当前进程不具有组长进程时,可基于当前进程的身份标识号所对应的数值判断是否大于等于2000且小于等于10000,若当前进程的身份标识号满足大于等于2000且小于等于10000时可确定判断结果为具有目标权限,若当前进程的身份标识号不满足大于等于2000且小于等于10000时,则可确定判断结果为不具有目标权限。
可能的,当电子设备基于当前进程的当前进程识别号以及组长进程识别号判断该当前进程具有组长进程时,可获取组长进程的身份标识号,并基于组长进程的身份标识号所对应的数值判断是否大于等于2000且小于等于10000,若组长进程的身份标识号满足大于等于2000且小于等于10000时可确定判断结果为具有目标权限,若组长进程的身份标识号不满足大于等于2000且小于等于10000时,则可确定判断结果为不具有目标权限。
作为本申请的又一个实施例,可参阅图10示出的本申请实施例提供的又一种内核函数加固方法的流程示意图。
如图10所示,该内核函数加固方法具体包括以下步骤:
步骤1001、在检测到触发目标内核函数指令的情况下,基于当前进程判断触发目标内核函数指令是否具有目标权限。
步骤1002、在判断结果为具有目标权限的情况下,对当前进程进行记录上报处理。
具体地,电子设备在确定判断结果为具有目标权限的情况下,表明当前触发目标内核函数指令可能存在危险,可对基于该触发目标内核函数指令创建的当前进程进行记录,并对该记录进行存储以及上报至电子设备对应的后台服务器,由后台工作人员对该触发目标内核函数指令的发起端进行追踪处理。其中,记录表示的内容可包括当前进程、父进程或组长进程中任意一个进程的身份标识号对应的数值等于2000,以SHELL权限触发调用目标内核函数指令。例如,以目标内核函数为内核态调用用户态函数为例,记录可表示为当前进程的身份标识号对应的数值等于2000,以SHELL权限执行调用内核态调用用户态函数。可以理解地,本实施例可不局限于仅记录一个身份标识号对应的数值等于2000的进程,例如记录还可表示为当前进程的身份标识号对应的数值等于2000,且父进程的身份标识号对应的数值等于2000,当前进程以及父进程均以SHELL权限执行调用内核态调用用户态函数。
步骤1003、在判断结果为具有目标权限的情况下,对当前进程进行拦截处理。
具体地,电子设备在确定判断结果为具有目标权限的情况下,表明当前触发目标内核函数指令可能存在危险,可对基于该触发目标内核函数指令创建的当前进程进行停止处理或者返回错误函数的操作,以使当前进程无法正常执行,进而可有效阻止目标内核函数的调用。
步骤1004、在判断结果为具有目标权限的情况下,对当前进程进行记录上报以及拦截处理。
具体地,电子设备在确定判断结果为具有目标权限的情况下,表明当前触发目标内核函数指令可能存在危险,可对基于该触发目标内核函数指令创建的当前进程进行记录,并对该记录进行存储以及上报至电子设备对应的后台服务器,同时可对基于该触发目标内核函数指令创建的当前进程进行停止处理或者返回错误函数的操作。可以理解的是,此处记录的内容不局限于包括当前进程、父进程或组长进程中至少一个进程的身份标识号对应的数值等于2000,以SHELL权限触发调用目标内核函数指令,还可包括表示内容为对当前进程进行拦截处理。
此处,对于上述提到的步骤1002、步骤1003以及步骤1004可选择执行其中任意一项。本实施例不做过多限制。
需要说明的是,上述提到的记录内容在电子设备中以字符串的形式存在,此处不过多赘述。
步骤1005、在判断结果为不具有目标权限的情况下,基于当前进程触发目标内核函数。
具体地,电子设备在确定判断结果为不具有目标权限的情况下,表明当前触发目标内核函数指令不存在危险,可继续基于当前进程执行触发目标内核函数指令,以对目标内核函数进行正常调用。
在本申请实施例中,可在判断结果为具有目标权限的情况下,及时根据需求对触发目标内核函数指令进行指定处理,有效快速的保障目标内核函数的安全性,进而达到对目标内核函数的加固保护作用。
作为本申请的又一个实施例,根据基于当前进程判断是否具有目标权限的判断结果对当前进程进行处理之后,方法还包括:
展示对应于具有目标权限的提示信息。
具体地,电子设备在确定判断结果为具有目标权限的情况下,表明当前触发目标内核函数指令可能存在危险,可及时将目标内核函数被调用的提示信息反馈给电子设备的使用者,便于使用者第一时间做出相应处理。其中,此处的提示信息的类型可不局限于短信息提示、界面弹出提示框提示或者语音提示等。
具体的,可参阅图11示出的本申请实施例提供的一种电子设备展示提示信息的效果示意图。
如图11所示,电子设备在确定判断结果为具有目标权限的情况下,在当前显示界面1100可弹出提示对话框1101,在该提示对话框1101上显示有“存在非法指令!”的文字信息,且在文字信息下方设置有拦截控件1102以及上报控件1103。当使用者接收到该提示对话框1101时,可根据需求自行选择点击拦截控件1102或上报控件1103,以对触发目标内核函数指令进行防御处理。
请参阅图12,图12示出了本申请实施例提供的一种内核函数加固装置的结构示意图。
如图12所示,该内核函数加固装置1200至少可以包括第一处理模块1201以及第二处理模块1202,其中:
第一处理模块1201,用于在检测到触发目标内核函数指令的情况下,基于当前进程判断触发目标内核函数指令是否具有目标权限;
第二处理模块1202,用于根据触发目标内核函数指令是否具有目标权限的判断结果对当前进程进行处理。
在一些可能的实施例中,当前进程的结构体包括当前进程识别号以及组长进程识别号;
第一处理模块1201包括:
第一判断单元,用于判断当前进程识别号与组长进程识别号是否相等;
第一处理单元,用于在当前进程识别号与组长进程识别号不相等的情况下,确定当前进程具有组长进程,并获取组长进程的结构体;
第二判断单元,用于基于组长进程的结构体以及当前进程的结构体判断触发目标内核函数指令是否具有目标权限;
其中,组长进程以及当前进程处于第一进程组,第一进程组包括组长进程以及当前进程,且当前进程由组长进程得到。
在一些可能的实施例中,当前进程的结构体包括当前进程识别号以及组长进程识别号;
第一处理模块1201包括:
第一判断单元,用于判断当前进程识别号与组长进程识别号是否相等;
第二处理单元,用于在当前进程识别号与组长进程识别号不相等的情况下,确定当前进程具有组长进程,并获取组长进程的结构体以及基于第一接口生成的第一父进程的结构体;
第三判断单元,用于基于组长进程的结构体、第一父进程的结构体以及当前进程的结构体判断触发目标内核函数指令是否具有目标权限;
其中,组长进程、第一父进程以及当前进程处于第二进程组,第二进程组至少包括组长进程、第一父进程以及当前进程,且当前进程由第一父进程得到,第一父进程由组长进程得到。
在一些可能的实施例中,当前进程的结构体包括当前进程识别号以及组长进程识别号;
第一处理模块1201包括:
第一判断单元,用于判断当前进程识别号与组长进程识别号是否相等;
第三处理单元,用于在当前进程识别号与组长进程识别号相等的情况下,确定当前进程不具有组长进程;
获取单元,用于获取基于第二接口生成的第二父进程的结构体;
第四判断单元,用于在检测到第二父进程的结构体的情况下,基于第二父进程的结构体以及当前进程的结构体判断触发目标内核函数指令是否具有目标权限;其中,第二父进程与当前进程处于第三进程组,第三进程组至少包括第二父进程与当前进程,且当前进程由第二父进程得到;或
在未检测到第二父进程的结构体的情况下,基于当前进程的结构体判断触发目标内核函数指令是否具有目标权限。
在一些可能的实施例中,组长进程的结构体包括组长进程身份标识号,第一父进程的结构体包括第一父进程身份标识号,当前进程的结构体包括当前进程身份标识号;
第三判断单元具体用于:
判断组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号中任意一个是否满足预设条件;
在组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号中任意一个满足预设条件的情况下,确定判断结果为具有目标权限;或
在组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号都不满足预设条件的情况下,确定判断结果为不具有目标权限。
在一些可能的实施例中,第三判断单元具体用于:
按照预设顺序依次判断组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号是否满足预设条件,在当前判断的身份标识号满足预设条件的情况下,结束对下一个身份标识号的判断,确定判断结果为具体目标权限。
在一些可能的实施例中,第三判断单元具体用于:
判断组长进程身份标识号是否满足预设条件;
在组长进程身份标识号满足预设条件的情况下,确定判断结果为具有目标权限;
在组长进程身份标识号不满足预设条件的情况下,判断第一父进程身份标识号是否满足预设条件;
在第一父进程身份标识号满足预设条件的情况下,确定判断结果为具有目标权限;
在第一父进程身份标识号不满足预设条件的情况下,判断当前进程身份标识号是否满足预设条件;
在当前进程身份标识号满足预设条件的情况下,确定判断结果为具有目标权限。
在一些可能的实施例中,第二父进程的结构体包括第二父进程身份标识号,当前进程的结构体包括当前进程身份标识号;
第四判断单元具体用于:
判断第二父进程身份标识号以及当前进程身份标识号中任意一个是否满足预设条件;
在第二父进程身份标识号以及当前进程身份标识号中任意一个满足预设条件的情况下,确定判断结果为具有目标权限;或
在第二父进程身份标识号以及当前进程身份标识号都不满足预设条件的情况下,确定判断结果为不具有目标权限。
在一些可能的实施例中,当前进程的结构体包括当前进程身份标识号;
第四判断单元具体用于:
在当前进程身份标识号满足预设条件的情况下,确定判断结果为具有目标权限;或
在当前进程身份标识号不满足预设条件的情况下,确定判断结果为不具有目标权限。
在一些可能的实施例中,第二处理模块用于:
在判断结果为具有目标权限的情况下,对当前进程进行记录上报处理;或
在判断结果为具有目标权限的情况下,对当前进程进行拦截处理;或
在判断结果为具有目标权限的情况下,对当前进程进行记录上报以及拦截处理;或
在判断结果为不具有目标权限的情况下,基于当前进程触发目标内核函数。
在一些可能的实施例中,装置还包括:
展示模块,用于展示对应于具有目标权限的提示信息。
请参阅图13,图13示出了本申请实施例提供的一种电子设备的结构示意图。
如图13所示,该电子设备1300可以包括:至少一个处理器1301、至少一个网络接口1304、用户接口1303、存储器1305、显示屏1306以及至少一个通信总线1302。
其中,通信总线1302可用于实现上述各个组件的连接通信。
其中,用户接口1303可以包括按键,可选用户接口还可以包括标准的有线接口、无线接口。
其中,网络接口1304可以但不局限于包括蓝牙模块、NFC模块或Wi-Fi模块等。
其中,处理器1301可以包括一个或者多个处理核心。处理器1301利用各种接口和线路连接整个电子设备1300内的各个部分,通过运行或执行存储在存储器1305内的指令、程序、代码集或指令集,以及调用存储在存储器1305内的数据,执行路由设备1300的各种功能和处理数据。可选的,处理器1301可以采用DSP、FPGA、PLA中的至少一种硬件形式来实现。处理器1301可集成CPU、GPU和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1301中,单独通过一块芯片进行实现。
其中,存储器1305可以包括RAM,也可以包括ROM。可选的,该存储器1305包括非瞬时性计算机可读介质。存储器1305可用于存储指令、程序、代码、代码集或指令集。存储器1305可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器1305可选的还可以是至少一个位于远离前述处理器1301的存储装置。如图13所示,作为一种计算机存储介质的存储器1305中可以包括操作系统、网络通信模块、用户接口模块以及内核函数加固应用程序。
具体地,处理器1301可以用于调用存储器1305中存储的内核函数加固应用程序,并具体执行以下操作:
在检测到触发目标内核函数指令的情况下,基于当前进程判断触发目标内核函数指令是否具有目标权限;
根据触发目标内核函数指令是否具有目标权限的判断结果对当前进程进行处理。
在一些可能的实施例中,当前进程的结构体包括当前进程识别号以及组长进程识别号;
处理器1301基于当前进程判断触发目标内核函数指令是否具有目标权限时,具体执行:
判断当前进程识别号与组长进程识别号是否相等;
在当前进程识别号与组长进程识别号不相等的情况下,确定当前进程具有组长进程,并获取组长进程的结构体;
基于组长进程的结构体以及当前进程的结构体判断触发目标内核函数指令是否具有目标权限;
其中,组长进程以及当前进程处于第一进程组,第一进程组包括组长进程以及当前进程,且当前进程由组长进程得到。
在一些可能的实施例中,当前进程的结构体包括当前进程识别号以及组长进程识别号;
处理器1301基于当前进程判断触发目标内核函数指令是否具有目标权限时,具体执行:
判断当前进程识别号与组长进程识别号是否相等;
在当前进程识别号与组长进程识别号不相等的情况下,确定当前进程具有组长进程,并获取组长进程的结构体以及基于第一接口生成的第一父进程的结构体;
基于组长进程的结构体、第一父进程的结构体以及当前进程的结构体判断触发目标内核函数指令是否具有目标权限;
其中,组长进程、第一父进程以及当前进程处于第二进程组,第二进程组至少包括组长进程、第一父进程以及当前进程,且当前进程由第一父进程得到,第一父进程由组长进程得到。
在一些可能的实施例中,当前进程的结构体包括当前进程识别号以及组长进程识别号;
处理器1301基于当前进程判断触发目标内核函数指令是否具有目标权限时,具体执行:
判断当前进程识别号与组长进程识别号是否相等;
在当前进程识别号与组长进程识别号相等的情况下,确定当前进程不具有组长进程;
获取基于第二接口生成的第二父进程的结构体;
在检测到第二父进程的结构体的情况下,基于第二父进程的结构体以及当前进程的结构体判断触发目标内核函数指令是否具有目标权限;其中,第二父进程与当前进程处于第三进程组,第三进程组至少包括第二父进程与当前进程,且当前进程由第二父进程得到;或
在未检测到第二父进程的结构体的情况下,基于当前进程的结构体判断触发目标内核函数指令是否具有目标权限。
在一些可能的实施例中,组长进程的结构体包括组长进程身份标识号,第一父进程的结构体包括第一父进程身份标识号,当前进程的结构体包括当前进程身份标识号;
处理器1301基于组长进程的结构体、第一父进程的结构体以及当前进程的结构体判断触发目标内核函数指令是否具有目标权限时,具体执行:
判断组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号中任意一个是否满足预设条件;
在组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号中任意一个满足预设条件的情况下,确定判断结果为具有目标权限;或
在组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号都不满足预设条件的情况下,确定判断结果为不具有目标权限。
在一些可能的实施例中,处理器1301判断组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号中任意一个是否满足预设条件,在组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号中任意一个满足预设条件的情况下,确定判断结果为具有目标权限时具体执行:
按照预设顺序依次判断组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号是否满足预设条件,在当前判断的身份标识号满足预设条件的情况下,结束对下一个身份标识号的判断,确定判断结果为具体目标权限。
在一些可能的实施例中,处理器1301按照预设顺序依次判断组长进程身份标识号、第一父进程身份标识号以及当前进程身份标识号中任意一个是否满足预设条件,在当前判断的身份标识号满足预设条件的情况下,结束对下一个身份标识号的判断,确定判断结果为具体目标权限时,具体执行:
判断组长进程身份标识号是否满足预设条件;
在组长进程身份标识号满足预设条件的情况下,确定判断结果为具有目标权限;
在组长进程身份标识号不满足预设条件的情况下,判断第一父进程身份标识号是否满足预设条件;
在第一父进程身份标识号满足预设条件的情况下,确定判断结果为具有目标权限;
在第一父进程身份标识号不满足预设条件的情况下,判断当前进程身份标识号是否满足预设条件;
在当前进程身份标识号满足预设条件的情况下,确定判断结果为具有目标权限。
在一些可能的实施例中,第二父进程的结构体包括第二父进程身份标识号,当前进程的结构体包括当前进程身份标识号;
处理器1301基于第二父进程的结构体以及当前进程的结构体判断触发目标内核函数指令是否具有目标权限时,具体执行:
判断第二父进程身份标识号以及当前进程身份标识号中任意一个是否满足预设条件;
在第二父进程身份标识号以及当前进程身份标识号中任意一个满足预设条件的情况下,确定判断结果为具有目标权限;或
在第二父进程身份标识号以及当前进程身份标识号都不满足预设条件的情况下,确定判断结果为不具有目标权限。
在一些可能的实施例中,当前进程的结构体包括当前进程身份标识号;
处理器1301基于当前进程的结构体判断触发目标内核函数指令是否具有目标权限时,具体执行:
在当前进程身份标识号满足预设条件的情况下,确定判断结果为具有目标权限;或
在当前进程身份标识号不满足预设条件的情况下,确定判断结果为不具有目标权限。
在一些可能的实施例中,处理器1301根据基于当前进程判断是否具有目标权限的判断结果对当前进程进行处理时,具体执行:
在判断结果为具有目标权限的情况下,对当前进程进行记录上报处理;或
在判断结果为具有目标权限的情况下,对当前进程进行拦截处理;或
在判断结果为具有目标权限的情况下,对当前进程进行记录上报以及拦截处理;或
在判断结果为不具有目标权限的情况下,基于当前进程触发目标内核函数。
在一些可能的实施例中,根据基于当前进程判断是否具有目标权限的判断结果对当前进程进行处理之后,处理器1301还用于执行:
展示对应于具有目标权限的提示信息。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机或处理器上运行时,使得计算机或处理器执行上述图3或图5或图6或图7或图8或图10所示实施例中的一个或多个步骤。上述电子设备的各组成模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在所述计算机可读取存储介质中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital SubscriberLine,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字多功能光盘(Digital VersatileDisc,DVD))、或者半导体介质(例如,固态硬盘(Solid State Disk,SSD))等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可存储程序代码的介质。在不冲突的情况下,本实施例和实施方案中的技术特征可以任意组合。
以上所述的实施例仅仅是本申请的优选实施例方式进行描述,并非对本申请的范围进行限定,在不脱离本申请的设计精神的前提下,本领域普通技术人员对本申请的技术方案作出的各种变形及改进,均应落入本申请的权利要求书确定的保护范围内。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:安全的多固件融合系统及多固件融合控制方法