应用进程监控的方法和装置与流程

文档序号:12887523阅读:213来源:国知局
应用进程监控的方法和装置与流程

本发明涉及通信技术领域,特别是涉及一种应用进程监控的方法和装置。



背景技术:

代码注入是外挂、病毒等恶意软件常用的技术,恶意软件是将包含恶意形为的可执行文件动态注入到第三方应用进程中运行,达到篡改、窃取数据和破坏第三方应用进程的效果。常见的第三方应用进程比如银行、网购、支付以及游戏等往往容易成为这类恶意软件的目标应用进程。

通常,对应用进程进行代码注入的过程包括两步,第一步是恶意软件附加到目标应用进程,使其处于可调试的状态,第二步是向目标应用进程发送调试命令,使其加载包含恶意行为的可执行代码。相应的,防止恶意软件加载的方式包括两种:第一种,不断检测所述应用进程是否处于被附加状态,依次判断是否正在被恶意软件调试,一旦发现就立即退出;第二种,创建一个附加到所述应用进程的守护进程,利用一个应用进程只能被一个进程附加的特点,防止恶意软件附加。然而,以上防止恶意软件注入的方式仍具有以下问题:

1、通过不断检测判断应用进程是否正在被恶意软件调试,一旦发现被调试就立即退出,用户并不能及时得知应用进程退出的真实原因,导致一些通过加载程序进行功能升级的应用进程不能正常使用,给用户造成使用的困扰;

2、创建一个附加到所述应用进程的守护进程需要一个额外的守护进程,对应用性能造成一定程度上的影响,且如果守护进程被杀死,将无法阻止被恶意软件附加。

相关技术中,对于上述问题,尚无有效解决方案。



技术实现要素:

基于此,有必要提供一种风险防范更准确、且应用性能更高应用进程监控的方法和装置。

一种应用进程监控的方法,包括:

获取应用进程启动指令;

根据所述应用进程启动指令调用动态链接库打开函数;

通过所述动态链接库打开函数判断所述应用进程是否包含加载程序;

当所述应用进程包含加载程序时,判断所述加载程序是否为危险加载程序;

若是,则阻断所述应用进程并返回失败。

一种应用进程监控的装置,包括:

获取模块,用于获取应用进程启动指令;

调用模块,用于根据所述应用进程启动指令调用动态链接库打开函数;

第一判断模块,用于通过所述动态链接库打开函数判断所述应用进程是否包含加载程序;

第二判断模块,用于当所述应用进程包含加载程序时,判断所述加载程序是否为危险加载程序;

进程阻断模块,用于当所述加载程序为危险加载程序时,则阻断所述应用进程并返回失败。

上述应用进程监控的方法和装置,通过在应用进程启动时调用动态链接库打开函数对应用进程是否被附加、以及被附加的程序是否为危险加载程序进行判断,当发现应用进程包含被附加程序时不会直接立即退出,而只有当判断应用进程加载有危险加载程序时才阻断对应的应用进程并返回失败,从而应用进程退出时用户可以得知原因为该应用进程存在风险,通过识别危险加载程序的方式对于风险的防范更加准确,避免给用户的使用造成困扰,其次该应用进程的监控方法是在应用进程发生预设启动行为时判断包含危险加载程序时进行阻隔,不需要不断的检测应用进程自身的状态来确定是否存在被附加程序,也不需要创建守护进程,因此应用性能更高,该监控方法不依赖于是否包含守护进程,能够有效的防止恶意软件的注入行为。

附图说明

图1为一实施例中终端的内部结构示意图;

图2为一实施例中应用进程监控的方法的流程图;

图3为另一个实施例中应用进程监控的方法流程图;

图4为一个实施例所提供的应用进程启动时调用动态链接库打开函数的时序图;

图5为再一个实施例中应用进程监控的方法流程图;

图6为一个实施例中应用进程监控的装置的结构示意图;

图7为另一个实施例中应用进程监控的装置的结构示意图;

图8为再一个实施例中应用进程监控的装置的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。

