查杀恶意程序的方法和装置
技术领域
本发明涉及计算机领域,具体涉及一种查杀恶意程序的方法和装置。
背景技术
目前,移动终端应用越来越广泛,针对移动终端的恶意程序也越来越多,且越来越难以清除。
安卓操作系统为移动终端的一种主流操作系统,它的系统文件boot.img以压缩包的方式存储于BOOT分区中,当终端启动时,系统文件被解压缩释放到内存中,以完成操作系统的加载。
这里所说的ROM,指的是手机、平板电脑等各类移动设备自己的系统固件,用户通过对手机解锁之后,可以更换设备的系统固件。于是就有了“刷机”这一说法,“刷机”其实就是向移动设备写入新的ROM,即新的系统固件。在定义移动设备系统固件(即制作新的手机ROM)的过程中已经被捆绑进去的这一类病毒程序,我们定义为ROM病毒。
例如,目前存在一种恶意程序“不死木马”等ROM病毒,为了追求商业利益,在移动终端被销售前,经销商将它写入到系统文件中。该恶意程序在启动后,可以在后台自动下载安装经销商指定的apk安装文件,以进行软件推广,还有的情况是,很多刷机用户会来查找对应机型的ROM,某些制毒者通常会开设一些地下下载站提供下载链接又或者在一些手机软件站申请录入,并把ROM修改成“**机型极速优化版ROM”之类具有诱导性的名称进行传播。这些恶意应用会私自发短信定制SP业务,偷偷联网消耗流量,然后还会乱弹广告干扰用户。这无疑造成了用户的困扰。
而发明人发现,ROM病毒权限较高,具有跟系统文件一样的权限属性,目前的杀毒方法,只能清除其在内存中的文件,在终端重启后,其会再次由boot.img中被解压缩释放到内存中,例如,查杀该病毒有可能显示“Series60kinsSupport:ROM软件无法删除”,目前并没有从根本上清除该病毒的有效方法。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种查杀恶意程序的方法和相应地装置。
依据本发明的一个方面,提供了一种查杀恶意程序的方法,包括:
获取终端操作系统中的指定文件;
扫描所述指定文件中是否包括预设的恶意程序特征;
当所述指定文件中包含预设的恶意程序特征时,执行重刷所述操作系统的系统分区的操作;
其中,所述指定文件存储于所述系统分区中。
可选地,所述系统分区为BOOT分区,所述指定文件为存储于所述BOOT分区中的系统文件压缩包。
可选地,所述获取终端操作系统中的指定文件,包括:
获取终端的机型信息;
根据所述机型信息获取所述终端的系统文件压缩包的压缩格式;
根据所述压缩格式解压所述系统文件压缩包,得到解压缩后的文件为指定文件。
可选地,所述扫描所述指定文件中是否包括预设的恶意程序特征,包括:
提取所述解压缩后的每一个文件的文件特征值,判断是否包含与预设的特征值相匹配的文件。
可选地,所述扫描所述指定文件中是否包括预设的恶意程序特征,包括:
提取所述解压缩后的每一个文件的文件特征值,并将所述文件特征值发送给云服务器;
其中,所述文件特征值用于所述云服务器判断所述指定文件中是否包含与预设的特征值相匹配的文件。
可选地,所述扫描所述指定文件中是否包括预设的恶意程序特征,包括:
扫描用于记录所述操作系统的启动项的配置文件,读取所述配置文件记录的每一个自启动程序的文件路径;
提取所述文件路径下的每一个文件的文件特征值,判断是否包含与预设的特征值相匹配的文件。
可选地,所述当所述指定文件中包含预设的恶意程序特征时,执行重刷所述操作系统的系统分区的操作,包括:
删除所述解压缩后的文件中具有恶意程序特征的文件;
按照所述压缩格式将删除具有恶意程序特征的文件后的系统文件进行压缩,得到新系统压文件缩包;
使用所述新系统文件压缩包覆盖所述终端的BOOT分区。
可选地,所述使用所述新系统文件压缩包覆盖所述终端的BOOT分区,包括:
根据所述终端的机型信息获取所述终端的操作系统文件的校验算法;
使用所述校验算法对所述新系统文件压缩包进行计算得到校验值;
在所述终端的BOOT分区依次写入所述校验值和信系统文件压缩包。
可选地,在所述获取终端操作系统中的指定文件之前,所述方法还包括:
获取所述终端的机型信息;
根据所述机型信息获取所述终端的BOOT分区的位置。
可选地,在所述获取终端操作系统中的指定文件之前,所述方法还包括:
获取所述终端的分区表;
根据所述分区表获取所述终端的BOOT分区的位置。
可选地,所述扫描所述指定文件中是否包括预设的恶意程序特征,包括:
检测所述指定文件中是否存在预设行为的文件。
可选地,所述预设行为包括:
删除自身文件,但所述文件对应的进程保持运行;或者,
将自身的代码注入到系统进程。
可选地,当所述指定文件中包含预设的恶意程序特征时,所述方法还包括:
将由具有预设恶意程序特征的文件生成的可运行文件删除,并在所述可运行文件的相同位置生成与所述可运行文件同名的文件,并置为只可读状态。
依据本发明的一个方面,还提供一种查杀恶意程序的装置,包括:
文件获取模块,适于获取终端操作系统中的指定文件;
程序扫描模块,适于扫描所述指定文件中是否包括预设的恶意程序特征;
操作执行模块,适于当所述指定文件中包含预设的恶意程序特征时,执行重刷所述操作系统的系统分区的操作;
其中,所述指定文件存储于所述系统分区中。
可选地,所述系统分区为BOOT分区,所述指定文件为存储于所述BOOT分区中的系统文件压缩包。
可选地,所述文件获取模块适于按照如下方式获取终端操作系统中的指定文件:
获取终端的机型信息;
根据所述机型信息获取所述终端的系统文件压缩包的压缩格式;
根据所述压缩格式解压所述系统文件压缩包,得到解压缩后的文件为指定文件。
可选地,所述程序扫描模块适于提取所述解压缩后的每一个文件的文件特征值,判断是否包含与预设的特征值相匹配的文件。
可选地,所述程序扫描模块适于提取所述解压缩后的每一个文件的文件特征值,并将所述文件特征值发送给云服务器;
其中,所述文件特征值用于所述云服务器判断所述指定文件中是否包含与预设的特征值相匹配的文件。
可选地,所述程序扫描模块适于扫描用于记录所述操作系统的启动项的配置文件,读取所述配置文件记录的每一个自启动程序的文件路径,提取所述文件路径下的每一个文件的文件特征值,判断是否包含与预设的特征值相匹配的文件。
可选地,所述操作执行模块适于按照如下方式执行重刷所述操作系统的系统分区的操作:
删除所述解压缩后的文件中具有恶意程序特征的文件;
按照所述压缩格式将删除具有恶意程序特征的文件后的系统文件进行压缩,得到新系统压文件缩包;
使用所述新系统文件压缩包覆盖所述终端的BOOT分区。
可选地,所述操作执行模块适于按照如下方式使用所述新系统文件压缩包覆盖所述终端的BOOT分区:
根据所述终端的机型信息获取所述终端的操作系统文件的校验算法;
使用所述校验算法对所述新系统文件压缩包进行计算得到校验值;
在所述终端的BOOT分区依次写入所述校验值和信系统文件压缩包。
可选地,所述装置还包括:
机型信息获取模块,适于在所述获取终端操作系统中的指定文件之前,获取所述终端的机型信息;
第一位置获取模块,适于根据所述机型信息获取所述终端的BOOT分区的位置。
可选地,所述装置还包括:
分区表获取模块,适于在所述获取终端操作系统中的指定文件之前,获取所述终端的分区表;
第二位置获取模块,适于根据所述分区表获取所述终端的BOOT分区的位置。
可选地,所述程序扫描模块还适于检测所述指定文件中是否存在预设行为的文件。
可选地,所述预设行为包括:
删除自身文件,但所述文件对应的进程保持运行;或者,
将自身的代码注入到系统进程。
可选地,当所述指定文件中包含预设的恶意程序特征时,所述装置还包括:
状态设置模块,适于将由具有预设恶意程序特征的文件生成的可运行文件删除,并在所述可运行文件的相同位置生成与所述可运行文件同名的文件,并置为只可读状态。
本发明提供了一种查杀恶意程序的方法和装置,当移动终端中的文件保护有预设的恶意程序特征时,通过执行重刷操作系统分区的操作,能够彻底清除ROM病毒等寄存于操作系统分区中的恶意程序,解决了ROM病毒类的恶意程序不能彻底查杀的问题,保护了用户的数据财产安全,防止用户受到恶意程序的骚扰,可以防止恶意程序扣费,偷跑流量,弹出各种垃圾广告,窃取用户隐私,以及保证用户手机支付的安全等,对移动终端杀毒引擎无法正常查杀的恶意程序可以进行彻底的清除。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本发明一个实施例提供的一种查杀恶意程序的方法流程图;
图2是本发明一个实施例提供的一种查杀恶意程序的具体方法流程图;
图3是本发明一个实施例提供的一种提示用户在刷机前进行数据备份的效果图;
图4是本发明一个实施例提供的一种查杀流程前的提示方式的效果图;
图5是本发明一个实施例提供的一种重刷系统时的效果图;
图6是本发明一个实施例提供的通过重刷系统分区完成恶意程序清除后的效果图;
图7是本发明一个实施例提供的一种查杀恶意程序的装置结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应该被这里阐述的实施例所限制。相反,提供这些实施例是为了能够透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
实施例一
本发明实施例提供了一种查杀恶意程序的方法。该方法通过对移动终端进行重刷机可以彻底清除一些顽固型的恶意程序,其可以通过杀毒软件、杀毒软件的急救系统等软件等在PC机上进行实现。
其中,在一些查杀方式中(例如急救箱),可以选择对恶意程序进行免疫处理,但是这种方式只能消除恶意程序的恶意行为,却并没有将恶意程序从系统中清除,而本发明实施例所提供的方式,可以清除这一顽固型的恶意程序。
图1是本发明一个实施例提供的一种查杀恶意程序的方法的流程图,该方法包括步骤S102至S106。
S102,获取终端操作系统中的指定文件。
S104,扫描指定文件中是否包括预设的恶意程序特征。
S106,当指定文件中包含预设的恶意程序特征时,执行重刷操作系统的系统分区的操作。
其中,指定文件存储于系统分区中。
本发明实施例提供了一种查杀恶意程序的方法,当移动终端中的文件保护有预设的恶意程序特征时,通过执行重刷操作系统分区的操作,能够彻底清除ROM病毒等寄存于操作系统分区中的恶意程序,解决了ROM病毒类的恶意程序不能彻底查杀的问题,保护了用户的数据财产安全,防止用户受到恶意程序的骚扰,可以防止恶意程序扣费,偷跑流量,弹出各种垃圾广告,窃取用户隐私,以及保证用户手机支付的安全等,对移动终端杀毒引擎无法正常查杀的恶意程序可以进行彻底的清除。
实施例二
本实施例为上述实施例一的一种具体应用场景,通过本实施例,能够更加清楚、具体地阐述本发明所提供的方法。在本实施例中,以通过安装于PC机中工具箱(例如可以为急救箱,在移动终端接入PC后,急救箱自动启动相应的查杀程序)对移动终端中的恶意程序进行查杀为例进行说明。
图2是本发明一个实施例提供的一种查杀恶意程序的具体方法流程图,该方法包括步骤S201至S206。
需要说明的是,由于本实施例所提供的方法需要通过对移动终端进行重新刷机的方式完成清除恶意程序,因此需要将移动终端连接到PC机后执行本方法的流程。
以Android为例,移动终端与PC机连接的方式如下:
(1)移动终端需要打开USB调试模式,以允许PC机对移动终端进行通信和控制。Android系统默认是关闭USB调试模式的,因此需要用户手动打开。优选地,可以增加一个用户引导,提示用户开启USB调试模式的的方法。
其中,每种类型的移动终端对于开启USB调试模式的方式不同,因此可以总结市面上的Android移动终端打开USB调试模式的方法,根据用户的机型进行提示。
(2)打开USB调试之后,使用数据线把移动终端连接到PC机上。PC中的查毒工具(例如急救箱)会枚举USB设备,并判断是否是移动终端设备,如果是,就试图通过socket与手机内部的ADB(Android Debug Bridge,调试桥)Server进程通信,并完成移动终端与PC机的通信工作的初始化。
(3)初始化成功之后,查毒工具向移动终端中发送一个ELF或APK文件,并运行该ELF或APK文件,PC端的查毒工具即可通过该文件与移动终端进行通信,以完成对于恶意程序的查杀操作。
在完成PC机与移动终端的连接后,即可开始对于恶意程序的查杀流程。
其中,由于本发明实施例提供的方法需要通过刷机的方式对恶意程序进行彻底清除,为了避免刷机可能对用户数据造成损失,可以提示用户先对移动终端中的数据进行备份。例如,图3所示即为一种提示用户在刷机前进行数据备份的效果图。
并且,在用户开始查杀流程前,提示用户保持USB连接,图4所示,即为一种查杀流程前的提示方式。
首先执行步骤S201,获取移动终端的机型信息。
需要说明的是,移动终端的存储空间中设置有BOOT分区,其操作系统文件保存在BOOT分区中,并且操作系统文件以压缩包的形式保存在BOOT分区中。
在本实施例中,以安卓操作系统为例,则系统文件压缩包为boot.img。
例如,不死木马就是被写入到boot.img中。一般在操作系统启动时,会首先将boot.img解压缩,并释放到内存中,继而进行操作系统的启动,因此,现有的杀毒方式是不能清除不死木马的,在操作系统重启后,不死木马会再次被释放到移动终端的内存中。
在boot.img中,包括有两部分:内核kernel及根目录(initramdisk);其中,所述根目录下包含有服务目录及引导配置文件inti.rc,所述服务目录下包含有服务文件。其中,所述服务目录可包括有sbin目录。
一般的安卓操作系统的启动过程如下:
首先,接收到开机或重启触发指令后,以只读的方式加载引导分区中的所述boot.img。然后,通过所述boot.img的kernel读取所述根目录下的inti.rc中的配置信息,用以在操作系统启动时,指示操作系统中的程序执行什么操作,例如指示屏幕显示开机动画等。
其中,对于不同的移动终端,由于生产厂家不同、使用的操作系统不同,其BOOT分区的存储位置不同、系统文件压缩包boot.img的压缩格式也不同,因此,进行重新刷机必须先获取其机型信息以获知BOOT分区的存储位置。
在获取BOOT分区的位置时,还可以根据移动终端中的分区表获取其BOOT分区的位置。
其中,一般情况下,分区表位于移动终端的磁盘(存储空间)起始处的一个或者几个扇区内,只要读取这几个扇区,然后按照特定格式解析,就能得到分区表。不同格式的磁盘需要适配工作,很多厂商对于其移动终端的磁盘格式采取自定义的方式,另外也有小部分厂商使用MBR(Main Boot Record,主引导记录)和GPT(GUIDPartition Table,GUID磁碟分割表)格式的磁盘。
以安卓操作系统的启动为例进行说明,在移动终端加电后,其会首先加载CPU中的程序代码Bootloader,通过该代码,引导找到BOOT分区,并将BOOT分区中的系统文件boot.img读取到内存中,并将其中的kernel和ramdisk进行解压缩,首先运行其中的kernel文件,加载linux内核(安卓操作系统采用linux内核),在操作系统的内核启动后,运行ramdisk中的程序,进而完成整个操作系统的启动。
需要说明的是,分区表的存储位置以及磁盘的存储格式都是可以自定义的,所以不同手机和操作系统的分区表的位置是不同的,需要通过适配来完成。
在一般的情况下,移动终端可能存在多个分区,则可逐个分区进行查找,确定BOOT分区的位置。
移动终端的机型信息,可以包括有移动终端的品牌、操作系统的型号、内核版本号等,例如可以是:
华为P6、操作系统Emotion UI、内核版本安卓4.2.2;
魅族MX4、操作系统Flyme 4.0、内核版本安卓4.4.1。
在获取移动终端的机型信息后,执行步骤S202,根据该移动终端的机型信息获取该移动终端的BOOT分区的存储位置,以及boot.img的压缩格式。
其中,移动终端的生产厂家对其BOOT分区的位置的定义不同,主要是为了保护其操作系统不会被恶意修改。在本发明实施例中,可以通过适配的方法获取不同的机型信息的移动终端的BOOT分区的位置、boot.img的压缩格式,并保存到数据库中。
当需要得知移动终端的BOOT分区的位置和boot.img的压缩格式时,只需要通过机型信息在数据库中查询即可。
对于寻找BOOT分区的位置,以Google的Android手机Nexus为例进行说明,Nexus系统的手机在系统启动时会枚举设备,找到BOOT分区对应的设备,并在proc内存文件系统的/dev/blocks目录创建一个名为“BOOT”的符号链接,只要枚举/dev/blocks目录就可以得到boot分区对应的设备。
而对于获取boot.img的格式,仍以Google的Android手机Nexus为例,它的boot.img文件的格式在Android源码中是可以找到的,只要按照这个格式解析就可以了,其他一些厂商会自定义格式,需要适配。
接着,执行步骤S203。在步骤S203中,通过在步骤S202中得到的BOOT分区的位置读取得到boot.img,并根据其压缩格式进行解压缩,得到系统文件。
得到系统文件,也即需要得到kernel与initramdisk。在步骤S202中确定boot.img的格式之后,就可以解压读取到initramdisk。
本步骤S203仍以Google的Android手机Nexus手机为例,它的initramdisk是先用以cpio格式打包,然后再使用gzip格式压缩的,只要在程序中先按照gzip格式解压缩,然后再按照cpio格式解包就可以得到里面所有的文件,然后就可以进入下面步骤的查杀操作。
其中,其他手机的可能会存在XZ、LZMA、LZO等压缩格式,需要先判断是哪种压缩格式,然后再使用按照相应的格式进行解压。
在得到系统文件后,即进行恶意程序扫描的步骤,即执行步骤S204,扫描系统文件中是否存在预设的恶意程序特征,如果是,则执行步骤S205,如果不是,则执行步骤S206。
在本实施例中,扫描系统文件中是否存在预设的恶意程序特征,可以包括如下两种方式:
第一种方式,根据系统文件中用于记录启动项的配置文件,查找可自启动的程序的文件路径,提前这些文件路径中的每一个文件的文件特征值,判断是否存在与预设文件特征值匹配的文件。
需要说明的是,自启动程序会有一些项目属性,项目展示的属性包含:软件ICON,软件名称,自启权限,移除按钮。在一般情况下,操作系统会提供查看自启动程序的功能,点击相应的按钮后,启动项将出现在“自启动软件”项目下。并且用户可自定义自启动的应用程序,若用户点击添加,添加了某款具有自启权利的软件,则该项软件将出现在“自启动软件”项目下。
但是,为了实现对于操作系统的控制,一些恶意程序也会将自身加入到自启动项中,使得每次用户开机时,都可以运行自身,以执行其预设的恶意行为。因此,可通过扫描自启动程序进行恶意程序的查找。
对于一些恶意程序,其还具有修改配置文件,将自身置为自启动程序的行为,因此,还可以通过注入和java hook等手段,实时监听各个软件的启动行为,并能够分析出导致该软件被唤醒的组件。在判定是否为软件的自启行为时,会遵循以下规则:(1)可视化组件(activity组件)引发的启动行为不能被拦截,因为这种行为多由用户触发,并非软件自启;(2)针对broadcast组件,则分两种情况处理。如果包含该broadcast组件的软件已经处于运行状态,则认为当前的启动行为并非自启,不需要被拦截,这种情况一般发生在多进程Android软件中。反之,则认为是自启;(3)针对service组件的判别方式与broadcast组件类似,但是service组件的重要性一般要高于broadcast组件,不恰当的拦截极有可能导致某些软件运行异常,为了避免这种情况,当service组件引发的自启行为被拦截时,我们会给予提示,引导用户完成预期的操作;(4)对于provider组件引发的启动行为,一般不拦截。通过对这些规则的应用,可以较准确的判定软件的自启行为,同时又不对用户的正常使用造成困扰。其中,每一种病毒或木马文件,都可计算得到其文件特征值,并放入病毒库中。在进行恶意程序扫描时,通过相同的方式,计算得到待扫描文件的文件特征值,并与病毒库中的文件特征值进行匹配。如果存在匹配的文件特征值,则认为待扫描文件为病毒文件。
具体地,提取文件的特征值可采用多种方法,例如匹配ELF(Executable andLinking Format,可执行链接文件)文件中可执行代码的机器指令,具体在提取文件的特征值时,可以只提取文件中一段指定长度的数据(可执行代码的指令或者是其中一部分)。
例如,可以采用如下方式提取文件的特征值:
以Android操作系统为例,大部分Android应用都主要是由Java语言编写,编译之后生成了Dalvik虚拟机的字节码(byte code),打包成了classes.dex文件。解析classes.dex文件,反编译其字节码,就可以得到应用程序所要执行的指令。
可以挑选指令中能代表恶意软件特征的指令作为特征码,当发现classes.dex文件中包含这样的特征码时,就作为一个特征。例如,Android.Geinimi木马为了隐藏自己,将一些关键数据(如木马服务器信息)加密之后写入代码中,这些被加密的数据反而成为了检测识别它的特征。用dexdump工具分析classes.dex文件可看到输出中包含以下片段:
00d00c:0003010010000000553502348664...|02d4:array-data(12units)
00d024:00030100100000001bea c301 eadf...|02e0:array-data(12 units)
上述片段就可以提取作为检测识别的特征。
当然,dexdump工具只是显示这些特征数据的手段之一,也可以通过其他方式自行实现解析、反编译和识别classes.dex文件的功能。
综上所述,样本一不包含ELF文件,所以没有提取到ELF特征。
从样本一中提取了上述特征之后,假设安全识别库中存在以下特征记录:
特征一:packageName=com.wbs
特征二:无
特征三:MD5(signature[0])=294f08ae04307a649322524713318543
特征一+特征三:安全级别为“木马”
当检测流程走到“找到包含特征一、特征三的木马”时,找到记录,返回结果为“木马”。
该第一种方式可通过多种杀毒引擎实现,例如可以为AVE引擎、QVS(Qihoo VirusScan,奇虎病毒扫描)引擎,或者QVS结合云查杀引擎。
需要说明的是,除了扫描自启动程序的路径下的每一个文件,还可以采取对全部系统文件进行扫描的方式。
其中,在本地或云服务器的恶意程序识别库中,预置了多条特征记录(即特征值),其中,单个特征信息可以构成一条特征记录,多个特征信息的组合也可以构成一条特征记录。例如,一个安全识别库中预置了几十条特征记录,其中,第一条特征记录中列出了某种病毒的Android安装包包名,第二条特征记录中列出了某个正常应用的Android安装包版本号及其数字签名的MD5值,第三条特征记录中列出了某个正常应用的Android安装包包名及其receiver特征,第四条特征记录中列出了某种木马的Android安装包包名、版本号及其ELF文件中的特定字符串,等等。
第二种方式,提取系统文件中的每一个文件的文件特征值,并将文件特征值发送给云服务器进行扫描。
其中,云服务器保存有庞大的病毒库,包含有众多的恶意程序的文件特征值,除了可以对不死木马进行扫描,还可以对其他恶意程序进行扫描。
并且,在通过特征值扫描的方式中,可以对扫描的文件进行分类,例如可以分为:安全、危险、谨慎和木马四个安全级别。其中,各种安全级别的定义如下:
安全:该应用是一个正常的应用,没有任何威胁用户手机安全的行为;
危险:该应用存在安全风险,有可能该应用本身就是恶意软件;也有可能该应用本来是正规公司发布的正常软件,但是因为存在安全漏洞,导致用户的隐私、手机安全受到威胁;
谨慎:该应用是一个正常的应用,但是存在一些问题,例如会让用户不小心被扣费,或者有不友好的广告遭到投诉等;当发现这类应用之后,会提示用户谨慎使用并告知该应用可能的行为,但是由用户自行决定是否清除该应用;
木马:该应用是病毒、木马或者其他恶意软件,此处为了简单统称为木马,但并不表示该应用仅仅是木马。
其中,通过云端对文件进行检测,除了检测待扫描文件的安全级别外,还可以包括如下信息:
Root代码:检测文件是否会通过代码获取手机的root权限。
Kungfu木马:检测文件中是否嵌入了Kungfu木马。
包含子包:筛选文件中是否含有子包的样本。
恶意特征:筛选文件中是否嵌入恶意特征。
黑白证书:检测文件处于什么安全证书下,其中,安全证书可包括白证书、灰白证书、灰证书、灰黑证书、黑证书、未知证书等。
第三方检测:检测文件是否被第三方杀软判定为恶意。
推送广告:检测文件中是否嵌入推送广告sdk。
操作人员:检测对文件做最后修改的操作id。
恶意网址:检测文件中是否嵌入恶意网址。
工具root:检测文件中是否嵌入了利用溢出漏洞文件来获取root的代码。
其中,在云查杀中,可选择对上述信息进行扫描,以帮助确定代扫描的文件是否为恶意程序。
为了实现本发明实施例所提供的方法,本方法所提供的恶意程序查杀系统可包括多个程序模块进行实现。
例如:
病毒信息块(irus info)
病毒信息块提供此条记录针对的病毒的分类、运行平台、名字、变种号等信息;
扫描块(scan block)
扫描块,用于实现步骤S204所述的方法,例如使用AVScript脚本语言的查毒方法;
杀毒块(kill block)
杀毒块,用于进行恶意程序的清除,例如可以使用AVScript脚本语言的杀毒方法,也可以使用查毒方法。
在上述两种检测方式实施时,更优选的方案是:
本地样本库优先检测完后,无论检测结果如何,均再上传到云服务器重新检测,然后将本地与云服务器的检测结果合并;
或,
本地优先检测,如果对提取的特征全部检测出结果,则无需上传服务器再检测,但如果本地有无法识别的特征,则再上传服务器检测,最后将两种检测结果合并。
其中,检测结果记录为程序的行为描述信息,例如可采用如下方式:
行为描述信息可以用32位(0~31)整数表示,可以表示出各个安全级别的软件行为描述。其中,可以选取一位表示标志位,标志位为0表示没有恶意行为,如果有恶意行为,则可以定义:第1位代表“后台偷偷下载”,第2位代表“私自发送短信”,第3位代表“包含广告”,等等。即,每一位都可以单独表示一种软件的行为描述。
例如,对于检测为“木马级别”的Android应用程序,如果恶意行为=3,翻译成二进制就是11,第1位=1,第2位=1,表示的恶意行为是:同时具有后台偷偷下载和私自发送短信的行为。
再例如,对于检测为“谨慎级别”的Android应用程序,如果行为描述=4,翻译成二进制就是100,第1位=0,第2位=0,第2位=1,表示的行为是:包含广告。由于这个广告可能是用户允许的,也可能是用户不允许的,所以会提示用户谨慎使用,由用户自行决定是否清除。
优选地,在进行云查杀时,优先的在PC机上对移动终端中的文件进行查杀,可以节省手机的流量。在进行云查杀时,需要将系统中的文件的特征值传送到云端,一般手机等移动终端,在不连接WiFi的情况下,则需要耗费流量。而如果通过PC机对移动终端中的文件进行云查杀,则可将手机中的文件的特征值由PC机直接传送给云端,而不需耗费手机的流量。
除了上述两种方式外,在操作系统启动后,还可以通过判断操作系统中是否存在预设行为来判断是否存在恶意程序,具体可以包括:
判断操作系统中是否存在删除自身文件,但是文件对应的进程仍保持运行的行为;或,
文件将自身的代码注入到系统进程中的行为。
需要说明的是,对于判断系统进程中是否发生了注入行为,一般采取如下方式:
扫描预设的进程模块,确认是否有病毒注入。
在Android系统中存在几个关键进程(例如,system_server),一般恶意代码注入只发生在这几个进程中。
上述步骤S204中提及了当判断得出系统文件中包括有恶意程序时,执行步骤S205,执行重刷移动终端的BOOT分区的操作。
其中,重刷移动终端的BOOT分区的操作,具体包括如下步骤:
首先,删除系统文件中具有恶意程序特征的文件;
其次,按照boot.img的压缩格式将删除具有恶意程序特征的文件后的系统文件进行压缩,得到新的boot.img;
最后,使用新的boot.img覆盖移动终端的BOOT分区。
需要说明的是,为了防止BOOT分区中的系统文件被修改,一般的厂商还会在BOOT分区中保存对于boot.img的校验值,在操作系统启动时,会首先对boot.img进行计算得到校验值,并与预先保存的校验值进行比对,如果不相同,则不能启动操作系统。
因此,本实施例所提供的方法还包括如下操作:
根据移动终端的机型信息获取其boot.img的校验算法,并根据校验算法重新计算新的boot.img的校验值,替换掉重刷前保存的校验值,并将新的校验值以及boot.img一起写入到BOOT分区中。
其中,校验算法可以是MD5(Message Digest Algorithm 5,消息摘要算法第五版)、SHA(Secure Hash Algorithm,安全哈希算法)、RSA算法等。
除了对BOOT分区进行重刷外,还可以采用如下方式对恶意程序进行查杀:
将由具有恶意程序特征的文件生成的可运行文件置为只可读状态。
具体地,在进行刷机时,对于支持Fastboot的手机,可以使用Fastboot的刷机工具对手机的BOOT分区进行重刷。
其中,Fastboot为安卓手机提供的一种底层的刷机模式。
而有些手机不支持Fastboot进行刷机,需要调用刷机工具完成刷机,调用刷机工具的具体工作方式如下:
将压缩好的boot.img文件发送到手机存储空间中,通过手机的操作系统中负责写入系统文件的函数写入到BOOT分区中,把原BOOT分区中的文件覆盖。
其中,图5所示即为重刷系统时的效果图。
对于将boot.img文件重新写入到BOOT分区的方式,具体说明如下:
(1)对于支持Fastboot的手机,在手机中的bootloader程序(在操作系统内核运行之前的引导程序)中有一个Fastboot服务器,Fastboot通过与该服务器通信即可完成刷机操作。Fastboot发出一条刷机指令,指明要刷的分区(例如BOOT),并把对应分区的一个完成磁盘影像,传入到移动终端中,Fastboot服务器拿到这个磁盘影像(例如boot.img),就用这个影像完全覆盖对应分区的数据。
(2)对于不支持Fastboot的手机,则需要自己完成刷机工具,将磁盘影像刷写到目标磁盘分区(先找到boot分区对应到磁盘设备,然后将磁盘影像中的数据,并将数据一块一块的拷贝过去,覆盖目标磁盘中的数据。
需要说明的是,一般情况下,恶意程序的恶意行为主要包括通过后台下载应用程序、下载弹出广告等,其恶意行为通过其生成的可执行文件进行执行。因此,将其置为只可读状态,虽不能清除恶意程序,却能使其丧失执行恶意行为的能力,从而不对用户产生威胁或骚扰。
其中,还可以通过病毒检测脚本确认待扫描文件是否为病毒文件,当为病毒文件时则可以调用杀毒方法对病毒文件进行杀毒。杀毒方法主要分为两类:一类是针对文件本身就是病毒木马,杀毒只需要直接删除目标文件即可;另一类是针对感染型病毒(其会将自己的病毒体代码插入到正常的可执行文件中,并在运行之前先取得控制权),通过组合使用杀毒方法进行清除。
在完成BOOT分区的重刷后,即完成了对于顽固型恶意程序的清除,图6所示即为一种通过重刷系统分区完成恶意程序清除后的效果图。
上述步骤S204中提及了当不存在具有预设的恶意程序特征的文件时,执行步骤S206,结束扫描操作。
需要说明的是,本实施例仅以查杀恶意程序为例进行说明,其方法流程同样适用于其他存储与操作系统分区中的恶意程序。
另外,处理通过重刷BOOT分区的方式清除恶意程序,还可以采取免疫的方式对恶意程序进行查杀,具体说明如下:
还可以采用免疫的方法来杀毒,一般方法是:
通过逆向分析恶意程序的执行文件,查找其逻辑漏洞,使恶意程序在进行恶意行为之前就退出。
例如,不死木马的一个变种,imei_chk会创建一个文件,通过该文件执行APP下载、广告推送等,但是如果该文件创建失败,就退出,正常情况下,这个的文件创建操作是能成功的。因此,我们可以采用免疫的方式使这个木马失效:
删除该木马创建的文件,然后在同一位置创建一个同名文件,并且将这个文件设置上只读属性。通过该操作,即可使得木马无法再修改或者创建同一个文件,下次病毒再执行的时候,发现该同名文件后,木马就直接退出了,不能继续执行后面的恶意行为。
本发明实施例提供了一种查杀恶意程序的方法,当移动终端中的文件保护有预设的恶意程序特征时,通过执行重刷操作系统分区的操作,能够彻底清除ROM病毒等寄存于操作系统分区中的恶意程序,解决了ROM病毒类的恶意程序不能彻底查杀的问题,保护了用户的数据财产安全,防止用户受到ROM病毒的骚扰,可以防止恶意程序扣费,偷跑流量,弹出各种垃圾广告,窃取用户隐私,以及保证用户手机支付的安全等,对移动终端杀毒引擎无法正常查杀的恶意程序可以进行彻底的清除。
实施例三
图7是本发明一个实施例提供的一种查杀恶意程序的装置结构框图。该装置700包括:
文件获取模块710,适于获取终端操作系统中的指定文件;
程序扫描模块720,适于扫描指定文件中是否包括预设的恶意程序特征;
操作执行模块730,适于当指定文件中包含预设的恶意程序特征时,执行重刷操作系统的系统分区的操作;
其中,指定文件存储于系统分区中。
可选地,系统分区为BOOT分区,指定文件为存储于BOOT分区中的系统文件压缩包。
可选地,文件获取模块710适于按照如下方式获取终端操作系统中的指定文件:
获取终端的机型信息;
根据机型信息获取终端的系统文件压缩包的压缩格式;
根据压缩格式解压系统文件压缩包,得到解压缩后的文件为指定文件。
可选地,程序扫描模块720适于提取解压缩后的每一个文件的文件特征值,判断是否包含与预设的特征值相匹配的文件。
可选地,程序扫描模块720适于提取解压缩后的每一个文件的文件特征值,并将文件特征值发送给云服务器;
其中,文件特征值用于云服务器判断指定文件中是否包含与预设的特征值相匹配的文件。
可选地,程序扫描模块720适于扫描用于记录操作系统的启动项的配置文件,读取所述配置文件记录的每一个自启动程序的文件路径,提取所述文件路径下的每一个文件的文件特征值,判断是否包含与预设的特征值相匹配的文件。
可选地,操作执行模块730适于按照如下方式执行重刷操作系统的系统分区的操作:
删除解压缩后的文件中具有恶意程序特征的文件;
按照压缩格式将删除具有恶意程序特征的文件后的系统文件进行压缩,得到新系统压文件缩包;
使用新系统文件压缩包覆盖终端的BOOT分区。
可选地,操作执行模块730适于按照如下方式使用新系统文件压缩包覆盖终端的BOOT分区:
根据终端的机型信息获取终端的操作系统文件的校验算法;
使用校验算法对新系统文件压缩包进行计算得到校验值;
在终端的BOOT分区依次写入校验值和信系统文件压缩包。
可选地,该装置700还包括:
机型信息获取模块740,适于在获取终端操作系统中的指定文件之前,获取终端的机型信息;
第一位置获取模块750,适于根据机型信息获取终端的BOOT分区的位置。
可选地,该装置700还包括:
分区表获取模块760,适于在获取终端操作系统中的指定文件之前,获取终端的分区表;
第二位置获取模块770,适于根据分区表获取终端的BOOT分区的位置。
可选地,程序扫描模块720还适于检测指定文件中是否存在预设行为的文件。
可选地,预设行为包括:
删除自身文件,但文件对应的进程保持运行;或者,
将自身的代码注入到系统进程。
可选地,当指定文件中包含预设的恶意程序特征时,该装置700还包括:
状态设置模块780,适于将由具有预设恶意程序特征的文件生成的可运行文件删除,并在所述可运行文件的相同位置生成与所述可运行文件同名的文件,并置为只可读状态。
本发明实施例提供了一种查杀恶意程序的装置,当移动终端中的文件保护有预设的恶意程序特征时,通过执行重刷操作系统分区的操作,能够彻底清除ROM病毒等寄存于操作系统分区中的恶意程序,解决了ROM病毒类的恶意程序不能彻底查杀的问题,保护了用户的数据财产安全,防止用户受到ROM病毒的骚扰,可以防止恶意程序扣费,偷跑流量,弹出各种垃圾广告,窃取用户隐私,以及保证用户手机支付的安全等,对移动终端杀毒引擎无法正常查杀的恶意程序可以进行彻底的清除。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的查杀恶意程序的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
本发明实施例提供了A1.一种查杀恶意程序的方法,包括:获取终端操作系统中的指定文件;扫描所述指定文件中是否包括预设的恶意程序特征;当所述指定文件中包含预设的恶意程序特征时,执行重刷所述操作系统的系统分区的操作;其中,所述指定文件存储于所述系统分区中。A2.根据A1所述的方法,其中,所述系统分区为BOOT分区,所述指定文件为存储于所述BOOT分区中的系统文件压缩包。A3.根据A2所述的方法,其中,所述获取终端操作系统中的指定文件,包括:获取终端的机型信息;根据所述机型信息获取所述终端的系统文件压缩包的压缩格式;根据所述压缩格式解压所述系统文件压缩包,得到解压缩后的文件为指定文件。A4.根据A3所述的方法,其中,所述扫描所述指定文件中是否包括预设的恶意程序特征,包括:提取所述解压缩后的每一个文件的文件特征值,判断是否包含与预设的特征值相匹配的文件。A5.根据A3所述的方法,其中,所述扫描所述指定文件中是否包括预设的恶意程序特征,包括:提取所述解压缩后的每一个文件的文件特征值,并将所述文件特征值发送给云服务器;其中,所述文件特征值用于所述云服务器判断所述指定文件中是否包含与预设的特征值相匹配的文件。A6.根据A3所述的方法,其中,所述扫描所述指定文件中是否包括预设的恶意程序特征,包括:扫描用于记录所述操作系统的启动项的配置文件,读取所述配置文件记录的每一个自启动程序的文件路径;提取所述文件路径下的每一个文件的文件特征值,判断是否包含与预设的特征值相匹配的文件。A7.根据A3至A6任一项所述的方法,其中,所述当所述指定文件中包含预设的恶意程序特征时,执行重刷所述操作系统的系统分区的操作,包括:删除所述解压缩后的文件中具有恶意程序特征的文件;按照所述压缩格式将删除具有恶意程序特征的文件后的系统文件进行压缩,得到新系统压文件缩包;使用所述新系统文件压缩包覆盖所述终端的BOOT分区。A8.根据A7所述的方法,其中,所述使用所述新系统文件压缩包覆盖所述终端的BOOT分区,包括:根据所述终端的机型信息获取所述终端的操作系统文件的校验算法;使用所述校验算法对所述新系统文件压缩包进行计算得到校验值;在所述终端的BOOT分区依次写入所述校验值和信系统文件压缩包。A9.根据A2至A8任一项所述的方法,其中,在所述获取终端操作系统中的指定文件之前,所述方法还包括:获取所述终端的机型信息;根据所述机型信息获取所述终端的BOOT分区的位置。A10.根据A2至A8任一项所述的方法,其中,在所述获取终端操作系统中的指定文件之前,所述方法还包括:获取所述终端的分区表;根据所述分区表获取所述终端的BOOT分区的位置。A11.根据A1至A10任一项所述的方法,其中,所述扫描所述指定文件中是否包括预设的恶意程序特征,包括:检测所述指定文件中是否存在预设行为的文件。A12.根据A11所述的方法,其中,所述预设行为包括:删除自身文件,但所述文件对应的进程保持运行;或者,将自身的代码注入到系统进程。A13.根据A1至A12任一项所述的方法,其中,当所述指定文件中包含预设的恶意程序特征时,所述方法还包括:将由具有预设恶意程序特征的文件生成的可运行文件删除,并在所述可运行文件的相同位置生成与所述可运行文件同名的文件,并置为只可读状态。
本发明实施例提供了B14.一种查杀恶意程序的装置,包括:文件获取模块,适于获取终端操作系统中的指定文件;程序扫描模块,适于扫描所述指定文件中是否包括预设的恶意程序特征;操作执行模块,适于当所述指定文件中包含预设的恶意程序特征时,执行重刷所述操作系统的系统分区的操作;其中,所述指定文件存储于所述系统分区中。B15.根据B14所述的装置,其中,所述系统分区为BOOT分区,所述指定文件为存储于所述BOOT分区中的系统文件压缩包。B16.根据B15所述的装置,其中,所述文件获取模块适于按照如下方式获取终端操作系统中的指定文件:获取终端的机型信息;根据所述机型信息获取所述终端的系统文件压缩包的压缩格式;根据所述压缩格式解压所述系统文件压缩包,得到解压缩后的文件为指定文件。B17.根据B16所述的装置,其中,所述程序扫描模块适于提取所述解压缩后的每一个文件的文件特征值,判断是否包含与预设的特征值相匹配的文件。B18.根据B16所述的装置,其中,所述程序扫描模块适于提取所述解压缩后的每一个文件的文件特征值,并将所述文件特征值发送给云服务器;其中,所述文件特征值用于所述云服务器判断所述指定文件中是否包含与预设的特征值相匹配的文件。B19.根据B16所述的装置,其中,所述程序扫描模块适于扫描用于记录所述操作系统的启动项的配置文件,读取所述配置文件记录的每一个自启动程序的文件路径,提取所述文件路径下的每一个文件的文件特征值,判断是否包含与预设的特征值相匹配的文件。B20.根据B16至B19任一项所述的装置,其中,所述操作执行模块适于按照如下方式执行重刷所述操作系统的系统分区的操作:删除所述解压缩后的文件中具有恶意程序特征的文件;按照所述压缩格式将删除具有恶意程序特征的文件后的系统文件进行压缩,得到新系统压文件缩包;使用所述新系统文件压缩包覆盖所述终端的BOOT分区。B21.根据B20所述的装置,其中,所述操作执行模块适于按照如下方式使用所述新系统文件压缩包覆盖所述终端的BOOT分区:根据所述终端的机型信息获取所述终端的操作系统文件的校验算法;使用所述校验算法对所述新系统文件压缩包进行计算得到校验值;在所述终端的BOOT分区依次写入所述校验值和信系统文件压缩包。B22.根据B15至B21任一项所述的装置,其中,所述装置还包括:机型信息获取模块,适于在所述获取终端操作系统中的指定文件之前,获取所述终端的机型信息;第一位置获取模块,适于根据所述机型信息获取所述终端的BOOT分区的位置。B23.根据B15至B21任一项所述的装置,其中,所述装置还包括:分区表获取模块,适于在所述获取终端操作系统中的指定文件之前,获取所述终端的分区表;第二位置获取模块,适于根据所述分区表获取所述终端的BOOT分区的位置。B24.根据B14至B23任一项所述的装置,其中,所述程序扫描模块还适于检测所述指定文件中是否存在预设行为的文件。B25.根据B24所述的装置,其中,所述预设行为包括:删除自身文件,但所述文件对应的进程保持运行;或者,将自身的代码注入到系统进程。B26.根据B14至B25任一项所述的装置,其中,当所述指定文件中包含预设的恶意程序特征时,所述装置还包括:状态设置模块,适于将由具有预设恶意程序特征的文件生成的可运行文件删除,并在所述可运行文件的相同位置生成与所述可运行文件同名的文件,并置为只可读状态。