发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的适于恶意程序的扫描方法和相应地装置。
依据本发明的一个方面,提供一种恶意程序的扫描方法,包括:
在ARM平台的操作系统中创建用于查毒的虚拟操作系统环境;
将待扫描的程序模块导入虚拟操作系统环境中,并运行待扫描的程序模块;
监测并获取待扫描的程序模块在虚拟操作系统环境中所发生的行为;
根据发生的行为确定程序模块是否为恶意程序。
可选地,在ARM平台的操作系统中创建用于查毒的虚拟操作系统环境,包括:
在ARM平台的操作系统中建立虚拟机;
在虚拟机中创建与ARM平台的文件系统相同类型的文件系统;
创建用于支持待扫描的程序模块运行的进程、环境变量以及网络接口;
创建用于待扫描的程序模块在虚拟操作系统环境使用的SHELL命令接口。
可选地,支持待扫描的程序模块运行的进程包括以下进程中的至少一种:
servicemanager、sh、sdcard、netd、mediaserver;
支持待扫描的程序模块运行的环境变量包括以下变量中的至少一种:
PATH、HOME、LANG、SHELL、HOSTNAME、USER;
支持待扫描的程序模块运行的网络接口包括以下接口中的至少一种:
建立TCP、UDP连接,读写、获取网络信息,断开、设置网络信息。
可选地,将待扫描的程序模块导入虚拟操作系统环境中,并运行待扫描的程序模块,包括:
根据待扫描的程序模块的文件格式对待扫描的程序模块进行解析,得到待扫描的程序模块的导出表;
根据导出表将待扫描的程序模块加载到内存中;
在内存中对待扫描的程序模块按字节分析得到多个指令,并运行多个指令。
可选地,待扫描的程序模块为共享库SO文件,SO文件的文件格式为可执行链接ELF格式。
可选地,监测并获取待扫描的程序模块在虚拟操作系统环境中所发生的行为,包括:
对虚拟操作系统环境中的指定函数进行监测;
当指定函数被调用时,记录指定函数返回的参数和值;
根据指定函数返回的参数和值确定待扫描的程序模块在虚拟操作系统环境中所发生的行为。
可选地,指定函数包括以下中的任意一种:
文件系统函数:fopen fread fwrite fclose stat;
文件权限控制函数:chmod;
进程操作函数exec*系列:system、fork、exit;
线程控制函数:pthread_create;
内存控制函数:mmap munmap。
可选地,根据发生的行为确定程序模块是否为恶意程序,包括:
筛选发生的行为中的指定行为;
根据指定行为确定程序模块是否为恶意程序。
可选地,指定行为包括如下任意一种:
弹窗行为、获取root权限的行为、文件操作行为、进程操作行为、短信发送行为、通话行为、通讯录操作行为、网络通信行为。
可选地,根据指定行为确定程序模块是否为恶意程序,包括:
将指定行为上传给服务器;
接收服务器根据指定行为对程序模块是否为恶意程序的判断结果。
依据本发明的一个方面,还提供了一种恶意程序的扫描装置,包括:
建立模块,配置为在ARM平台的操作系统中创建用于查毒的虚拟操作系统环境;
运行模块,配置为将待扫描的程序模块导入虚拟操作系统环境中,并运行待扫描的程序模块;
监测模块,配置为监测并获取待扫描的程序模块在虚拟操作系统环境中所发生的行为;
确定模块,配置为根据发生的行为确定程序模块是否为恶意程序。
可选地,建立模块包括:
虚拟机建立单元,配置为在ARM平台的操作系统中建立虚拟机;
第一创建单元,配置为在虚拟机中创建与ARM平台的文件系统相同类型的文件系统;
第二创建单元,配置为创建用于支持待扫描的程序模块运行的进程、环境变量以及网络接口;
第三创建单元,配置为创建用于待扫描的程序模块在虚拟操作系统环境使用的SHELL命令接口。
可选地,支持待扫描的程序模块运行的进程包括以下进程中的至少一种:
servicemanager、sh、sdcard、netd、mediaserver;
支持待扫描的程序模块运行的环境变量包括以下变量中的至少一种:
PATH、HOME、LANG、SHELL、HOSTNAME、USER;
支持待扫描的程序模块运行的网络接口包括以下接口中的至少一种:
建立TCP、UDP连接,读写、获取网络信息,断开、设置网络信息。
可选地,运行模块包括:
程序解析单元,配置为根据待扫描的程序模块的文件格式对待扫描的程序模块进行解析,得到待扫描的程序模块的导出表;
程序加载单元,配置为根据导出表将待扫描的程序模块加载到内存中;
指令分析单元,配置为在内存中对待扫描的程序模块按字节分析得到多个指令;
指令运行单元,配置为运行多个指令。
可选地,待扫描的程序模块为共享库SO文件,SO文件的文件格式为可执行链接ELF格式。
可选地,监测模块包括:
函数监测单元,配置为对虚拟操作系统环境中的指定函数进行监测;
信号记录单元,配置为当指定函数被调用时,记录指定函数返回的参数和值;
行为确定单元,配置为根据指定函数返回的参数和值确定待扫描的程序模块在虚拟操作系统环境中所发生的行为。
可选地,指定函数包括以下中的任意一种:
文件系统函数:fopen fread fwrite fclose stat;
文件权限控制函数:chmod;
进程操作函数exec*系列:system、fork、exit;
线程控制函数:pthread_create;
内存控制函数:mmap munmap。
可选地,确定模块包括:
行为筛选单元,配置为筛选发生的行为中的指定行为;
恶意程序确定单元,配置为根据指定行为确定程序模块是否为恶意程序。
可选地,指定行为包括如下任意一种:
弹窗行为、获取root权限的行为、文件操作行为、进程操作行为、短信发送行为、通话行为、通讯录操作行为、网络通信行为。
可选地,恶意程序确定单元还配置为将指定行为上传给服务器,接收服务器根据指定行为对程序模块是否为恶意程序的判断结果。
本发明提供了一种恶意程序的扫描方法和装置,通过在ARM平台的操作系统中建立虚拟机操作系统环境,将待扫描的程序模块导入并运行,根据其行为判断是否为恶意程序,解决了ARM平台中由于机制的特性导致无法进行恶意程序扫描的问题,而将待扫描的程序模块置入虚拟操作系统环境中运行,既可以得到其行为以判断是否为恶意程序,也不会影响到用户真正的操作系统的安全性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应该被这里阐述的实施例所限制。相反,提供这些实施例是为了能够透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
实施例一
本发明实施例提供了一种恶意程序的扫描方法。该方法对恶意程序的扫描装置进行了改进。本实施例中恶意程序的扫描装置可以安装在用户客户端上,例如,客户端可以为PC(Personal Computer,个人计算机),手机,手持电脑等用户终端。
图1是根据本发明一个实施例的一种恶意程序的扫描方法流程图,该方法包括步骤S102至S108。
S102,在ARM平台的操作系统中创建用于查毒的虚拟操作系统环境。
S104,将待扫描的程序模块导入虚拟操作系统环境中,并运行待扫描的程序模块。
S106,监测并获取待扫描的程序模块在虚拟操作系统环境中所发生的行为。
S108,根据发生的行为确定程序模块是否为恶意程序。
本发明实施例提供了一种恶意程序的扫描方法,通过在ARM平台的操作系统中建立虚拟机操作系统环境,将待扫描的程序模块导入并运行,根据其行为判断是否为恶意程序,解决了ARM平台中由于机制的特性导致无法进行恶意程序扫描的问题,而将待扫描的程序模块置入虚拟操作系统环境中运行,既可以得到其行为以判断是否为恶意程序,也不会影响到用户真正的操作系统的安全性。
实施例二
本实施例为上述实施例一的一种具体应用场景,通过本实施例,能够更加清楚、具体地阐述本发明所提供的方法。
其中,本实施例所提供的方法,可以以驱动或杀毒软件的形式实现在基于ARM平台的移动终端中。
图2是根据本发明一个实施例的一种恶意程序的具体扫描方法流程图,该方法包括步骤S201至S207。
S201,在ARM平台的操作系统中建立虚拟机。
以运行安卓系统的手机为例,本步骤即为在手机运行的安卓系统中建立一个虚拟机,该虚拟机可为一个完整的系统,模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
虚拟机相对于其所寄生的操作系统是完全隔离的,一般具有与其寄生的操作系统完全相同的操作环境。在下面的步骤S202到步骤S204中即为创建虚拟机,并为虚拟机配置与虚拟操作系统环境的方法。
在建立了虚拟机之后,执行步骤S202,在上述虚拟机中创建与ARM平台的文件系统相同类型的文件系统。
需要说明的是,为了使恶意程序运行的环境达到与在用户的操作系统中具有相同的效果,因此,虚拟机所使用的文件系统优选地与移动终端所使用的文件系统相同。
例如,在移动终端的安卓操作系统中使用的文件系统为devpts,则虚拟机中应将其也配置使用devpts文件系统。
S203,创建用于支持待扫描的程序模块运行的进程、环境变量以及网络接口。
其中,在正常运行的操作系统中,为了对各种应用程序进行支持,通常会包括有大量的必须进程、环境变量以及网络接口。
其中,以安卓系统为例,需要创建的进程包括:
servicemanager、sh、sdcard、netd、mediaserver等。
需要创建的环境变量包括:
PATH、HOME、LANG、SHELL、HOSTNAME、USER等。
需要创建的网络接口包括:
建立TCP、UDP连接,读写、获取网络信息,断开、设置网络信息的接口等。
例如,用户在运行网络短信功能时,则需要实时的进行检测是否有短信发送过来,因此需要不断的尝试网络连接,即需要TCP/IP服务。而这个网络服务开启是通过对应的进程来支持的,因此,该进程也必须被建立在虚拟机中,使得虚拟机具有TCP/IP服务。
而为了使得虚拟机适用于对大部分恶意程序的扫描,需要在虚拟机中建立尽量与原操作系统中相同的进程,例如,短信服务、电话服务、闹钟服务对应的进程等。
而用户在通过TCP/IP网络协议进行网络短信的发送时,必然会占用相应的网络端口,例如8080,则我们还需要在虚拟机中建立相应的端口供应用程序在运行时使用。
S204,创建用于监测以及获取待扫描的程序模块在虚拟操作系统环境中发生的行为的SHELL命令接口。
其中,SHELL为操作系统的命令解析器,用于接口待扫描程序在虚拟机环境中运行时调用使用,在虚拟机中模拟实现android系统shell的功能,例如病毒调用hostname命令,将返回主机名。
例如,病毒调用hostname命令,将返回主机名,即需要SHELL接口。
本实施例中,一方面,可以通过模拟shell接口,拦截病毒调用,检查调用的命令和参数,另一方面,提取调用的信息,用于与病毒其他信息综合判断。
接着,执行步骤S205,将待扫描的程序模块导入到虚拟操作系统环境中,并运行待扫描的程序模块。
需要说明的是,用户通常是将程序安装在移动终端自身的操作系统中的,为了对待扫描程序进行检测,需要将该程序导入到完全隔离的虚拟机中才可以,并在虚拟机中运行。
通过该步骤操作,既能达到运行待扫描的程序模块以判断其行为,也可以达到,即使该程序模块真的为恶意程序,也不会对移动终端的操作系统产生影响。
其中,本步骤S205,具体可以通过如下方式进行实现:
根据待扫描的程序模块的文件格式对待扫描的程序模块进行解析,得到待扫描的程序模块的导出表;
根据导出表将待扫描的程序模块加载到内存中;
在内存中对待扫描的程序模块按字节分析得到多个指令,并运行该多个指令。
需要说明的是,在基于ARM平台中的移动终端中的操作系统中都是基于Linux内核的,例如安卓操作系统。因此,在现有情况下,ARM平台的移动终端中的恶意程序通常是通过感染SO(share object,共享库)文件实现的,因此本实施例中的待扫描的程序模块为SO文件,该SO文件的文件格式为可执行链接ELF(Executable and Linkable Format,可执行链接)格式。
S206,监测并获取待扫描的程序模块在、虚拟操作系统环境中所发生的行为。
需要说明的是,为了判断待扫描程序是否为恶意程序,需要监控其在运行后虚拟机中发生的行为,以进行恶意程序的判断。
具体地,监测行为的方式可以包括:
对虚拟操作系统环境中的指定函数进行监测;当指定函数被调用时,记录指定函数返回的参数和值;根据指定函数返回的参数和值确定待扫描的程序模块在虚拟操作系统环境中所发生的行为。
其中,以Android系统为例,需要监控的Android native函数包括:
文件系统函数:fopen fread fwrite fclose stat
文件权限控制函数chmod等
进程操作函数exec*系列,system,fork,exit等
线程控制函数pthread_create
内存控制函数mmap munmap等。
需要说明的是,在基于ARM平台的移动终端中,对上述函数进行监控,记录虚拟机的虚拟操作环境中函数调用的参数和返回的值,并通过上述参数和值,抽象得到待扫描程序的行为,并综合静态、动态信息判断待扫描程序是否为恶意程序。
例如,病毒程序调用kill命令结束杀毒进程,这就是一种病毒行为。
再例如,fwrite生成一个文件,Chmod改变此文件为执行属性,并且调用exe*将其执行起来,这个在移动终端上就是一种恶意程序。
当操作系统中产生行为时,会对相应的函数进行调用,可以通过hook的方式对虚拟机中的指定函数进行监测,当这些函数被调用时,则返回相应的信号,通过对信号的记录,则可得到虚拟机中所产生的一系列行为。
具体地,在hook方式中,通过如下方法实现:
在虚拟机中模拟实现待扫描程序所需要的环境,模拟其执行调用的函数表,并对上述函数进行监测,得到返回的参数和值。在获取了多个参数和返回值后,匹配制定的查毒规则,如果这些参数和返回值符合判定为病毒的规则,则判定为病毒行为。
例如,在用户发送短信时,则一定会对提供短信服务的函数进行调用。
具体地,在虚拟机中需要监测的行为至少包括如下:
弹窗行为、获取root权限的行为、文件操作行为、进程操作行为、短信发送行为、通话行为、通讯录操作行为、网络通信行为等。
上述行为,均有可能对用户造成影响或损失。
S207,根据上述发生的行为确定待扫描的程序模块是否为恶意程序。
其中,在本步骤中,根据行为判断待扫描的程序模块是否为恶意程序,可以基于本地进行判断,也可以基于云上的服务器进行判断。
在进行云端判断时,可通过对客户端提交的待扫描程序的行为信息进行分析,如果符合黑名单策略中的行为,则为恶意程序,如果符合白名单策略中的行为,则为正常程序。
在进行本地判断时,可通过上述发生的行为是否符合恶意特征来进行,如何符合恶意特征,则有可能为恶意程序。
其中,恶意特征可以为病毒库中记录的特征,例如QVS引擎或云查杀引擎中提供的病毒库中记录的恶意特征。
例如,在1秒内向外发送大量的短信,后台自动下载文件,未经确认的大面积文件的删除等,都为恶意程序的典型行为特征。
在进行服务器判断时,具体可以为:
将指定行为上传给服务器,接收服务器根据所述指定行为对程序模块是否为恶意程序的判断结果。
云上的服务器,相对于本地的运算速度更快,不占用本地运算资源,可以存储更多的恶意行为特征,因此,将记录的指定行为上传给服务器进行判断的效果更好。
对于记录的行为,只需向云上的服务器上传指定行为即可,因为并不是所有的行为都为恶意行为。例如,桌面图标的换位行为,属于用户的日常操作行为,不包括恶意行为特征,因此是无需上传给服务器的,可以增加判断效率。
而对于经扫描确认为恶意程序的待扫描程序模块,优选的可以有如下处理方式:
将其在移动终端的操作系统中删除、禁止其运行或提示用户等。
本发明实施例提供了一种恶意程序的扫描方法,通过在ARM平台的操作系统中建立虚拟机操作系统环境,将待扫描的程序模块导入并运行,根据其行为判断是否为恶意程序,解决了ARM平台中由于机制的特性导致无法进行恶意程序扫描的问题,而将待扫描的程序模块置入虚拟操作系统环境中运行,既可以得到其行为以判断是否为恶意程序,也不会影响到用户真正的操作系统的安全性。
实施例三
图3是本发明一个实施例提供的一种恶意程序的扫描装置结构框图,该装置300包括:
建立模块310,配置为在ARM平台的操作系统中创建用于查毒的虚拟操作系统环境;
运行模块320,配置为将待扫描的程序模块导入虚拟操作系统环境中,并运行待扫描的程序模块;
监测模块330,配置为监测并获取待扫描的程序模块在虚拟操作系统环境中所发生的行为;
确定模块340,配置为根据发生的行为确定程序模块是否为恶意程序。
可选地,建立模块310包括:
虚拟机建立单元311,配置为在ARM平台的操作系统中建立虚拟机;
第一创建单元312,配置为在虚拟机中创建与ARM平台的文件系统相同类型的文件系统;
第二创建单元313,配置为创建用于支持待扫描的程序模块运行的进程、环境变量以及网络接口;
第三创建单元314,配置为创建用于待扫描的程序模块在虚拟操作系统环境使用的SHELL命令接口。
可选地,支持待扫描的程序模块运行的进程包括以下进程中的至少一种:
servicemanager、sh、sdcard、netd、mediaserver;
支持待扫描的程序模块运行的环境变量包括以下变量中的至少一种:
PATH、HOME、LANG、SHELL、HOSTNAME、USER;
支持待扫描的程序模块运行的网络接口包括以下接口中的至少一种:
建立TCP、UDP连接,读写、获取网络信息,断开、设置网络信息。
可选地,运行模块320包括:
程序解析单元321,配置为根据待扫描的程序模块的文件格式对待扫描的程序模块进行解析,得到待扫描的程序模块的导出表;
程序加载单元322,配置为根据导出表将待扫描的程序模块加载到内存中;
指令分析单元323,配置为在内存中对待扫描的程序模块按字节分析得到多个指令;
指令运行单元324,配置为运行多个指令。
可选地,待扫描的程序模块为共享库SO文件,SO文件的文件格式为可执行链接ELF格式。
可选地,监测模块330包括:
函数监测单元331,配置为对虚拟操作系统环境中的指定函数进行监测;
信号记录单元332,配置为当指定函数被调用时,记录指定函数返回的参数和值;
行为确定单元333,配置为根据上述指定函数返回的参数和值确定待扫描的程序模块在虚拟操作系统环境中所发生的行为。
可选地,指定函数包括以下中的任意一种:
文件系统函数:fopen fread fwrite fclose stat;
文件权限控制函数:chmod;
进程操作函数exec*系列:system、fork、exit;
线程控制函数:pthread_create;
内存控制函数:mmap munmap。
可选地,确定模块340包括:
行为筛选单元341,配置为筛选发生的行为中的指定行为;
恶意程序确定单元342,配置为根据指定行为确定程序模块是否为恶意程序。
可选地,指定行为包括如下任意一种:
弹窗行为、获取root权限的行为、文件操作行为、进程操作行为、短信发送行为、通话行为、通讯录操作行为、网络通信行为。
可选地,恶意程序确定单元342还配置为将指定行为上传给服务器,接收服务器根据指定行为对程序模块是否为恶意程序的判断结果。
本发明实施例提供了一种恶意程序的扫描装置,通过在ARM平台的操作系统中建立虚拟机操作系统环境,将待扫描的程序模块导入并运行,根据其行为判断是否为恶意程序,解决了ARM平台中由于机制的特性导致无法进行恶意程序扫描的问题,而将待扫描的程序模块置入虚拟操作系统环境中运行,既可以得到其行为以判断是否为恶意程序,也不会影响到用户真正的操作系统的安全性。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的恶意程序的扫描装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
本实施例还提供了A1.一种恶意程序的扫描方法,包括:在所述ARM平台的操作系统中创建用于查毒的虚拟操作系统环境;将待扫描的程序模块导入所述虚拟操作系统环境中,并运行所述待扫描的程序模块;监测并获取所述待扫描的程序模块在所述虚拟操作系统环境中所发生的行为;根据所述发生的行为确定所述程序模块是否为恶意程序。
A2.根据A1所述的方法,其中,所述在所述ARM平台的操作系统中创建用于查毒的虚拟操作系统环境,包括:在所述ARM平台的操作系统中建立虚拟机;在所述虚拟机中创建与所述ARM平台的文件系统相同类型的文件系统;创建用于支持待扫描的程序模块运行的进程、环境变量以及网络接口;创建用于所述待扫描的程序模块在所述虚拟操作系统环境使用的SHELL命令接口。
A3.根据A2所述的方法,其中,所述支持待扫描的程序模块运行的进程包括以下进程中的至少一种:servicemanager、sh、sdcard、netd、mediaserver;所述支持待扫描的程序模块运行的环境变量包括以下变量中的至少一种:PATH、HOME、LANG、SHELL、HOSTNAME、USER;所述支持待扫描的程序模块运行的网络接口包括以下接口中的至少一种:建立TCP、UDP连接,读写、获取网络信息,断开、设置网络信息。
A4.根据A1至A3任一所述的方法,其中,所述将待扫描的程序模块导入所述虚拟操作系统环境中,并运行所述待扫描的程序模块,包括:根据所述待扫描的程序模块的文件格式对所述待扫描的程序模块进行解析,得到所述待扫描的程序模块的导出表;根据所述导出表将所述待扫描的程序模块加载到内存中;在所述内存中对所述待扫描的程序模块按字节分析得到多个指令,并运行所述多个指令。
A5.根据A4所述的方法,其中,所述待扫描的程序模块为共享库SO文件,所述SO文件的文件格式为可执行链接ELF格式。
A6.根据A1至A5任一项所述的方法,其中,所述监测并获取所述待扫描的程序模块在所述虚拟操作系统环境中所发生的行为,包括:对所述虚拟操作系统环境中的指定函数进行监测;当所述指定函数被调用时,记录所述指定函数返回的参数和值;根据所述指定函数返回的参数和值确定所述待扫描的程序模块在所述虚拟操作系统环境中所发生的行为。
A7.根据A6所述的方法,其中,所述指定函数包括以下中的任意一种:文件系统函数:fopen fread fwrite fclose stat;文件权限控制函数:chmod;进程操作函数exec*系列:system、fork、exit;线程控制函数:pthread_create;内存控制函数:mmap munmap。
A8.根据A6或A7所述的方法,其中,所述根据所述发生的行为确定所述程序模块是否为恶意程序,包括:筛选所述发生的行为中的指定行为;根据所述指定行为确定所述程序模块是否为恶意程序。
A9.根据A8所述的方法,其中,所述指定行为包括如下任意一种:弹窗行为、获取root权限的行为、文件操作行为、进程操作行为、短信发送行为、通话行为、通讯录操作行为、网络通信行为。
A10.根据A8或A9所述的方法,其中,所述根据所述指定行为确定所述程序模块是否为恶意程序,包括:将所述指定行为上传给服务器;接收所述服务器根据所述指定行为对所述程序模块是否为恶意程序的判断结果。
本实施例还提供了B11.一种恶意程序的扫描装置,包括:建立模块,配置为在所述ARM平台的操作系统中创建用于查毒的虚拟操作系统环境;运行模块,配置为将待扫描的程序模块导入所述虚拟操作系统环境中,并运行所述待扫描的程序模块;监测模块,配置为监测并获取所述待扫描的程序模块在所述虚拟操作系统环境中所发生的行为;确定模块,配置为根据所述发生的行为确定所述程序模块是否为恶意程序。
B12.根据B11所述的装置,其中,所述建立模块包括:虚拟机建立单元,配置为在所述ARM平台的操作系统中建立虚拟机;第一创建单元,配置为在所述虚拟机中创建与所述ARM平台的文件系统相同类型的文件系统;第二创建单元,配置为创建用于支持待扫描的程序模块运行的进程、环境变量以及网络接口;第三创建单元,配置为创建用于所述待扫描的程序模块在所述虚拟操作系统环境使用的SHELL命令接口。
B13.根据B12所述的装置,其中,所述支持待扫描的程序模块运行的进程包括以下进程中的至少一种:servicemanager、sh、sdcard、netd、mediaserver;所述支持待扫描的程序模块运行的环境变量包括以下变量中的至少一种:PATH、HOME、LANG、SHELL、HOSTNAME、USER;所述支持待扫描的程序模块运行的网络接口包括以下接口中的至少一种:建立TCP、UDP连接,读写、获取网络信息,断开、设置网络信息。
B14.根据B11至B13任一项所述的装置,其中,所述运行模块包括:程序解析单元,配置为根据所述待扫描的程序模块的文件格式对所述待扫描的程序模块进行解析,得到所述待扫描的程序模块的导出表;程序加载单元,配置为根据所述导出表将所述待扫描的程序模块加载到内存中;指令分析单元,配置为在所述内存中对所述待扫描的程序模块按字节分析得到多个指令;指令运行单元,配置为运行所述多个指令。
B15.根据B14所述的装置,其中,所述待扫描的程序模块为共享库SO文件,所述SO文件的文件格式为可执行链接ELF格式。
B16.根据B11至B15任一项所述的装置,其中,所述监测模块包括:函数监测单元,配置为对所述虚拟操作系统环境中的指定函数进行监测;信号记录单元,配置为当所述指定函数被调用时,记录所述指定函数返回的参数和值;行为确定单元,配置为根据所述指定函数返回的参数和值确定所述待扫描的程序模块在所述虚拟操作系统环境中所发生的行为。
B17.根据B16所述的装置,其中,所述指定函数包括以下中的任意一种:文件系统函数:fopen fread fwrite fclose stat;文件权限控制函数:chmod;进程操作函数exec*系列:system、fork、exit;线程控制函数:pthread_create;内存控制函数:mmap munmap。
B18.根据B16或B17所述的装置,其中,所述确定模块包括:行为筛选单元,配置为筛选所述发生的行为中的指定行为;恶意程序确定单元,配置为根据所述指定行为确定所述程序模块是否为恶意程序。
B19.根据B18所述的装置,其中,所述指定行为包括如下任意一种:弹窗行为、获取root权限的行为、文件操作行为、进程操作行为、短信发送行为、通话行为、通讯录操作行为、网络通信行为。
B20.根据B18或B19所述的装置,其中,所述恶意程序确定单元还配置为将所述指定行为上传给服务器,接收所述服务器根据所述指定行为对所述程序模块是否为恶意程序的判断结果。