应用程序检测方法、装置及计算机可读存储介质与流程

文档序号:17443367发布日期:2019-04-17 05:07阅读:160来源:国知局
应用程序检测方法、装置及计算机可读存储介质与流程

本发明涉及信息安全领域,尤其涉及一种应用程序检测方法、装置及计算机可读存储介质。



背景技术:

随着科学技术的不断发展,移动终端的使用在人们的生活中越来越普遍。由于移动终端,例如手机,存储了用户的很多私人信息,例如账号、密码,如果用户的移动终端中存在病毒程序,在病毒程序运行后会对用户造成极大的损失。

现有技术中,在对移动终端的待检测应用程序进行病毒检测时,通常是采用静态检测方式来实现。静态检测方式是基于待检测应用程序内部文件提取静态特征,并通过检测静态特征是否命中人为设置的病毒特征规律来确定待检测应用程序是否为病毒。由于静态检测依赖于待检测应用程序内部文件,因此提取的特征比较单一,且病毒特征规律是人为设定的,无法覆盖全部的病毒检测范围,容易出现病毒检测的遗漏。



技术实现要素:

本说明书实施例提供及一种应用程序检测方法、装置及计算机可读存储介质。

第一方面,本说明书实施例提供一种应用程序检测方法,应用于移动终端,包括:

在所述移动终端的沙箱环境中运行应用程序,以对所述应用程序的进程进行监控;

当监控到所述进程中存在对目标系统服务的调用行为时,通过与所述目标系统服务对应的钩子函数,拦截并获取所述调用行为;

根据所述调用行为,以及预设的病毒行为识别模型,确定所述应用程序的识别结果;

将所述识别结果显示在所述移动终端的显示屏上。

可选地,所述当监控到所述进程中存在对目标系统服务的调用行为时,通过与所述目标系统服务对应的钩子函数,拦截并获取所述调用行为,包括:

确定与所述目标系统服务对应的钩子函数;

通过所述钩子函数在所述应用程序的进程中执行以下步骤:拦截对所述目标系统服务的调用行为;将所述调用行为进行广播;获取所述调用行为的调用结果;

根据所述调用行为的广播,对所述调用行为进行记录。

可选地,所述确定与所述n个目标系统服务中每个目标系统服务对应的钩子函数,包括:

根据预先配置的系统服务与钩子函数的对应关系,确定与所述每个目标系统服务对应的钩子函数。

可选地,所述根据所述调用行为,以及预设的病毒行为识别模型,确定所述应用程序的识别结果,包括:

通过所述移动终端系统进程中的中转服务接收所述调用行为,并将所述调用行为发送至所述预设的病毒行为识别模型所对应的目标进程;

所述目标进程根据所述调用行为以及预设的病毒行为识别模型,确定所述应用程序的识别结果。

可选地,所述在所述移动终端的沙箱环境中运行应用程序之前,所述方法还包括:

将所述应用程序的目标信息发送给服务器,以使所述服务器根据所述目标信息查询应用程序的黑白名单数据库,确定所述应用程序是否为正常应用程序;

在接收到所述服务器的反馈结果为所述应用程序为非正常应用程序时,执行所述在所述移动终端的沙箱环境中运行应用程序的步骤。

可选地,所述在所述移动终端的沙箱环境中运行应用程序,以对所述应用程序的进程进行监控包括:

在所述应用程序的运行过程中,模拟用户对所述移动终端的操作,以触发所述应用程序的系统服务调用行为,以对所述系统服务调用行为进行监控。

可选地,所述根据所述调用行为,以及预设的病毒行为识别模型,确定所述应用程序的识别结果,包括:

根据所述调用行为,确定目标行为序列;

将所述目标行为序列输入至所述预设的病毒行为识别模型,获得所述目标行为序列的识别结果,以确定所述应用程序是否为病毒。

可选地,所述将所述目标行为序列输入至所述预设的病毒行为识别模型,获得所述目标行为序列的识别结果,包括:

按照预设批次长度,将所述目标行为序列分批次输入至所述预设的病毒行为识别模型进行行为序列识别,获得与多个输入批次对应的多个识别结果;

在所述多个识别结果中存在一个或多个识别结果为病毒行为时,确定所述目标行为序列的识别结果为病毒行为。

可选地,所述将所述目标行为序列输入至所述预设的病毒行为识别模型,获得所述目标行为序列的识别结果,包括:

所述预设的病毒行为识别模型根据预设的病毒特征,过滤掉所述目标行为序列中与所述预设的病毒特征不匹配的数据,获得过滤后的行为序列;

对所述过滤后的行为序列进行识别,获得所述过滤后的行为序列的识别结果,作为所述目标行为序列的识别结果。

可选地,所述预设的病毒行为识别模型通过以下方式获得:

获取多个带有病毒标签的应用程序样本;

逐个提取所述应用程序样本的行为序列;

将每个所述应用程序样本的行为序列输入到病毒行为识别模型中进行训练,得到训练好的病毒行为识别模型作为所述预设的病毒行为识别模型。

第二方面,本说明书实施例提供一种应用程序检测装置,应用于移动终端,包括:

监控模块,用于在所述移动终端的沙箱环境中运行应用程序,以对所述应用程序的进程进行监控;

处理模块,用于当监控到所述进程中存在对目标系统服务的调用行为时,通过与所述目标系统服务对应的钩子函数,拦截并获取所述调用行为;

识别模块,用于根据所述调用行为,以及预设的病毒行为识别模型,确定所述应用程序的识别结果;

显示模块,用于将所述识别结果显示在所述移动终端的显示屏上。

可选地,所述处理模块,用于:

确定与所述目标系统服务对应的钩子函数;

通过所述钩子函数在所述应用程序的进程中执行以下步骤:拦截对所述目标系统服务的调用行为;将所述调用行为进行广播;获取所述调用行为的调用结果;

根据所述调用行为的广播,对所述调用行为进行记录。

可选地,所述处理模块,用于:

根据预先配置的系统服务与钩子函数的对应关系,确定与所述每个目标系统服务对应的钩子函数。

可选地,所述识别模块,用于:

通过所述移动终端系统进程中的中转服务接收所述调用行为,并将所述调用行为发送至所述预设的病毒行为识别模型所对应的目标进程;

所述目标进程根据所述调用行为以及预设的病毒行为识别模型,确定所述应用程序的识别结果。

可选地,所述装置还包括:

发送模块,用于将所述应用程序的目标信息发送给服务器,以使所述服务器根据所述目标信息查询应用程序的黑白名单数据库,确定所述应用程序是否为正常应用程序;

执行模块,用于在接收到所述服务器的反馈结果为所述应用程序为非正常应用程序时,执行在所述移动终端的沙箱环境中运行应用程序的步骤。

可选地,所述监控模块,用于:

在所述应用程序的运行过程中,模拟用户对所述移动终端的操作,以触发所述应用程序的系统服务调用行为,以对所述系统服务调用行为进行监控。

可选地,所述识别模块,用于:

根据所述调用行为,确定目标行为序列;

将所述目标行为序列输入至所述预设的病毒行为识别模型,获得所述目标行为序列的识别结果,以确定所述应用程序是否为病毒。

可选地,所述识别模块,用于:

按照预设批次长度,将所述目标行为序列分批次输入至所述预设的病毒行为识别模型进行行为序列识别,获得与多个输入批次对应的多个识别结果;

在所述多个识别结果中存在一个或多个识别结果为病毒行为时,确定所述目标行为序列的识别结果为病毒行为。

可选地,所述识别模块,用于:

所述预设的病毒行为识别模型根据预设的病毒特征,过滤掉所述目标行为序列中与所述预设的病毒特征不匹配的数据,获得过滤后的行为序列;

对所述过滤后的行为序列进行识别,获得所述过滤后的行为序列的识别结果,作为所述目标行为序列的识别结果。

可选地,所述装置还包括:

模型生成模块,用于获取多个带有病毒标签的应用程序样本;逐个提取所述应用程序样本的行为序列;将每个所述应用程序样本的行为序列输入到病毒行为识别模型中进行训练,得到训练好的病毒行为识别模型作为所述预设的病毒行为识别模型。

第三方面,本说明书实施例提供一种应用程序检测装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行上述任一项所述方法的步骤。

第四方面,本说明书实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述方法的步骤。

本说明书实施例有益效果如下:

在本说明书实施例提供的应用程序检测方法中,在所述移动终端的沙箱环境中运行应用程序,以对所述应用程序的进程进行监控;当监控到所述进程中存在对目标系统服务的调用行为时,通过与所述目标系统服务对应的钩子函数,拦截并获取所述调用行为;根据所述调用行为,以及预设的病毒行为识别模型,确定所述应用程序的识别结果;将所述识别结果显示在所述移动终端的显示屏上。上述方案中,由于调用行为是在应用程序在运行过程中采集的,因此能够获取更多的应用程序的动态行为,使得获取到的用于进行应用程序检测的行为更加多样化,另外,通过预设的病毒行为识别模型来进行应用程序识别,避免了对人为设定规则的依赖,能够使病毒行为识别更加全面。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本说明书实施例第一方面提供的一种应用程序检测方法的流程图;

图2为本说明书实施例提供的一种应用程序检测的流程框图;

图3为本说明书实施例第二方面提供的应用程序检测装置的示意图;

图4为本说明书实施例第三方面提供的应用程序检测装置的示意图。

具体实施方式

为了更好的理解上述技术方案,下面通过附图以及具体实施例对本说明书实施例的技术方案做详细的说明,应当理解本说明书实施例以及实施例中的具体特征是对本说明书实施例技术方案的详细的说明,而不是对本说明书技术方案的限定,在不冲突的情况下,本说明书实施例以及实施例中的技术特征可以相互组合。

第一方面,本说明书实施例提供的一种应用程序检测方法,应用于移动终端,移动终端可以为手机、平板电脑等设备,在本说明书实施例中,以移动终端为手机为例来进行说明。本说明书实施例中,手机中可以安装有沙箱,沙箱环境为一个独立的虚拟环境,不会对手机系统造成影响,因此可以在沙箱环境中测试不受信任的应用程序或其他行为。