本发明实施例提供的应用进程监控的方法可应用于图1所示的终端中,该终端100优选为移动终端。如图1所示,终端100包括通过系统总线连接的处理器、非易失性存储介质、内存储器、网络接口以及显示屏。处理器具有计算功能和控制终端工作的功能,如该处理器被配置为执行一种应用进程监控的方法。非易失性存储介质包括磁存储介质、光存储介质和闪存式存储介质中的至少一种,非易失性存储介质存储有操作系统和应用进程监控的装置。该应用进程监控的装置用于实现对终端所运行应用进程监控的方法。网络接口用于连接到服务器,用于与服务器进行通信,接收来自网络的资源。

如图2所示,在一个实施例中,提供一种应用进程监控的方法,该方法可 应用于图1所示的终端中,具体包括如下步骤。

步骤101,获取应用进程启动指令。

应用进程包含用户可以使用的各种程序设计语言,以及用各种程序设计语言编制的应用程序的集合。应用进程通常为满足用户不同领域、不同问题的应用需求而提供的软件程序,常用的应用进程包括银行网站、网购平台、支付平台以及游戏软件等。应用程序的启动指令可以为下载应用程序、安装应用程序或者打开应用程序的操作指令。

步骤103,根据应用进程启动指令调用动态链接库打开函数。

动态链接库打开函数是指以指定模式打开指定的动态链接库文件,并返回一个句柄给地址返回函数的调用进程的函数,该地址返回函数根据句柄与符号返回符号对应的地址。本实施例中,动态链接库打开函数为dlopen函数,地址返回函数为dlsym函数。当获取应用进程启动指令时,通过调用动态链接库打开函数对相应的应用进程的执行文件所包含软件程序进行调用。

步骤105,通过动态链接库打开函数判断应用进程是否包含加载程序。

判断应用进程是否包含加载程序,即判断应用进程是否处于附加状态,从而确定是否有附加程序试图注入到当前的应用进程。通过动态链接库打开函数可以读取应用进程的状态参数,以判断应用进程是否包含加载程序。

步骤107,当所述应用进程包含加载程序时,判断所述加载程序是否为危险加载程序。

当应用进程包含加载程序,表明有附加程序附加到当前的应用进程,从而可以进一步区分该加载程序是否包含恶意行为的软件代码,以确定加载程序是否为危险加载程序。

步骤109,若是,则阻断所述应用进程并返回失败。

当确定加载程序为危险加载程序时,可以确定相应的加载程序为恶意软件的注入,应该阻止当前应用进程,从而阻断应用进程并返回失败,以实现拦截恶意软件注入的目的。

本实施例中所提供的应用进程监控的方法,通过在应用进程启动时,调用动态链接库打开函数判断应用进程是否被附加、以及被附加的程序是否为危险 加载程序,当发现应用进程包含被附加程序时不会直接立即退出,而只有当判断应用进程加载有危险加载程序时才阻断对应的应用进程并返回失败,从而应用进程退出时用户可以得知退出原因为该应用进程存在风险,对于风险的防范更加准确,避免给用户的使用造成困扰,其次该应用进程的监控方法是在应用进程发生预设启动行为时判断包含危险加载程序时进行阻隔,不需要不断的检测应用进程自身的状态来确定是否存在被附加程序,也不需要创建守护进程,因此保障了应用性能,该监控方法不依赖于是否包含守护进程,能够有效的防止恶意软件的注入行为。

在另一个实施例中,请参阅图3,步骤103,根据应用进程启动指令调用动态链接库打开函数的步骤之前,还包括:

步骤1021,获取root权限;

步骤1022,在root权限下,利用hook技术应用进程的系统动态链接库打开函数,并注入动态链接库打开函数以替换系统动态链接库打开函数。

其中,root权限是指操作系统中系统内核的超级用户所拥有的权限,是系统中的最高权限。hook技术是指计算机程序中劫持对某个函数调用的技术。hook技术通常包括gothook和inlinehook,gothook指在函数运行时修改elf(electroniclocationfinder,电子定位器)可重新定位文件中的got表的函数hook方式;inlinehook指在运行时修改被调用的函数起始位置指令的函数hook方式。本实施例中,所述终端为安装android操作系统的移动终端,root权限则是指android操作系统中linux内核的超级用户所拥有的权限,在应用进程启动时,在root权限下利用函数hook技术应用进程的系统动态链接库打开函数,即劫持系统所提供的原有的动态链接库打开函数,并注入创建的新的动态链接库打开函数以替换系统动态链接库打开函数。

