应用程序进程的能力探测方法及装置与流程

文档序号:13574997阅读:195来源:国知局
本申请涉及运行linux系统的终端中的应用程序调试,尤其涉及应用程序进程的能力探测方法及装置。
背景技术
::随着移动设备的飞速发展,智能手机、平板电脑等移动设备在企业中的使用也是越来越广泛。在移动操作系统领域,利用linux能力(capabilities)机制可以解决很多系统的安全性难题。在linux系统中,对于应用程序,如果需要特殊能力,需要添加上能力才能正常运行。此外,为了系统安全,应用程序的能力需要被审查。只有明确了具体能力,才能结合应用程序的功能进行有针对性的审查。然而,在使用linuxcapabilities机制时,探测进程的能力是一个不太好操作但是非常关键的环节。为了探测应用进程的能力,现有技术通常在内核(kernel)中添加调试信息,重新编译内核,然后手动执行应用程序,查看调试信息。如果调试信息并不满足要求,重新修改内核中的调试信息,然后再次编译内核,之后手动再次执行应用程序。现有技术的缺点在于,编译内核比较费时,不方便,工作量大;修改调试信息后,需要重新编译内核,如果代码有问题,编译出来的kernel启动时会导致内核崩溃;探测的能力的过程需要手动多次启动,繁琐且增加劳动力成本。技术实现要素:为了克服现有技术中存在的不足,本发明要解决的技术问题是提供一种应用程序进程的能力探测方法及装置,其无需重新编译内核即可自动探测进程的能力。为解决上述技术问题,本发明的一种应用程序进程的能力探测方法,包括:启动被探测应用程序并执行应用程序流程;响应于被探测应用程序需要一能力,触发在内核空间探测相应能力的能力值;在内核空间搜集探测到的能力值并传到用户空间;响应于在用户空间接收到所述能力值,确定被探测应用程序的运行状态;响应于确定被探测应用程序已经退出运行,将所接收的能力值添加到被探测应用程序;响应于所接收的能力值添加到被探测应用程序,重新启动被探测应用程序并执行应用程序流程。作为本发明所述方法的改进,所述方法还包括:响应于确定被探测应用程序仍在运行,保存所接收的能力值,并继续执行被探测应用程序流程。作为本发明所述方法的另一种改进,在内核空间探测相应能力的能力值及在内核空间搜集探测到的能力值并传到用户空间通过加载进内核空间的ko模块执行。作为本发明所述方法的又一种改进,所述响应于被探测应用程序需要一能力,触发在内核空间探测相应能力的能力值包括:基于内核空间的能力检查机制在能力检查点之前把相应的能力值打印出来从而探测到相应的能力值。作为本发明所述方法的再一种改进,所接收的能力值通过setcap工具添加到被探测应用程序。为解决上述技术问题,本发明的应用程序进程的能力探测装置,包括:启动模块,用于启动被探测应用程序并执行应用程序流程;能力探测模块,用于响应于被探测应用程序需要一能力,在内核空间探测相应能力的能力值;能力搜集模块,用于在内核空间搜集来自所述能力探测模块的能力值并传给用户空间的能力接收模块;能力接收模块,用于响应于接收到所述能力值,在用户空间确定被探测应用程序的运行状态;及用于响应于确定被探测应用程序已经退出运行,将所接收的能力值添加到被探测应用程序;重启模块,用于响应于所接收的能力值添加到被探测应用程序,重新启动被探测应用程序并执行应用程序流程。作为本发明所述装置的改进,所述能力接收模块还响应于确定被探测应用程序仍在运行,保存所接收的能力值,继续执行被探测应用程序流程。作为本发明所述装置的另一种改进,所述能力探测模块和所述能力接收模块编译成ko模块并加载进内核空间。作为本发明所述装置的又一种改进,所述能力探测模块包括打印子模块,用于基于内核空间的能力检查机制,在能力检查点之前把相应的能力值打印出来从而探测到相应的能力值。作为本发明所述装置的再一种改进,所述能力接收模块使用setcap工具将所接收的能力值添加到被探测应用程序。为解决上述技术问题,本发明的有形计算机可读介质,包括用于执行本发明的应用程序进程的能力探测方法的计算机程序代码。为解决上述技术问题,本发明提供一种装置,包括至少一个处理器;及至少一个存储器,含有计算机程序代码,所述至少一个存储器和所述计算机程序代码被配置为利用所述至少一个处理器使得所述装置执行本发明的应用程序进程的能力探测方法的至少部分步骤。按照本发明,首先在内核中加载能力探测模块和能力搜集模块。通过进程监控程序,启动被测应用,并监控被测应用进程的运行状态。当应用进程需要能力时,通过系统调用机制会触发内核的能力探测模块,能力探测模块把探测到的能力传递给能力搜集模块。然后能力搜集模块会把相关能力信息发送给用户空间的进程监控程序的能力接收模块。通过进程监控程序把接收到的能力添加给被测应用进程,重新自动启动应用,如此循环。被测应用只需手动启动一次,后续即可自动触发能力探测流程,自动完成应用进程需要的所有能力的探测。本发明不需要更改系统内核,不需要频繁调试内核,大大提高了探测效率。结合附图阅读本发明实施方式的详细描述后,本发明的其它特点和优点将变得更加清楚。附图说明图1为根据本发明方法的一实施例的流程图。图2为根据本发明装置的一实施例的结构示意图。为清晰起见,这些附图均为示意性及简化的图,它们只给出了对于理解本发明所必要的细节,而省略其他细节。具体实施方式下面参照附图对本发明的实施方式和实施例进行详细说明。通过下面给出的详细描述,本发明的适用范围将显而易见。然而,应当理解,在详细描述和具体例子表明本发明优选实施例的同时,它们仅为说明目的给出。在linux系统中,关于进程能力,每个进程有三个和能力有关的位图:inheritable(i)、permitted(p)和effective(e),分别对应进程描述符task_struct结构体里面的cap_effective、cap_inheritable、cap_permitted,因此可以查看/proc/pid/status来查看进程的能力。其中,cap_effective表示当一个进程要进行某个特权操作时,操作系统会检查cap_effective的对应位是否有效。例如,如果一个进程要设置系统的时钟,linux的内核就会检查cap_effective的cap_sys_time位(第25位)是否有效。cap_permitted表示进程能够使用的能力,在cap_permitted中可以包含cap_effective中没有的能力,这些能力是被进程自己临时放弃的,也可以说cap_effective是cap_permitted的一个子集。cap_inheritable表示能够被当前进程执行的程序继承的能力。运行linux或类似系统的移动终端如手机包含用户空间和内核空间。图1示出了根据本发明的应用程序进程的能力探测方法的一实施例的流程图。在步骤s102,在用户空间启动进程监控程序,进程监控程序负责加载被探测应用程序,并且监控该应用程序的运行状态,与内核建立连接。在步骤s104,启动被探测应用程序并执行应用程序流程。在步骤s106,确定被探测应用程序是否需要能力。如果确定需要能力,则应用程序会退出执行,处理进行到步骤s108;否则,处理进行到步骤s150。在步骤s108,系统调用触发内核空间的能力检查机制,从而触发在内核空间探测相应能力的能力值,即能力探测嵌入在能力检查的流程中。在实施例中,基于能力检查机制,在能力检查点之前把相应的能力值打印出来(即,在能力检查点之前把相应的能力值输出出来),即通过log系统把信息输出到指定文件(通过日志可以查看),从而探测到相应的能力值。在步骤s110,在内核空间搜集探测到的能力值并通过netlink方式或其他的ipc方式传到用户空间。在实施例中,步骤s108和s110通过加载进内核空间的ko模块的形式执行。在步骤s112,在用户空间接收到从内核空间传来的能力值时,确定被探测应用程序当前的运行状态。如果被探测应用程序已退出运行,则处理进行到步骤s114;否则,如果被探测应用程序仍在运行,则处理进行到步骤s140。在步骤s114,如果被探测应用程序已退出运行,意味着在被测应用程序需要能力时,被测应用程序因为系统调用异常而退出,此时,将所接收的能力值使用例如setcap或类似工具添加到被探测应用程序。之后,处理进行到步骤s104。在步骤s140,如果被探测应用程序仍在运行,说明之前已经添加过相应能力值,则将所接收的能力值保存,然后处理进行到步骤s106,进行下一能力的探测,直到后续没有探测到新的能力,探测过程结束。在步骤s150,本发明的应用程序进程的能力探测处理结束,应用程序正常执行。该实施例的方法不需要更改系统内核,不需要频繁调试内核,通过加载ko模块的方式探测进程能力,然后把探测的能力值传递到被测应用,通过进程监控程序再次启动进程探测流程,提高了探测效率。图2示出了根据本发明的应用程序进程的能力探测装置的一实施例的结构示意图。该实施例的装置包括:启动模块202,用于启动被探测应用程序并执行应用程序流程;能力探测模块204,用于响应于被探测应用程序需要一能力,在内核空间探测相应能力的能力值;能力搜集模块206,用于在内核空间搜集来自所述能力探测模块的能力值并传给用户空间的能力接收模块;其中所述能力探测模块和所述能力接收模块编译成ko模块并通过insmod命令加载进内核空间;能力接收模块208,用于响应于接收到所述能力值,在用户空间确定被探测应用程序的运行状态;用于响应于确定被探测应用程序已经退出运行,将所接收的能力值添加到被探测应用程序;及用于响应于确定被探测应用程序仍在运行,保存所接收的能力值,继续执行被探测应用程序流程;重启模块210,用于响应于所接收的能力值添加到被探测应用程序,重新启动被探测应用程序并执行应用程序流程。在此所述的多个不同实施例或者其特定特征、结构或特性可在本发明的一个或多个实施方式中适当组合。另外,在某些情形下,只要适当,流程图中和/或流水处理描述的步骤顺序可修改,并不必须精确按照所描述的顺序执行。另外,本发明的多个不同方面可使用软件、硬件、固件或者其组合和/或执行所述功能的其它计算机实施的模块或装置进行实施。本发明的软件实施可包括保存在计算机可读介质中并由一个或多个处理器执行的可执行代码。计算机可读介质可包括计算机硬盘驱动器、rom、ram、闪存、便携计算机存储介质如cd-rom、dvd-rom、闪盘驱动器和/或例如具有通用串行总线(usb)接口的其它装置,和/或任何其它适当的有形或非短暂计算机可读介质或可执行代码可保存于其上并由处理器执行的计算机存储器。本发明可结合任何适当的操作系统使用。除非明确指出,在此所用的单数形式“一”、“该”均包括复数含义(即具有“至少一”的意思)。应当进一步理解,说明书中使用的术语“具有”、“包括”和/或“包含”表明存在所述的特征、步骤、操作、元件和/或部件,但不排除存在或增加一个或多个其他特征、步骤、操作、元件、部件和/或其组合。如在此所用的术语“和/或”包括一个或多个列举的相关项目的任何及所有组合。前面说明了本发明的一些优选实施例,但是应当强调的是,本发明不局限于这些实施例,而是可以本发明主题范围内的其它方式实现。本领域技术人员可以在本发明技术构思的启发和不脱离本
发明内容的基础上对本发明作出各种变形和修改,这些变形或修改仍落入本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1