本说明书实施例中,移动终端可以和服务器通信连接。服务器可以用来训练病毒行为识别模型,并将训练好的病毒行为识别模型下发给移动终端。在一个实施例中,移动终端可以为安卓系统的手机,服务器上可以运行有安卓模拟器,以模拟手机的安卓系统,通过对获取到的样本数据进行训练,得到训练好的病毒行为识别模型。

如图1所示,为本说明书实施例提供的一种应用程序检测方法的流程图,该方法包括以下步骤。

步骤s11:在所述移动终端的沙箱环境中运行应用程序,以对所述应用程序的进程进行监控;

步骤s12:当监控到所述进程中存在对目标系统服务的调用行为时,通过与所述目标系统服务对应的钩子函数,拦截并获取所述调用行为;

步骤s13:根据所述调用行为,以及预设的病毒行为识别模型,确定所述应用程序的识别结果;

步骤s14:将所述识别结果显示在所述移动终端的显示屏上。

本说明书实施例中,以移动终端为安卓系统的手机为例,手机中安装有沙箱,应用程序可以是手机中的安全情况未知的程序,或者是需要进行病毒检测的程序,在沙箱中运行的应用程序可以是一个,也可以是多个。为了保证手机系统的安全,可以在沙箱环境中对应用程序进行运行,这样即便应用程序为病毒,也不会对手机系统产生影响。在应用程序运行时,可以对应用程序的进程进行监控。

应理解的是,移动终端的系统服务可以包含很多,如调用摄像头的服务,访问联系人的服务等。目标系统服务可以是在系统服务中挑选出的一个或多个。目标系统服务可以根据实际需要来进行选择,例如,将敏感度较高的系统服务作为目标系统服务,或根据以往经验,将与病毒行为密切相关的系统服务作为目标系统服务。目标系统服务的数量可以根据实际需要进行设定。在一个实施例中,目标系统服务为200个,如果监控到应用程序的进程中触发了这200个系统服务中的一个,都会将该行为提取出来。

另外,由于调用行为是在应用程序的运行过程中提取的,因此,能够反映应用程序在运行过程中的动态行为。

为了监控应用程序对目标系统服务的调用行为,本说明书实施例中,采用binderhook的方式来获取对目标系统服务的调用行为。需要说明的是,binder机制是安卓系统里的一个进程间通信机制。hook(钩子)是系统中非常重要的系统接口,用它可以截获并处理送给其他应用程序的消息,来完成普通应用程序难以实现的功能。钩子可以监视系统或进程中的各种事件消息,截获发往目标窗口的消息并进行处理。hook实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,也就是说,钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。

本说明书实施例中,对于每个目标系统服务都设置有对应的钩子函数,当出现对目标系统服务的调用行为时,通过钩子函数拦截并获取该调用行为。通过获取应用程序运行过程出现的对目标系统服务的多个调用行为,将多个调用行为作为预设的病毒行为识别模型的输入,以使预设的病毒行为识别模型输出应用程序的识别结果。

本说明书实施例中,预设的病毒行为识别模型可以为服务器下发的病毒行为识别模型,也可以是在移动终端上训练的病毒行为识别模型。在预设的病毒行为识别模型的训练过程中,可以通过获取到的病毒样本来进行模型训练。以在服务器上训练模型为例,服务器上可以使用安卓模拟器来模拟手机的沙箱环境,在安卓模拟器中运行历史采集到的病毒样本,并获取病毒样本运行过程中的调用行为,作为病毒行为识别模型的输入,病毒行为识别模型的输出识别结果,如识别结果为病毒行为,或识别结果为非病毒行为。通过样本的不断训练最终获得预设的病毒行为识别模型。

进一步的,在得到了应用程序的识别结果后,可以将识别结果显示在移动终端的显示屏上以提示用户应用程序是否安全。在一个实施例中,在识别结果表明应用程序为病毒时,还可以弹出窗口以提醒用户是否需要将应用程序进行卸载或删除。应理解的是,识别结果的显示方式可以根据实际需要进行设置,这里不做限定。

可选地,所述当监控到所述进程中存在对目标系统服务的调用行为时,通过与所述目标系统服务对应的钩子函数,拦截并获取所述调用行为,包括:确定与所述目标系统服务对应的钩子函数;通过所述钩子函数在所述应用程序的进程中执行以下步骤:拦截对所述目标系统服务的调用行为;将所述调用行为进行广播;获取所述调用行为的调用结果;根据所述调用行为的广播,对所述调用行为进行记录。

在一个实施例中,可以根据预先配置的系统服务与钩子函数的对应关系,确定与所述每个目标系统服务对应的钩子函数。具体来讲,由于与病毒行为相关的系统服务有多个,可以将这些系统服务作为重点监控对象,因此,本实施例中,可以预先配置这些系统服务与钩子函数的对应关系。当检测到应用程序调用了系统服务a后,可以在对应关系中查找是否存在系统服务a,如果存在,则执行对应的钩子函数所包含的步骤,如果对应关系中未查找到系统服务a,则说明系统服务a与病毒行为的相关性较小,可以不做考虑,可以直接返回调用结果。