作为一具体的实施例,可以使用inlinehook技术hook应用进程原有的系统动态链接库打开函数,将创建的新的动态链接库打开函数被调用的函数起始位置修改为原有的系统动态链接库打开函数的函数起始位置进行注入,使得应用进程启动时调用动态链接库打开函数打开代码库时,都会先进入注入的动态 链接库打开函数。优选的,本实施例所提供的应用进程监控的方法可通过kingroot软件实现,通过kingroot软件获取风险行为监控或反劫持安全防护的操作指令而开启相应的监控与防护功能,以实现在root权限下,利用hook技术应用进程的系统动态链接库打开函数,并注入动态链接库打开函数以替换系统动态链接库打开函数。

通过注入新的动态链接库打开函数替换应用进程启动时的系统动态链接库打开函数,该新的动态链接库打开函数包含拦截程序用于识别应用进程是否包含加载程序以及加载程序是否为危险加载程序,使得应用进程启动时可以通过先调用注入的动态链接库打开函数对应用进程进行识别,实现阻止恶意程序附加的风险,操作安全且防护效率高。

优选的,该应用进程监控的方法还包括:

步骤108,当所述应用进程不包含加载程序时或者当所述应用进程包含加载程序且所述加载程序不是危险加载程序时,则调用系统动态链接库打开函数以允许启动应用进程。

通过注入创建的新的动态链接库打开函数以替换系统动态链接库打开函数,通过读取当前应用进程的状态,判断应用进程是否处于被附加状态,即应用进程是否包含加载程序,当判断应用进程不包含加载程序时,表明应用进程不可能包含恶意程序的注入风险,因此,可以调用应用进程原有的系统动态链接库打开函数打开代码库以启动应用进程。通过注入的新的动态链接库打开函数用于实现应用进程是否包含加载程序的判断,当排除应用进程被恶意程序附加的风险时,调用应用进程原有的系统动态链接库打开函数执行后续操作,从而实现成本较低、且有效地保障了本实施例所提供的应用进程监控的方法的通用性。请结合参阅图4,为本实施例所提供的应用进程监控的方法中应用进程启动时调用动态链接库打开函数的时序图。

进一步的,当应用进程包含加载程序时且判断加载程序是否为危险加载程序的判断结果为否时,也表明当前的应用进程不包含恶意程序的注入风险,因 此当排除应用进程被恶意程序附加的风险时,通过调用应用进程原有的系统动态链接库打开函数以执行后续操作,从而新注入的动态链接库打开函数主要配置为完成风险的识别和阻隔,有效地保障了本实施例所提供的应用进程监控的方法的通用性。可选的,也可以通过调用新的动态链接库打开函数以允许启动应用进程。

如图5所示,在再一个实施例中,步骤107,当应用进程包含加载程序时,判断加载程序是否为危险加载程序的步骤包括:

步骤1071,当应用进程包含加载程序时,通过动态链接库打开函数的路径获取加载程序的可执行文件路径;

步骤1072,当加载程序的可执行文件路径为外部路径时判断加载程序为危险加载程序。

通过链接库打开函数的路径可以获取相应的应用进程的加载程序的可执行文件路径,判断可执行文件路径是否属于系统库或者预设的程序库,当可执行文件路径属于系统库或者预设的程序库时,则确定相应的应用进程的加载程序的可执行文件路径为内部路径,否则,则确定相应的应用进程的加载程序的可执行文件路径为外部路径。当加载程序的可执行文件路径为外部路径时,确定该加载程序为危险加载程序,可以确定相应的加载程序包含恶意行为的注入风险,提高风险识别的准确性;反之,当加载程序的可执行文件路径为内部路径时,确定该加载程序为安全加载程序,可以确定相应的加载程序并非为恶意程序的附加,不包含恶意行为的注入风险。对于一些通过附加加载程序进行功能升级的应用进程而言,可以将相应的加载程序的可执行文件路径存入系统库或者预设的程序库作为内部路径,便可确保应用进程的正常启动。通过对可执行文件的路径进行识别,可准确且高效的识别出包含有恶意软件的加载程序。

优选的,步骤109,若是,则阻断所述应用进程并返回失败的步骤之后,还包括:

步骤1091,发送阻隔应用进程的提示信息,并获取是否允许应用进程的操 作确认信息;

步骤1093,当操作确认信息为是时,存储相应应用进程的加载程序的可执行文件路径为内部路径,并返回步骤101,获取应用进程启动指令的步骤。

对附加到应用进程的加载程序进行判断,并在判断该加载程序包含恶意程序的注入风险时阻断应用进程并返回失败,并通过将阻隔应用进程的提示信息发送给用户,进一步获取用户是否允许应用进程的操作确认信息。用户是否允许应用进程的操作信息为是时,表明用户确认相应的应用进程的加载程序并非为恶意程序的附加,因此可以将该加载程序补入预设的程序库中,即将该加载程序的可执行文件路径存储为内部路径;当用户是否允许应用进程的操作信息为否时,表明用户确认相应的应用进程的加载程序包含恶意程序的附加,确定所述加载程序不属于系统库或者预设的程序库。当返回获取应用进程启动指令后,根据加载程序的可执行文件路径是否为内部路径判断加载程序是否为危险加载程序的步骤中,可以根据获取用户之前的是否允许应用进程的操作信息的确认结果来判断相应的应用进程的加载程序是否存在恶意注入的风险,即可弥补初次判断可能带来的误差,且通过对用户的操作信息的存储记忆功能,提高危险加载程序的识别成功率和识别效率。

如图6所示,在一个实施例中,提供了一种应用进程监控的装置,包括获取模块10、调用模块30、第一判断模块50、第二判断模块70以及进程阻断模块90。获取模块10用于获取应用进程启动指令。调用模块30用于根据应用进程启动指令调用动态链接库打开函数。第一判断模块50用于通过所述动态链接库打开函数判断应用进程是否包含加载程序。第二判断模块70用于当应用进程包含加载程序时,判断加载程序是否为危险加载程序。进程阻断模块90用于当加载程序为危险加载程序时,则阻断应用进程并返回失败。

在另一个实施例中,如图7所示,应用进程监控的装置还包括权限获取模块21及注入模块22。权限获取模块21用于获取root权限。注入模块22用于在root权限下,利用hook技术劫持应用进程的系统动态链接库打开函数,并注 入动态链接库打开函数以替换系统动态链接库打开函数。

优选的,应用进程监控的装置还包括进程允许模块80。进程允许模块80用于当所述应用进程不包含加载程序时或者当所述应用进程包含加载程序且所述加载程序不是危险加载程序时,调用系统动态链接库打开函数以允许启动应用进程。即在第一判断模块50的判断结果为否时及/或第二判断模块70的判断结果为否时,进程允许模块80调用系统动态链接库打开函数以允许启动应用进程。

如图8所示,在再一个实施例中,第二判断模块70包括路径获取单元72及判断单元74。路径获取单元72用于当应用进程包含加载程序时,通过动态链接库打开函数的路径获取加载程序的可执行文件路径。判断单元74用于当加载程序的可执行文件路径为外部路径时判断加载程序为危险加载程序。

优选的,应用进程监控的装置还包括提示单元91和返回单元93。提示单元91用于发送阻隔应用进程的提示信息,并获取是否允许应用进程的操作确认信息。返回单元93用于当操作确认信息为是时,存储相应应用进程的加载程序的可执行文件路径为内部路径,并返回获取应用进程启动指令的步骤。

该应用进程监控的装置通过获取模块获取应用进程启动指令时,调用动态链接库打开函数判断应用进程是否被附加、以及判断被附加的程序是否为危险加载程序,当判断应用进程包含加载程序且判断加载程序为危险加载程序时才通过进程阻断模块阻断对应的应用进程并返回失败,相比于现有技术中当发现应用进程包含被附加程序直接立即退出的方式而言,应用进程退出时用户可以得知原因为该应用进程存在风险,避免给用户的使用造成困扰,且对于风险的防范更加准确,其次该应用进程的监控方法是在应用进程预设启动行为发生时判断包含危险加载程序并进行阻隔,不需要不断的检测应用进程自身的状态来确定是否存在被附加程序,也不需要创建守护进程,因此保障了应用性能,该 应用进程监控的装置对应用进程的监控不依赖于是否应用进程本身包含守护进程,能够有效的防止恶意软件的注入行为。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1