本说明书实施例中,应用程序调用目标系统服务的行为可以理解为向系统请求调用各类api(applicationprogramminginterface,应用程序编程接口)。通常来讲,应用程序调用一个目标系统服务,则返回该目标系统服务的调用结果。本说明书实施例中,为了获取对目标系统服务的调用行为,一旦监控到目标系统服务的调用行为时,通过对应的钩子拦截该调用命令,并写入一段目标代码,目标代码所执行的步骤可以为:确定应用程序调用了该目标系统服务,将调用该目标系统服务的行为广播出去,最后获取该目标系统服务的调用结果。这样,当应用程序调用目标系统服务时,则会顺序执行插入的目标代码的步骤,并最后返回调用结果。

在一个实施例中,当监控到应用程序调用了目标系统服务,例如调用api-a,通过对应的钩子拦截该调用命令,并返回一个代理,该代理所执行的流程为:确定应用程序调用了api-a,将该调用行为广播出去,获取api-a的调用结果。在应用程序的调用命令被拦截后,执行代理对应的流程,这样就可以将该调用行为进行广播和记录。

可选地,所述根据所述调用行为,以及预设的病毒行为识别模型,确定所述应用程序的识别结果,包括:通过所述移动终端系统进程中的中转服务接收所述调用行为,并将所述调用行为发送至所述预设的病毒行为识别模型所对应的目标进程;所述目标进程根据所述调用行为以及预设的病毒行为识别模型,确定所述应用程序的识别结果。

由于应用程序在运行过程中可能存在对多个目标系统服务的调用,通过上述方式可以记录应用进程中多个调用行为。本说明书实施例中,获取到的调用行为是在应用程序进程中截获,由于进程中的有些调用行为在系统侧是监控不到的,因此,本说明书实施例中的方法能够使获得的调用行为更加多样化,进而在对调用行为进行识别时,覆盖范围更加全面。

本说明书实施例中,当获取到应用进程中的多个调用行为后,将调用行为由应用进程发送至系统进程中的中转服务,并通过中转服务将调用行为转发至预设的病毒行为识别模型所对应的目标进程。在一个实施例中,预设的病毒行为识别模型对应的目标进程可以是手机管家进程,手机管家可以为手机rom(readonlymemory,只读存储器)自带的应用程序,或者是拥有手机权限的应用程序。手机管家可以将接收到的调用行为输入到预设的病毒行为识别模型中进行识别,最后获得识别结果。

本说明书实施例中,可以通过对手机rom订制来实现应用程序的检测,即可以通过修改rom来实现通过钩子函数获取应用程序进程中的调用行为,以及通过预设的病毒行为识别模型进行应用程序识别。可见,本说明书实施例中移动终端的沙箱是在订制的rom环境中运行的,因此无需获取手机权限。

可选地,所述在所述移动终端的沙箱环境中运行应用程序之前,所述方法还包括:将所述应用程序的目标信息发送给服务器,以使所述服务器根据所述目标信息查询应用程序的黑白名单数据库,确定所述应用程序是否为正常应用程序;在接收到所述服务器的反馈结果为所述应用程序为非正常应用程序时,执行所述在所述移动终端的沙箱环境中运行应用程序的步骤。

本说明书实施例中,目标信息可以根据实际需要来进行设置,在一个实施例中,以应用程序为apk程序包为例,目标信息可以为apk程序包的文件信息,如apk的配置文件信息、资源文件信息等。应用程序的黑白名单数据库可以是保存在云端服务器上的应用程序信息的黑名单数据库以及应用程序的白名单数据库,其中,黑名单数据库中保存有病毒应用程序的信息,白名单数据库中保存有正常应用程序的信息。

为了提高应用程序检测的效率,在沙箱中运行应用程序时,可以先将应用程序的目标信息发送给服务器,服务器通过在应用程序的黑白名单数据库中查询目标信息,来确定应用程序的性质。如果目标信息包含在应用程序信息的白名单数据库中,则应用程序为正常应用程序,可以直接告知用户可以正常使用。如果目标信息包含在应用程序信息的黑名单数据库中,则应用程序为病毒程序,可以提醒用户运行该应用程序会存在风险。如果没有在黑白名单数据库中查找到目标信息,则无法判定应用程序是否为病毒,此时可以进一步提取应用程序的目标行为序列,进行目标行为序列的识别过程。在本说明书实施例中,当检测到目标信息为非正常应用程序的信息时,即目标信息为未知的程序信息,或目标信息为病毒程序信息,为了进一步确定应用程序的性质,可以进一步通过病毒行为识别模型来进行识别。

可选地,在所述确定所述应用程序是否为病毒之后,所述方法还包括:将所述应用程序的识别结果发送至所述服务器,以使所述服务器根据所述识别结果更新所述应用程序的黑白名单数据库。

本说明书实施例中,在获得了识别结果后,可以将识别结果以及应用程序的目标信息进行关联,并发送给服务器以使服务器对应用程序的黑白名单数据库进行更新。例如,在应用程序的目标信息未在黑白名单数据库找到时,根据病毒行为识别模型获得的识别结果为病毒时,将识别结果发送给服务器,服务器可以将应用程序的目标信息添加至黑名单数据库中。

可选地,所述在所述移动终端的沙箱环境中运行应用程序,以对所述应用程序的进程进行监控,包括:在所述应用程序的运行过程中,模拟用户对所述移动终端的操作,以触发所述应用程序的系统服务调用行为,以对所述系统服务调用行为进行监控。

应理解的是,由于有些病毒程序需要在某些特定条件下才会触发病毒行为,因此,在本说明书实施例中,在沙箱环境中运行应用程序时,可以通过模拟用户对移动终端的操作来触发这些病毒行为的产生,用户操作可以包括开关机操作、重启操作、锁屏操作、网络切换操作等。

可选地,所述根据所述调用行为,以及预设的病毒行为识别模型,确定所述应用程序的识别结果,包括:根据所述调用行为,确定目标行为序列;将所述目标行为序列输入至所述预设的病毒行为识别模型,获得所述目标行为序列的识别结果,以确定所述应用程序是否为病毒。

本说明书实施例中,在应用程序的进程中提取到的api调用行为可以包含多个,根据多个系统服务的调用行为,获取目标行为序列可以通过多种方式来实现。在一个实施例中,针对每个api的调用行为,可以设置有唯一的编码,编码格式可以根据实际需要进行设定。那么,根据钩子函数确定了多个系统服务后,可以对应获取这多个系统服务对应的api调用行为的多个编码,利用这多个编码构成目标行为序列,例如将多个编码组合成目标行为序列。在另一实施例中,可以将每个提取到的调用行为根据预设规则转换成向量,多个调用行为对应多组向量,将多组向量构成目标行为序列,输入到预设的病毒行为识别模型中。预设的病毒行为识别模型输出目标行为序列的识别结果,在识别结果为病毒行为时,表明应用程序为病毒,在识别结果为正常行为时,表明应用程序为正常应用程序。

可选地,所述将所述目标行为序列输入至所述预设的病毒行为识别模型,获得所述目标行为序列的识别结果,包括:按照预设批次长度,将所述目标行为序列分批次输入至所述预设的病毒行为识别模型进行行为序列识别,获得与多个输入批次对应的多个识别结果;在所述多个识别结果中存在一个或多个识别结果为病毒行为时,确定所述目标行为序列的识别结果为病毒行为。

本说明书实施例中,预设批次长度为预设的病毒行为识别模型的输入长度,由于在应用程序的运行过程中,会持续的提取目标行为序列,在目标行为序列的长度大于模型设定的输入长度时,可以将目标行为序列进行拆分,分批次进行输入。另外,分批次输入除了对输入长度的限定,还可以对输入步长进行设置,步长为相邻批次的起始数据所间隔的长度。例如,模型的输入长度为20,步长为10,那么在目标行为序列输入时,第一批次为目标行为序列中的第1-20个行为组成的序列,第二批次为第11-30个行为组成的序列。

预设的病毒行为识别模型针对每个批次的行为序列进行识别,在多个批次的识别结果中只要存在一个识别结果为病毒行为,则表明应用程序为病毒程序。

可选地,所述将所述目标行为序列输入至所述预设的病毒行为识别模型,获得所述目标行为序列的识别结果,包括:所述预设的病毒行为识别模型根据预设的病毒特征,过滤掉所述目标行为序列中与所述预设的病毒特征不匹配的数据,获得过滤后的行为序列;对所述过滤后的行为序列进行识别,获得所述过滤后的行为序列的识别结果,作为所述目标行为序列的识别结果。

本说明书实施例中,可以根据预先收集的历史病毒数据,提取出病毒特征,在对目标行为序列进行识别之前,可以先根据病毒特征筛除目标行为序列中与病毒特征不匹配的无意义数据,以保留与病毒相关性较强的动态行为数据,减少病毒行为识别模型的计算量,以及提高病毒行为识别模型的识别准确率。

可选地,所述预设的病毒行为识别模型通过以下方式获得:获取多个带有病毒标签的应用程序样本;逐个提取所述应用程序样本的行为序列;将每个所述应用程序样本的行为序列输入到病毒行为识别模型中进行训练,得到训练好的病毒行为识别模型作为所述预设的病毒行为识别模型。

本说明书实施例中的预设的病毒行为识别模型可以是在云端服务器上训练的,也可以是在移动终端上训练的。带有病毒标签的应用程序样本可以为海量终端上传到服务器上的样本,应理解的是,用于模型训练的样本可以包含有带有病毒标签的病毒应用程序样本,也可以包含有带有正常标签的正常应用程序样本。将用于训练的应用程序样本的行为序列作为病毒行为模型的输入来进行模型训练。病毒行为识别模型可以根据需要进行设定,如卷积神经网络模型。

通过训练样本来对初始的病毒行为识别模型进行训练,在训练过程中,病毒行为识别模型针对每个输入的样本,都会输出一个预测结果,将预测结果与输入样本对应的真实标签来进行比对,确定模型的识别结果是否正确。在模型的预测准确率大于阈值时,可以认定模型已经训练完成,如果模型的预测准确率未达到阈值,则继续对病毒行为识别模型的参数进行调整,知道模型的预测准确率大于阈值为止。应理解的是,阈值可以根据实际需要进行选择,这里不做限定。

另外,为了能够使病毒行为识别模型能够对最新的病毒应用程序进行识别,可以根据海量终端实时上传的病毒样本对病毒行为识别模型进行更新,即将最新的病毒样本加入到模型训练样本中,对模型进行升级。

可选地,在所述确定所述应用程序是否为病毒之后,所述方法还包括:对所述沙箱环境进行初始化,以使在所述沙箱环境中需要检测多个应用程序时,每个应用程序的运行环境均相同。

本说明书实施例中,由于应用程序有可能为病毒程序,当病毒程序在运行过程中,有可能会对沙箱环境产生影响,为了保证下一个应用程序的检测环境与当前的检测环境相同,可以在当前的应用程序运行完毕之后,对沙箱环境执行初始化操作。在一个实施例中,可以通过系统快照来进行沙箱环境的恢复,即将沙箱环境中某个状态下的数据记录为一个系统快照,每次运行完一个应用程序,则将沙箱环境的数据恢复到系统快照中记录的数据状态。

为了更好的理解本说明书实施例中的应用程序检测方法,请参考图2,为本说明书实施例提供的一种应用程序检测的流程框图。

在该实施例中,待扫描的应用程序为apk,如图2所示,步骤一:在手机的沙箱环境中运行apk。步骤二:将apk信息发送至云端服务器,以使服务器在应用程序黑白名单数据库中对apk信息进行查询,当apk信息包含在白名单数据库中时,可以继续运行应用程序,当apk信息包含在黑名单数据库中时,可以终端应用程序的运行,并通知用户该应用程序为病毒,当未查询到apk信息时,可以继续执行步骤三。步骤三:监控apk进程,通过钩子函数拦截并获取进程中的调用行为。步骤四:将获取到的调用行为进行行为向量序列化,这里实现行为向量序列化的方式可以根据实际需要进行选择,如通过word2vec方式来实现。步骤五:行为向量匹配,即,将行为向量序列与预设的病毒特征进行匹配,过滤掉行为向量序列中与预设的病毒特征不匹配的向量,获得过滤后的行为向量序列。步骤六:将过滤后的行为向量序列输入到预设的病毒行为识别模型中,获得识别结果。

在本说明书实施例中,预设的病毒行为识别模块可以是在服务器上训练的,举例来讲,服务器上可以安装有安卓模拟器来模拟手机的沙箱环境,服务器可以使用历史采集的到病毒样本,并在服务器模拟的纱线环境中运行病毒样本,在运行过程中,通过模拟用户对手机的操作,例如开关机、重启等操作,来触发病毒样本的行为。同时通过钩子函数,或通过对服务器源码的修改来设置打桩点等方式,来获取病毒样本在运行过程中的行为序列,将行为序列作为模型的训练数据进行模型训练。

第二方面,基于同一发明构思,本说明书实施例提供一种应用程序检测装置,应用于移动终端,请参考图3,包括:

监控模块31,用于在所述移动终端的沙箱环境中运行应用程序,以对所述应用程序的进程进行监控;

处理模块32,用于当监控到所述进程中存在对目标系统服务的调用行为时,通过与所述目标系统服务对应的钩子函数,拦截并获取所述调用行为;

识别模块33,用于根据所述调用行为,以及预设的病毒行为识别模型,确定所述应用程序的识别结果;

显示模块34,用于将所述识别结果显示在所述移动终端的显示屏上。

在一种可选实现方式中,处理模块32,用于:

确定与所述目标系统服务对应的钩子函数;

通过所述钩子函数在所述应用程序的进程中执行以下步骤:拦截对所述目标系统服务的调用行为;将所述调用行为进行广播;获取所述调用行为的调用结果;

根据所述调用行为的广播,对所述调用行为进行记录。

在一种可选实现方式中,处理模块32,用于:

根据预先配置的系统服务与钩子函数的对应关系,确定与所述每个目标系统服务对应的钩子函数。

在一种可选实现方式中,识别模块33,用于:

通过所述移动终端系统进程中的中转服务接收所述调用行为,并将所述调用行为发送至所述预设的病毒行为识别模型所对应的目标进程;

所述目标进程根据所述调用行为以及预设的病毒行为识别模型,确定所述应用程序的识别结果。

在一种可选实现方式中,所述装置还包括:

发送模块,用于将所述应用程序的目标信息发送给服务器,以使所述服务器根据所述目标信息查询应用程序的黑白名单数据库,确定所述应用程序是否为正常应用程序;

执行模块,用于在接收到所述服务器的反馈结果为所述应用程序为非正常应用程序时,执行在所述移动终端的沙箱环境中运行应用程序的步骤。

在一种可选实现方式中,监控模块31,用于:

在所述应用程序的运行过程中,模拟用户对所述移动终端的操作,以触发所述应用程序的系统服务调用行为,以对所述系统服务调用行为进行监控。

在一种可选实现方式中,识别模块33,用于:

根据所述调用行为,确定目标行为序列;

将所述目标行为序列输入至所述预设的病毒行为识别模型,获得所述目标行为序列的识别结果,以确定所述应用程序是否为病毒。

在一种可选实现方式中,识别模块33,用于:

按照预设批次长度,将所述目标行为序列分批次输入至所述预设的病毒行为识别模型进行行为序列识别,获得与多个输入批次对应的多个识别结果;

在所述多个识别结果中存在一个或多个识别结果为病毒行为时,确定所述目标行为序列的识别结果为病毒行为。

在一种可选实现方式中,识别模块33,用于:

所述预设的病毒行为识别模型根据预设的病毒特征,过滤掉所述目标行为序列中与所述预设的病毒特征不匹配的数据,获得过滤后的行为序列;

对所述过滤后的行为序列进行识别,获得所述过滤后的行为序列的识别结果,作为所述目标行为序列的识别结果。

在一种可选实现方式中,所述装置还包括:

模型生成模块,用于获取多个带有病毒标签的应用程序样本;逐个提取所述应用程序样本的行为序列;将每个所述应用程序样本的行为序列输入到病毒行为识别模型中进行训练,得到训练好的病毒行为识别模型作为所述预设的病毒行为识别模型。

关于上述装置,其中各个模块的具体功能已经在本发明实施例提供的应用程序检测方法的实施例中进行了详细描述,此处将不做详细阐述说明。

第三方面,基于与前述实施例中应用程序检测方法同样的发明构思,本发明还提供一种应用程序检测装置,如图4所示,包括存储器504、处理器502及存储在存储器504上并可在处理器502上运行的计算机程序,所述处理器502执行所述程序时实现前文所述应用程序检测方法的任一方法的步骤。

其中,在图4中,总线架构(用总线500来代表),总线500可以包括任意数量的互联的总线和桥,总线500将包括由处理器502代表的一个或多个处理器和存储器504代表的存储器的各种电路链接在一起。总线500还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口506在总线500和接收器501和发送器503之间提供接口。接收器501和发送器503可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器502负责管理总线500和通常的处理,而存储器504可以被用于存储处理器502在执行操作时所使用的数据。

第四方面,基于与前述实施例中基于应用程序检测方法的发明构思,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前文所述基于应用程序检测方法的任一方法的步骤。

本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的设备。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令设备的制造品,该指令设备实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

本发明还公开a1,一种应用程序检测方法,应用于移动终端,所述方法包括:

在所述移动终端的沙箱环境中运行应用程序,以对所述应用程序的进程进行监控;

当监控到所述进程中存在对目标系统服务的调用行为时,通过与所述目标系统服务对应的钩子函数,拦截并获取所述调用行为;

根据所述调用行为,以及预设的病毒行为识别模型,确定所述应用程序的识别结果;

将所述识别结果显示在所述移动终端的显示屏上。

a2、根据a1所述的应用程序检测方法,所述当监控到所述进程中存在对目标系统服务的调用行为时,通过与所述目标系统服务对应的钩子函数,拦截并获取所述调用行为,包括:

确定与所述目标系统服务对应的钩子函数;

通过所述钩子函数在所述应用程序的进程中执行以下步骤:拦截对所述目标系统服务的调用行为;将所述调用行为进行广播;获取所述调用行为的调用结果;

根据所述调用行为的广播,对所述调用行为进行记录。

a3、根据a2所述的应用程序检测方法,所述确定与所述目标系统服务对应的钩子函数,包括:

根据预先配置的系统服务与钩子函数的对应关系,确定与所述目标系统服务对应的钩子函数。

a4、根据a1所述的应用程序检测方法,所述根据所述调用行为,以及预设的病毒行为识别模型,确定所述应用程序的识别结果,包括:

通过所述移动终端系统进程中的中转服务接收所述调用行为,并将所述调用行为发送至所述预设的病毒行为识别模型所对应的目标进程;

所述目标进程根据所述调用行为以及预设的病毒行为识别模型,确定所述应用程序的识别结果。

a5、根据a1所述的应用程序检测方法,所述在所述移动终端的沙箱环境中运行应用程序之前,所述方法还包括:

将所述应用程序的目标信息发送给服务器,以使所述服务器根据所述目标信息查询应用程序的黑白名单数据库,确定所述应用程序是否为正常应用程序;

在接收到所述服务器的反馈结果为所述应用程序为非正常应用程序时,执行所述在所述移动终端的沙箱环境中运行应用程序的步骤。

a6、根据a1所述的应用程序检测方法,所述在所述移动终端的沙箱环境中运行应用程序,以对所述应用程序的进程进行监控包括:

在所述应用程序的运行过程中,模拟用户对所述移动终端的操作,以触发所述应用程序的系统服务调用行为,以对所述系统服务调用行为进行监控。

a7、根据a1所述的应用程序检测方法,所述根据所述调用行为,以及预设的病毒行为识别模型,确定所述应用程序的识别结果,包括:

根据所述调用行为,确定目标行为序列;

将所述目标行为序列输入至所述预设的病毒行为识别模型,获得所述目标行为序列的识别结果,以确定所述应用程序是否为病毒。

a8、根据a7所述的应用程序检测方法,所述将所述目标行为序列输入至所述预设的病毒行为识别模型,获得所述目标行为序列的识别结果,包括:

按照预设批次长度,将所述目标行为序列分批次输入至所述预设的病毒行为识别模型进行行为序列识别,获得与多个输入批次对应的多个识别结果;

在所述多个识别结果中存在一个或多个识别结果为病毒行为时,确定所述目标行为序列的识别结果为病毒行为。

a9、根据a7所述的应用程序检测方法,所述将所述目标行为序列输入至所述预设的病毒行为识别模型,获得所述目标行为序列的识别结果,包括:

所述预设的病毒行为识别模型根据预设的病毒特征,过滤掉所述目标行为序列中与所述预设的病毒特征不匹配的数据,获得过滤后的行为序列;

对所述过滤后的行为序列进行识别,获得所述过滤后的行为序列的识别结果,作为所述目标行为序列的识别结果。

a10、根据a1所述的应用程序检测方法,所述预设的病毒行为识别模型通过以下方式获得:

获取多个带有病毒标签的应用程序样本;

逐个提取所述应用程序样本的行为序列;

将每个所述应用程序样本的行为序列输入到病毒行为识别模型中进行训练,得到训练好的病毒行为识别模型作为所述预设的病毒行为识别模型。

b11、一种应用程序检测装置,应用于移动终端,所述装置包括:

监控模块,用于在所述移动终端的沙箱环境中运行应用程序,以对所述应用程序的进程进行监控;

处理模块,用于当监控到所述进程中存在对目标系统服务的调用行为时,通过与所述目标系统服务对应的钩子函数,拦截并获取所述调用行为;

识别模块,用于根据所述调用行为,以及预设的病毒行为识别模型,确定所述应用程序的识别结果;

显示模块,用于将所述识别结果显示在所述移动终端的显示屏上。

b12、根据b11所述的应用程序检测装置,所述处理模块,用于:

确定与所述目标系统服务对应的钩子函数;

通过所述钩子函数在所述应用程序的进程中执行以下步骤:拦截对所述目标系统服务的调用行为;将所述调用行为进行广播;获取所述调用行为的调用结果;

根据所述调用行为的广播,对所述调用行为进行记录。

b13、根据b12所述的应用程序检测装置,所述处理模块,用于:

根据预先配置的系统服务与钩子函数的对应关系,确定与所述每个目标系统服务对应的钩子函数。

b14、根据b11所述的应用程序检测装置,所述识别模块,用于:

通过所述移动终端系统进程中的中转服务接收所述调用行为,并将所述调用行为发送至所述预设的病毒行为识别模型所对应的目标进程;

所述目标进程根据所述调用行为以及预设的病毒行为识别模型,确定所述应用程序的识别结果。

b15、根据b11所述的应用程序检测装置,所述装置还包括:

发送模块,用于将所述应用程序的目标信息发送给服务器,以使所述服务器根据所述目标信息查询应用程序的黑白名单数据库,确定所述应用程序是否为正常应用程序;

执行模块,用于在接收到所述服务器的反馈结果为所述应用程序为非正常应用程序时,执行在所述移动终端的沙箱环境中运行应用程序的步骤。

b16、根据b11所述的应用程序检测装置,所述监控模块,用于:

在所述应用程序的运行过程中,模拟用户对所述移动终端的操作,以触发所述应用程序的系统服务调用行为,以对所述系统服务调用行为进行监控。

b17、根据b11所述的应用程序检测装置,所述识别模块,用于:

根据所述调用行为,确定目标行为序列;

将所述目标行为序列输入至所述预设的病毒行为识别模型,获得所述目标行为序列的识别结果,以确定所述应用程序是否为病毒。

b18、根据b17所述的应用程序检测装置,所述识别模块,用于:

按照预设批次长度,将所述目标行为序列分批次输入至所述预设的病毒行为识别模型进行行为序列识别,获得与多个输入批次对应的多个识别结果;

在所述多个识别结果中存在一个或多个识别结果为病毒行为时,确定所述目标行为序列的识别结果为病毒行为。

b19、根据b17所述的应用程序检测装置,所述识别模块,用于:

所述预设的病毒行为识别模型根据预设的病毒特征,过滤掉所述目标行为序列中与所述预设的病毒特征不匹配的数据,获得过滤后的行为序列;

对所述过滤后的行为序列进行识别,获得所述过滤后的行为序列的识别结果,作为所述目标行为序列的识别结果。

b20、根据b11所述的应用程序检测装置,所述装置还包括:

模型生成模块,用于获取多个带有病毒标签的应用程序样本;逐个提取所述应用程序样本的行为序列;将每个所述应用程序样本的行为序列输入到病毒行为识别模型中进行训练,得到训练好的病毒行为识别模型作为所述预设的病毒行为识别模型。

c21、一种应用程序检测装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现a1-a10任一项所述方法的步骤。

d22、一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现a1-a10任一项所述方法的步骤。

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