CN104318161A - 一种安卓样本的病毒检测方法及装置 - Google Patents
一种安卓样本的病毒检测方法及装置 Download PDFInfo
- Publication number
- CN104318161A CN104318161A CN201410659234.7A CN201410659234A CN104318161A CN 104318161 A CN104318161 A CN 104318161A CN 201410659234 A CN201410659234 A CN 201410659234A CN 104318161 A CN104318161 A CN 104318161A
- Authority
- CN
- China
- Prior art keywords
- virus
- engine
- file
- killing
- program body
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/568—Computer malware detection or handling, e.g. anti-virus arrangements eliminating virus, restoring damaged files
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Virology (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
Abstract
本发明公开了一种安卓样本的病毒检测方法及装置,包括,解析dex文件获取代码信息;代码信息包括:包、类、方法信息;定位dex文件中与代码信息对应的程序体,并获取与程序体对应的opcode序列;将opcode序列与病毒信息进行匹配,判断opcode序列是否包含病毒。本发明的安卓样本的病毒检测方法及装置,提取dev文件中的包、类、方法等信息,通过代码获取opcode序列并与病毒特征进行匹配确定是否感染病毒,能够进行代码级的定位查杀,避免发生病毒漏查现象,可以提高查杀病毒的效率,通过多个引擎进行病毒的查杀,具有很强的扩展性并且检测和杀毒的速度快。
Description
技术领域
本发明涉及网络安全技术领域,尤其涉及一种安卓样本的病毒检测方法及装置。
背景技术
随着社会的信息化发展,终端(包括电脑、手机等多种设备)在人们生活中越来越重要。人们越来越多地依赖终端保存个人信息,例如,各种账号信息、私人聊天记录甚至一些图片照片等信息。因此,若终端***遭到恶意文件(如恶意网址或者电脑病毒等)的威胁,容易造成个人信息的泄露,对用户造成难以估计的损失。在现有技术中,使用特征码扫描进行病毒样本识别是比较常用的技术,特征码扫描是指采用事先提取的病毒特征对未知样本进行扫描和判断的方法。特征的提取是由人工分析或自动分析识别确定为病毒后,对病毒样本提取的二进制或其它特征。查毒时,反病毒软件依次使用其病毒库中的特征对未知文件进行扫描,如果某一特征匹配成功,则表示该文件为该特征所代表的病毒,如果所有特征均未匹配,则认为该文件不是病毒,是正常文件。目前,对于普通android的杀毒技术主要是基于dex文件(dalvik虚拟机执行程序)的字符串进行查杀,将提取的字符串特征与病毒库中的特征进行匹配,但是Android病毒,例如木马病毒,可以很容易地修改病毒代码引用(dex文件中)的字符串,从而达到免杀的目的。
发明内容
有鉴于此,本发明要解决的一个技术问题是提供一种安卓样本的病毒检测方法,能够进行代码级的病毒定位。
一种安卓样本的病毒检测方法,其中:解析dex文件获取代码信息;所述代码信息包括:包、类、方法信息;定位dex文件中与所述代码信息对应的程序体,并获取与所述程序体对应的opcode序列;将所述opcode序列与病毒信息进行匹配,判断所述opcode序列是否包含病毒。
根据本发明的一个实施例,进一步的,从APK安装包中的dex文件头中获取方法名以及与方法名对应的程序体的位置信息;根据所述程序体的位置信息定位到此程序体,并对所述程序体中的方法指令序列进行反汇编,获取所述opcode序列。
根据本发明的一个实施例,进一步的,从dex文件头中的方法列表中获取方法名、以及与方法名对应的进入标识、绝对偏移值;根据所述进入标识、绝对偏移值定位到此方法的程序体,并驱动dalvik虚拟机指令反汇编引擎对此方法的程序体的指令序列进行反汇编,获取所述opcode序列。
根据本发明的一个实施例,进一步的,驱动多个病毒引擎联合进行病毒检测;其中,将所述opcode序列与所述多个病毒引擎的病毒库文件中的记录进行匹配,如果匹配成功则判断所述opcode序列包含病毒;所述多个病毒引擎包括:AVE引擎、AVM引擎、云查杀引擎、机器学习引擎。
根据本发明的一个实施例,进一步的,从dex文件头中的类名列表中获取类名,并驱动AVM引擎通过病毒检测脚本将所述类名与AVE引擎的病毒库文件中的类名特征值或规则进行匹配,如果匹配成功则判断此类为病毒。
根据本发明的一个实施例,进一步的,当AVM引擎判断所述opcode序列包含病毒时,则进行告警信息上报并进行杀毒操作,在执行杀毒操作成功后,将病毒信息添加到病毒库文件中,并将查杀结果同步到其它的病毒引擎中。
根据本发明的一个实施例,进一步的,所述病毒引擎包括:服务端和客户端;所述服务端通过将所述opcode序列与病毒库文件中的记录匹配进行病毒检测;所述服务端将病毒检测结果下发到所述客户端,并下发修复方案;所述修复方案包括:文件类型、与文件类型对应的查杀方法。
本发明要解决的一个技术问题是提供一种安卓样本的病毒检测装置,能够进行代码级的病毒定位。
一种安卓样本的病毒检测装置,包括:代码解析单元,用于解析dex文件获取代码信息;所述代码信息包括:包、类、方法信息;指令序列获取单元,用于定位dex文件中与代码信息对应的程序体,并获取与所述程序体对应的opcode序列;病毒查杀单元,用于将所述opcode序列与病毒信息进行匹配,判断所述opcode序列是否包含病毒。
根据本发明的一个实施例,进一步的,所述代码解析单元,还用于从APK安装包中的dex文件头中获取方法名以及与方法名对应的程序体的位置信息;所述指令序列获取单元,还用于根据所述程序体的位置信息定位到此程序体,并对所述程序体中的方法指令序列进行反汇编,获取所述opcode序列。
根据本发明的一个实施例,进一步的,所述代码解析单元,还用于从dex文件头中的方法列表中获取方法名,以及与方法名对应的进入标识、绝对偏移值;所述指令序列获取单元,还用于根据所述进入标识、绝对偏移值定位到此方法的程序体,并驱动dalvik虚拟机指令反汇编引擎对此方法的程序体的指令序列进行反汇编,获取所述opcode序列。
根据本发明的一个实施例,进一步的,所述病毒查杀单元,还用于驱动多个病毒引擎联合进行病毒检测,将所述opcode序列与所述多个病毒引擎的病毒库文件中的记录进行匹配,如果匹配成功则判断所述opcode序列包含病毒;所述多个病毒引擎包括:AVE引擎、AVM引擎、云查杀引擎、机器学习引擎。
根据本发明的一个实施例,进一步的,所述代码解析单元,还用于从dex文件头中的类名列表中获取类名;所述病毒查杀单元,还用于驱动AVM引擎通过病毒检测脚本将所述类名与AVE引擎的病毒库文件中的类名特征值进行匹配,如果匹配成功则判断此类为病毒。
根据本发明的一个实施例,进一步的,所述病毒查杀单元,还用于当AVM引擎判断所述opcode序列包含病毒时,则进行告警信息上报并进行杀毒操作,在执行杀毒操作成功后,将病毒信息添加到病毒库文件中。
本发明的安卓样本的病毒检测方法及装置,提取dev文件中的包、类、方法等信息,通过代码获取opcode序列并与病毒特征进行匹配确定是否感染病毒,能够进行代码级的定位查杀,避免发生病毒漏查现象,可以提高查杀病毒的效率,通过多个引擎进行病毒的查杀,具有很强的扩展性并且检测和杀毒的速度快。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为根据本发明的安卓样本的病毒检测方法的一个实施例的流程图;
图2A为AVE引擎的病毒记录单元示意图,图2B为AVE引擎的执行方式的示意图,图2C为AVE引擎选用可执行文件的编译器信息作为文件特征的示意图,图2D为AVE引擎执行的示意图;
图3为根据本发明的安卓样本的病毒检测装置的一个实施例的示意图。
具体实施方式
下面参照附图对本发明进行更全面的描述,其中说明本发明的示例性实施例。下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的实施例可以应用于计算机***/服务器,其可与众多其它通用或专用计算***环境或配置一起操作。适于与计算机***/服务器一起使用的众所周知的计算***、环境和/或配置的例子包括但不限于:个人计算机***、服务器计算机***、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的***、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机***﹑大型计算机***和包括上述任何***的分布式云计算技术环境,等等。
计算机***/服务器可以在由计算机***执行的计算机***可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机***/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算***存储介质上。
图1为根据本发明的安卓样本的病毒检测方法的一个实施例的流程图,如图1所示:
步骤101,解析dex文件获取代码信息,代码信息包括java程序的包、类、方法等信息。
步骤102,定位dex文件中与代码信息对应的程序体,并获取与程序体对应的opcode序列。
步骤103,将opcode序列与病毒信息进行匹配,判断opcode序列是否包含病毒。
本发明的安卓样本的病毒检测方法,能够进行代码级的定位查杀,避免发生病毒漏查现象,并且,能够提高查杀病毒的效率。
Android安装包(APK文件)一般通过Android应用市场下载、安装到手机上,也可以通过USB数据线等数据线接口或无线数据传输的方式从PC安装。Android上的病毒、木马和其他恶意软件想要进入用户的手机,也必须打包成APK的形式。基于这一点,杀毒引擎就可以把查杀的目标集中到对APK文件的扫描上,从而大大提高扫描的效率。Android安装包(APK文件)中的哪些信息可以作为扫描的重点,针对此问题本申请进行了分析,具体如下:
1)包名
Android操作***通过APK的包名(package name)对各个安装的APK进行管理。“包名”源自于Java的package的概念,按照Java的package的命名风格,例如某个Android安装包的包名是com.qihoo360.mobilesafe。Android***要求每个应用都声明一个唯一的包名。Android平台下的恶意软件也需要声明一个包名,因此,包名就可以作为识别恶意软件的一个重要特征。
2)数字签名
出于安全性的目的,Android***要求每个APK都要包含数字签名(digital signature)。Android***在安装APK文件的时候会检查APK内部各文件的数字签名是否与其预先设定的数字签名一致,如果不一致,或者没有数字签名,则认为文件已被篡改,拒绝该APK的安装和运行。Android平台下的恶意软件也不例外,所以APK文件的数字签名也可以作为识别恶意软件的一个重要特征。
3)AndroidManifest.xml中列出的各模块的入口信息
AndroidManifest.xml是每个APK文件所必需的全局描述文件,里面列出了Android安装包中应用的每个模块的入口信息。在Android***中,只有在AndroidManifest.xml中列出了的模块,才能够被***调用。Android平台下的木马,往往会伪装成正常的应用或游戏来诱骗用户安装,其中有很多木马就是寄生在一个正常的应用或游戏中,用户运行它的时候,看上去是原来的软件或游戏,但寄生在其中的木马模块在合适的时机就被激活,从而感染用户的手机。而因为Android***要求所有的模块都要在AndroidManifest.xml中列出,这就为寻找寄生的木马提高了重要线索。因此,AndroidManifest.xml中列出的各模块的信息,也是识别恶意软件的重要特征。
4)Dex文件和ELF文件
Android应用通常是用Java语言开发的,它用Android开发工具编译之后变成了二进制的字节码(byte code),这些字节码被打包成classes.dex文件,由Android平台的Dalvik虚拟机来解释执行。为了能够调用Android***功能,Android***提供了一套运行环境(Android Framework),Android应用调用***各功能都是通过调用Android Framework的库来实现的。
另一方面,Android***也支持应用程序通过JNI或者nativeexecutable直接运行。此时应用执行的是直接在CPU上运行的二进制机器码,不需要经过虚拟机解释,可以直接调用Android库如libc、WebKit、SQLite、OpenGL/ES等来调用***各功能。如果Android应用要通过JNI或者native executable运行,就需要将要执行的代码编译成ELF文件格式。ELF是Executable and Linkable Format的缩写,是Android/Linux操作***中可执行程序、共享库的文件格式。
Android上的恶意软件要想在Android***中运行起来,也要遵循上述架构规范。因此,在识别恶意软件的过程中,可以分别从Dex文件(即字节码文件)和ELF文件提取相应的特征。
此外,Android安装包的版本号、Android安装包目录下各文件的MD5值等信息,也可以作为识别恶意软件的重要特征。其中,上述的恶意软件包括病毒、木马和其他恶意软件。
在Android***中,dex文件是可以直接在Dalvik虚拟机中加载运行的文件。Dalvik虚拟机是Android程序的虚拟机,是Android中Java程序的运行基础。其指令集基于寄存器架构,执行其特有的文件格式——dex字节码来完成对象生命周期管理、堆栈管理、线程管理、安全异常管理、垃圾回收等重要功能。每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行opcode或op-code是一种指令序列,是程序执行的最基本单位。
Dex(Dalvik VM Dex File Format)的文件头中包括DEX文件的起始与一些简单的报头校验和与其他结构的偏移,并且在Dex的文件头包括多个表,例如,字符串表(String Table),该表存储在DEX文件的字符串常量、类的名字以及每一字符串的长度和偏移量、变量名等等;类列表(Class List),记录一个列表中的所有类的引用等;类名列表(ClassDefinition Table),该表记录的参数包括:类名、方法的偏移地址等等;方法表(Method Table),该表记录的参数包括属于哪一个类,方法名等等;方法列表(Method List),该表记录的参数包括:方法index、进入标识、偏移地址等等。
从APK安装包中的dex文件头中获取方法名以及与方法名对应的程序体的位置信息,根据程序体的位置信息定位到此程序体,并对程序体中的方法指令序列进行反汇编,获取opcode序列。可以从方法表、方法列表中获取dex文件中的所有方法,并根据每个方法的进入标识和偏移地址等参数,定位到具体的程序体,具体为:从dex文件头中的方法列表中获取方法名、以及与方法名对应的进入标识、绝对偏移值;根据进入标识、绝对偏移值定位到此方法的程序体,并驱动dalvik虚拟机指令反汇编引擎对此方法的程序体的指令序列进行反汇编,获取opcode序列。
本发明的安卓样本的病毒检测方法,可以通过多个杀毒引擎进行病毒检测,驱动多个病毒引擎联合进行病毒检测;将opcode序列与多个病毒引擎的病毒库文件中的记录进行匹配,如果匹配成功则判断opcode序列包含病毒,多个病毒引擎包括:AVE引擎、AVM引擎、云查杀引擎、机器学习引擎等等。
例如,可以通过AVM引擎查杀病毒代码本身检测病毒,先解析APK安装包中的dex文件,即dalvik虚拟机执行程序,获取dex文件中的包、类、方法等相关信息。通过包、类、方法可定位到相应的、编译后的java文件中的程序体,此程序体由dalvik虚拟机指令序列构成。通过dalvik虚拟机指令反汇编引擎,对方法指令序列进行反汇编操作,得到dalvik虚拟机指令opcode序列,针对此序列进行匹配,以判断是否为木马病毒。
根据本发明的一个实施例,驱动AVM引擎通过病毒检测脚本将opcode序列与AVE引擎的病毒库文件中的记录进行匹配,如果匹配成功则判断opcode序列包含病毒。例如,AVE引擎的病毒库文件中记录了各种病毒的特征,包括木马病毒、蠕虫病毒等等。将opcode序列与各种病毒的特征进行匹配,判断是否具有病毒,以及病毒的类型。
根据本发明的一个实施例,查杀病毒的规则以及病毒特征可以设置多种,可以根据具体的查杀病毒需求进行设置。例如,可以通过已知病毒的类名进行检测,例如,已知的病毒A类等,从dex文件头中的类名列表中获取类名,并驱动AVM引擎通过病毒检测脚本将类名与AVE引擎的病毒库文件中的类名特征值或规则进行匹配,此类名特征值为病毒库文件库中存储的已知的病毒类名,如果匹配成功则判断此类为病毒,并将查杀结果同步到其它的病毒引擎中。
病毒引擎可以包括:服务端和客户端,例如,云查杀引擎等等包括服务器端查杀工具和客户端查杀工具。服务端通过将opcode序列与病毒库文件中的记录匹配进行病毒检测,将病毒检测结果下发到客户端,并提供修复方案,修复方案包括:文件类型、与文件类型对应的查杀方法等等,客户端可以根据修复方案进行查杀病毒。客户端可以安装在手机、PC、PAD等上,通过手机端等上的客户端查杀引擎,或者是手机端等上的应用分发平台等工具,为用户提供可靠的移动互联网安全服务。
当AVM引擎判断opcode序列包含病毒时,则进行告警信息上报并进行杀毒操作,在执行杀毒操作成功后,将病毒信息添加到病毒库文件中,添加的病毒信息包括:出现病毒的方法名,以及继承了病毒类名的新的类名等等。
通过上述方法,本发明结合多个杀毒引擎,在具体的病毒检测的过程中,可以完成服务器端和客户端的同步,本申请实施例列举出安全、危险、谨慎和木马四个安全级别。其中,各种安全级别的定义如下:
安全:该应用是一个正常的应用,没有任何威胁用户手机安全的行为;
危险:该应用存在安全风险,有可能该应用本身就是恶意软件;也有可能该应用本来是正规公司发布的正常软件,但是因为存在安全漏洞,导致用户的隐私、手机安全受到威胁;
谨慎:该应用是一个正常的应用,但是存在一些问题,例如会让用户不小心被扣费,或者有不友好的广告遭到投诉等;当发现这类应用之后,会提示用户谨慎使用并告知该应用可能的行为,但是由用户自行决定是否清除该应用;
木马:该应用是病毒、木马或者其他恶意软件,此处为了简单统称为木马,但并不表示该应用仅仅是木马。
所以,在服务器设置安全识别库时,可以将安全、危险、谨慎和木马四个级别下的Android安装包都作为样本Android安装包,从而由样本中的单个特征或特征组合得到的特征记录可分别对应着一种安全级别及相关的行为和描述等信息。
AVM引擎的病毒检测脚本语言采用AVScript脚本语言,AVScript脚本语言是一种类x86汇编指令的脚本语言,脚本的语句是由不同函数方法组成的。函数方法分为检测方法与杀毒方法两大类。检测方法主要是以检测病毒为主,而杀毒方法则会对已经确认为病毒的文件进行操作,以达到删除或清除病毒木马的目标。
AVM引擎的检测方法分为两类:基本方法与扩展方法。基本方法包括:定位(locate)、匹配(match)、控制(control)、变量(value)、运算(operate)等。定位(locate):AVScript脚本语言将定位与匹配分离,可以的效的降低IO的数量,提高检测的准确性。AVM引擎可以定位到具体的包、类、方法,定位成功执行以后,会在AVE运行栈上返回定位地址结果。以供匹配及其它方法使用。
匹配(match):AVScript脚本语言提供基于定位结果的匹配方法,匹配目标又分为二进制匹配与opcode匹配,匹配方法支持通配符号与浮动搜索。控制(control):AVScript脚本语言提供类似x86汇编的控制方法。控制方法分为两大类,一类是跳转方法,另一类是返回方法。
跳转方法可以修改AVE引擎当前执行顺序,跳转到指定的方法开始执行。返回方法可以立即结束当前AVE引擎的检测(杀毒)过程,并可显示指定返回结果为查杀目标或非查杀目标。
变量(value):由于AVE引擎提供类似寄存器与变量,所以AVScript脚本语言提供显示设置寄存器与变量的变量方法。AVScript提供三种变量方法:常量变量方法、引用变量方法、装载变量方法。
运算(operate):AVScript脚本语言提供类似x86汇编的运算方法。包括加、减、乘、除,逻辑与、或,各种移位,比较操作。操作对象为AVScript脚本语言的栈变量与寄存器。
AvScript脚本语言还提供大量的扩展方法,以便捷、准确的提供更多检测信息。例如:模拟跳转方法,此方法模拟CPU解析call/jmp/jcc/loop指令,返回跳转的目标地址。指令分析方法:此方法分析指定位置的指令,返回指令的:opcode、操作数、指令长度等信息等。
AVM引擎通过病毒检测脚本确认为目标文件为病毒文件,则可以调用杀毒方法对病毒文件进行杀毒。AVM引擎的杀毒方法主要分为两类:一类是针对文件本身就是病毒木马,杀毒只需要直接删除目标文件即可;另一类是针对感染型病毒(其会将自己的病毒体代码***到正常的可执行文件中,并在运行之前先取得控制权),通过组合使用杀毒方法进行清除。
AVScript脚本语言提供以下通用的查杀方法:直接删除文件:直接删除目标文件;设置入口点地址:可以修改可执行文件的入口点;填充数据块:向指定的区域写入数据;拷贝数据块:可以在目标文件内进行数据拷贝;删除PE文件节:针对PE的文件结构,删除指定的文件节并对PE格式做相应的调整;删除文件头部数据:从头部删除指定大小的数据。删除文件尾部数据:从尾部删除指定大小的数据,并修正PE的文件结构。设置文件大小:可以直接设置文件的大小。
AVM引擎的AVScript脚本以一条病毒查杀记录(record)为单元。每个record结构如图2A所示,其中:virus info:病毒信息块提供此条记录针对的病毒的分类、运行平台、名字、变种号等信息;scanblock:扫描块,只能使用AVScript脚本语言的查毒方法;killblock:杀毒块,既可以使用AVScript脚本语言的杀毒方法,也可以使用查毒方法。一条记录必须有virus info与scan block,但可以省略kill block,此时记录默认杀毒方法为删除文件。
AVM引擎的AVScript脚本AVScript本身是由XML语言编写,编写完成之后通过AVScript编译器编译成中间文件,即AVE引擎的病毒库文件,再由AVE引擎进行解释执行。病毒库文件本身会保存多条记录,每条记录中又有多条方法。因此,AVScript执行技术分为:记录之间执行技术与记录内执行技术。
记录之间执行技术:对于AVM引擎来说,对于每一个待查的文件,都需要让所有病毒记录对其进行匹配。AVE引擎在记录较少的情况下,采用一种平坦的执行方式,如图2B所示。AVE引擎的病毒库的记录数量较大,使用平坦的执行方式将极大的影响AVE引擎的查杀效率时,AVE引擎会对病毒库记录进行重构,使得待查的文件只需要被部分记录检查即可。因此需要为每条记录再添加一种文件特征,只要待查文件符合此特征,则需要此条记录进行检查。选择的特征必须相互之间是互斥,另外在效率上也需要能够比较快速的分类。可以选择可执行文件的编译器信息作为文件特征,如图2C所示。在待查文件进入引擎之前,先通过检查其编译器,载入对应编译器的记录集合,再由AVE引擎进行执行查杀。
记录内执行技术:AVE引擎通过AVScript脚本语言的执行,对待查文件进行是否为病毒文件地判断。由于AVScript脚本语言支持条件分支执行,所以AVE引擎的执行方式类似一个微型的虚拟机。
例如,AVE引擎的组件包括:EIP:当前方法指针;标志位:包括零位标志、符号标志等;结果栈:保存每条方法执行之后的结果;上下文:包括当前方法ID、上一方法ID、己执行步数、上一次位置结果、全局位置结果、上一次值结果、全局值结果,如图2D所示。
AVE引擎执行每条方法,如果方法执行失败,则结束本条记录的查杀。如果所有的方法都成功执行完成,则认为目标文件病毒文件。AVE引擎输出病毒信息。AVE引擎会先遍历scan block的方法,如果确认目标文件为病毒文件,AVE引擎会执行kill block的方法,并且scanblock执行完成的结果可以继续使用。
AVE引擎提供一种编译的方式,将AVScript脚本语言编译成一种二进制的中间文件,AVE引擎的查杀只需要读取二进制的中间文件即可。此二进制的中间文件即AVE引擎的病毒库文件。AVScript脚本语言借用xml语言进行扫描。每一种方法拥有唯一的GUID,以保证方法之间不会在调用方法的时候产生冲突。
AVE引擎定义一组调试事件,当AVE引擎的执行到一定的状态时,就会产生相应的调试事件。当调试事件产生之后,AVE引擎就尝试通过回调机制中注册的回调接口通知调试器。AVScript脚本调试器向AVE引擎注册回调接口,当有调试事件发生时,AVE引擎就会调用AVScript脚本调试器所注册的接口。AVE引擎回调机制会将AVE引擎的调试事件类型,以及引擎执行的上下文传递给回调接口。由此实现对AVE引擎的执行过程的查看。
通过AVE引擎进行病毒的查杀,由于采用AVScript脚本,便于根据需求进行编辑,具有很强的扩展性并且检测和杀毒的速度快。
如图3所示,本发明提供一种安卓样本的病毒检测装置,33,包括:代码解析单元331、指令序列获取单元332、病毒查杀单元333。代码解析单元331解析dex文件获取代码信息,代码信息包括:包、类、方法信息。指令序列获取单元332定位dex文件中与代码信息对应的程序体,并获取与程序体对应的opcode序列。病毒查杀单元332将opcode序列与病毒信息进行匹配,判断opcode序列是否包含病毒。
根据本发明的一个实施例,代码解析单元331从APK安装包中的dex文件头中获取方法名以及与方法名对应的程序体的位置信息。指令序列获取单元332根据程序体的位置信息定位到此程序体,并对程序体中的方法指令序列进行反汇编,获取opcode序列。
根据本发明的一个实施例,代码解析单元331从dex文件头中的方法列表中获取方法名,以及与方法名对应的进入标识、绝对偏移值。指令序列获取单元332根据进入标识、绝对偏移值定位到此方法的程序体,并驱动dalvik虚拟机指令反汇编引擎对此方法的程序体的指令序列进行反汇编,获取opcode序列。
病毒查杀单元333驱动驱动多个病毒引擎联合进行病毒检测,将opcode序列与多个病毒引擎的病毒库文件中的记录进行匹配,如果匹配成功则判断opcode序列包含病毒,多个病毒引擎包括:AVE引擎、AVM引擎、云查杀引擎、机器学习引擎等等。
根据本发明的一个实施例,代码解析单元331从dex文件头中的类名列表中获取类名。病毒查杀单元333驱动AVM引擎通过病毒检测脚本将类名与AVE引擎的病毒库文件中的类名特征值进行匹配,如果匹配成功则判断此类为病毒。
根据本发明的一个实施例,当AVM引擎判断opcode序列包含病毒时,则病毒查杀单元333进行告警信息上报并进行杀毒操作,在执行杀毒操作成功后,将病毒信息添加到病毒库文件中。
本发明的安卓样本的病毒检测方法及装置,提取dev文件中的包、类、方法等信息,通过代码获取opcode序列并与病毒特征进行匹配确定是否感染病毒,能够进避免发生病毒漏查现象,可以提高查杀病毒的效率。
可能以许多方式来实现本发明的方法和***。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和***。用于方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
Claims (10)
1.一种安卓样本的病毒检测方法,其中:
解析dex文件获取代码信息;所述代码信息包括:包、类、方法信息;
定位dex文件中与所述代码信息对应的程序体,并获取与所述程序体对应的opcode序列;
将所述opcode序列与病毒信息进行匹配,判断所述opcode序列是否包含病毒。
2.如权利要求1所述的方法,其特征在于:
从APK安装包中的dex文件头中获取方法名以及与方法名对应的程序体的位置信息;
根据所述程序体的位置信息定位到此程序体,并对所述程序体中的方法指令序列进行反汇编,获取所述opcode序列。
3.如权利要求2所述的方法,其特征在于:
从dex文件头中的方法列表中获取方法名、以及与方法名对应的进入标识、绝对偏移值;
根据所述进入标识、绝对偏移值定位到此方法的程序体,并驱动dalvik虚拟机指令反汇编引擎对此方法的程序体的指令序列进行反汇编,获取所述opcode序列。
4.如权利要求3所述的方法,其特征在于:
驱动多个病毒引擎联合进行病毒检测;
其中,将所述opcode序列与所述多个病毒引擎的病毒库文件中的记录进行匹配,如果匹配成功则判断所述opcode序列包含病毒;
所述多个病毒引擎包括:AVE引擎、AVM引擎、云查杀引擎、机器学习引擎。
5.如权利要求4所述的方法,其特征在于:
从dex文件头中的类名列表中获取类名,并驱动AVM引擎通过病毒检测脚本将所述类名与AVE引擎的病毒库文件中的类名特征值或规则进行匹配,如果匹配成功则判断此类为病毒;
当AVM引擎判断所述opcode序列包含病毒时,则进行告警信息上报并进行杀毒操作,在执行杀毒操作成功后,将病毒信息添加到病毒库文件中,并将查杀结果同步到其它的病毒引擎中;
所述病毒引擎包括:服务端和客户端;
所述服务端通过将所述opcode序列与病毒库文件中的记录匹配进行病毒检测;
所述服务端将病毒检测结果下发到所述客户端,并下发修复方案;所述修复方案包括:文件类型、与文件类型对应的查杀方法。
6.一种安卓样本的病毒检测装置,其特征在于,包括:
代码解析单元,用于解析dex文件获取代码信息;所述代码信息包括:包、类、方法信息;
指令序列获取单元,用于定位dex文件中与代码信息对应的程序体,并获取与所述程序体对应的opcode序列;
病毒查杀单元,用于将所述opcode序列与病毒信息进行匹配,判断所述opcode序列是否包含病毒。
7.如权利要求6所述的装置,其特征在于:
所述代码解析单元,还用于从APK安装包中的dex文件头中获取方法名以及与方法名对应的程序体的位置信息;
所述指令序列获取单元,还用于根据所述程序体的位置信息定位到此程序体,并对所述程序体中的方法指令序列进行反汇编,获取所述opcode序列。
8.如权利要求7所述的装置,其特征在于:
所述代码解析单元,还用于从dex文件头中的方法列表中获取方法名,以及与方法名对应的进入标识、绝对偏移值;
所述指令序列获取单元,还用于根据所述进入标识、绝对偏移值定位到此方法的程序体,并驱动dalvik虚拟机指令反汇编引擎对此方法的程序体的指令序列进行反汇编,获取所述opcode序列。
9.如权利要求8所述的装置,其特征在于:
所述病毒查杀单元,还用于驱动多个病毒引擎联合进行病毒检测,将所述opcode序列与所述多个病毒引擎的病毒库文件中的记录进行匹配,如果匹配成功则判断所述opcode序列包含病毒;所述多个病毒引擎包括:AVE引擎、AVM引擎、云查杀引擎、机器学习引擎。
10.如权利要求9所述的装置,其特征在于:
所述代码解析单元,还用于从dex文件头中的类名列表中获取类名;
所述病毒查杀单元,还用于驱动AVM引擎通过病毒检测脚本将所述类名与AVE引擎的病毒库文件中的类名特征值进行匹配,如果匹配成功则判断此类为病毒;
所述病毒查杀单元,还用于当AVM引擎判断所述opcode序列包含病毒时,则进行告警信息上报并进行杀毒操作,在执行杀毒操作成功后,将病毒信息添加到病毒库文件中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410659234.7A CN104318161A (zh) | 2014-11-18 | 2014-11-18 | 一种安卓样本的病毒检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410659234.7A CN104318161A (zh) | 2014-11-18 | 2014-11-18 | 一种安卓样本的病毒检测方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104318161A true CN104318161A (zh) | 2015-01-28 |
Family
ID=52373392
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410659234.7A Pending CN104318161A (zh) | 2014-11-18 | 2014-11-18 | 一种安卓样本的病毒检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104318161A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104899510A (zh) * | 2015-05-11 | 2015-09-09 | 国网甘肃省电力公司电力科学研究院 | 针对可移动存储设备的病毒检测查杀方法 |
CN106162648A (zh) * | 2015-04-17 | 2016-11-23 | 上海墨贝网络科技有限公司 | 一种应用安装包的行为检测方法、服务器及*** |
CN106709350A (zh) * | 2016-12-30 | 2017-05-24 | 腾讯科技(深圳)有限公司 | 一种病毒检测方法及装置 |
CN106855926A (zh) * | 2015-12-08 | 2017-06-16 | 武汉安天信息技术有限责任公司 | 安卓***下的恶意代码检测方法、***及一种移动终端 |
CN106909839A (zh) * | 2015-12-22 | 2017-06-30 | 北京奇虎科技有限公司 | 一种提取样本代码特征的方法及装置 |
CN109492389A (zh) * | 2018-10-31 | 2019-03-19 | 施勇 | 一种机器学习自动化行为分析的行为威胁分析方法 |
CN109792440A (zh) * | 2016-08-10 | 2019-05-21 | 诺基亚通信公司 | 软件定义网络中的异常检测 |
CN110826074A (zh) * | 2019-11-06 | 2020-02-21 | 腾讯科技(深圳)有限公司 | 一种应用漏洞检测方法、装置和计算机可读存储介质 |
CN111368298A (zh) * | 2020-02-27 | 2020-07-03 | 腾讯科技(深圳)有限公司 | 一种病毒文件识别方法、装置、设备及存储介质 |
CN111723372A (zh) * | 2020-06-22 | 2020-09-29 | 深信服科技股份有限公司 | 一种病毒查杀方法、装置及计算机可读存储介质 |
CN112214765A (zh) * | 2020-09-29 | 2021-01-12 | 珠海豹好玩科技有限公司 | 一种病毒查杀方法、装置、电子设备及存储介质 |
CN112784270A (zh) * | 2021-01-18 | 2021-05-11 | 仙境文化传媒(武汉)有限公司 | 一种使用注解方式加载代码文件的***及方法 |
CN113836531A (zh) * | 2021-09-25 | 2021-12-24 | 上海蛮犀科技有限公司 | 一种移动应用代码内存动态还原的检测方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663286A (zh) * | 2012-03-21 | 2012-09-12 | 奇智软件(北京)有限公司 | 一种病毒apk的识别方法及装置 |
CN103268445A (zh) * | 2012-12-27 | 2013-08-28 | 武汉安天信息技术有限责任公司 | 一种基于OpCode的android恶意代码检测方法及*** |
KR20140030989A (ko) * | 2012-09-04 | 2014-03-12 | 주식회사 인프라웨어테크놀러지 | 안드로이드 운영체제에서 apk 파일의 시그니처 추출 방법, 그리고 이를 위한 컴퓨터로 판독가능한 기록매체 |
-
2014
- 2014-11-18 CN CN201410659234.7A patent/CN104318161A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663286A (zh) * | 2012-03-21 | 2012-09-12 | 奇智软件(北京)有限公司 | 一种病毒apk的识别方法及装置 |
KR20140030989A (ko) * | 2012-09-04 | 2014-03-12 | 주식회사 인프라웨어테크놀러지 | 안드로이드 운영체제에서 apk 파일의 시그니처 추출 방법, 그리고 이를 위한 컴퓨터로 판독가능한 기록매체 |
CN103268445A (zh) * | 2012-12-27 | 2013-08-28 | 武汉安天信息技术有限责任公司 | 一种基于OpCode的android恶意代码检测方法及*** |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106162648A (zh) * | 2015-04-17 | 2016-11-23 | 上海墨贝网络科技有限公司 | 一种应用安装包的行为检测方法、服务器及*** |
CN104899510A (zh) * | 2015-05-11 | 2015-09-09 | 国网甘肃省电力公司电力科学研究院 | 针对可移动存储设备的病毒检测查杀方法 |
CN106855926B (zh) * | 2015-12-08 | 2019-08-20 | 武汉安天信息技术有限责任公司 | 安卓***下的恶意代码检测方法、***及一种移动终端 |
CN106855926A (zh) * | 2015-12-08 | 2017-06-16 | 武汉安天信息技术有限责任公司 | 安卓***下的恶意代码检测方法、***及一种移动终端 |
CN106909839A (zh) * | 2015-12-22 | 2017-06-30 | 北京奇虎科技有限公司 | 一种提取样本代码特征的方法及装置 |
CN106909839B (zh) * | 2015-12-22 | 2020-04-17 | 北京奇虎科技有限公司 | 一种提取样本代码特征的方法及装置 |
CN109792440A (zh) * | 2016-08-10 | 2019-05-21 | 诺基亚通信公司 | 软件定义网络中的异常检测 |
CN106709350A (zh) * | 2016-12-30 | 2017-05-24 | 腾讯科技(深圳)有限公司 | 一种病毒检测方法及装置 |
WO2018121464A1 (zh) * | 2016-12-30 | 2018-07-05 | 腾讯科技(深圳)有限公司 | 一种病毒检测方法及装置、存储介质 |
CN109492389B (zh) * | 2018-10-31 | 2020-08-21 | 上海境领信息科技有限公司 | 一种机器学习自动化行为分析的行为威胁分析方法 |
CN109492389A (zh) * | 2018-10-31 | 2019-03-19 | 施勇 | 一种机器学习自动化行为分析的行为威胁分析方法 |
CN110826074A (zh) * | 2019-11-06 | 2020-02-21 | 腾讯科技(深圳)有限公司 | 一种应用漏洞检测方法、装置和计算机可读存储介质 |
CN111368298A (zh) * | 2020-02-27 | 2020-07-03 | 腾讯科技(深圳)有限公司 | 一种病毒文件识别方法、装置、设备及存储介质 |
CN111723372A (zh) * | 2020-06-22 | 2020-09-29 | 深信服科技股份有限公司 | 一种病毒查杀方法、装置及计算机可读存储介质 |
CN111723372B (zh) * | 2020-06-22 | 2024-02-23 | 深信服科技股份有限公司 | 一种病毒查杀方法、装置及计算机可读存储介质 |
CN112214765A (zh) * | 2020-09-29 | 2021-01-12 | 珠海豹好玩科技有限公司 | 一种病毒查杀方法、装置、电子设备及存储介质 |
CN112784270A (zh) * | 2021-01-18 | 2021-05-11 | 仙境文化传媒(武汉)有限公司 | 一种使用注解方式加载代码文件的***及方法 |
CN113836531A (zh) * | 2021-09-25 | 2021-12-24 | 上海蛮犀科技有限公司 | 一种移动应用代码内存动态还原的检测方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104318161A (zh) | 一种安卓样本的病毒检测方法及装置 | |
Wang et al. | Ramblr: Making Reassembly Great Again. | |
Caballero et al. | Type inference on executables | |
Roundy et al. | Binary-code obfuscations in prevalent packer tools | |
US9619650B2 (en) | Method and device for identifying virus APK | |
US9600668B2 (en) | Method and device for extracting characteristic code of APK virus | |
CN104008340B (zh) | 病毒查杀方法及装置 | |
Deng et al. | Bistro: Binary component extraction and embedding for software security applications | |
CN102867144B (zh) | 一种用于检测和清除计算机病毒的方法和装置 | |
Tang et al. | Libdx: A cross-platform and accurate system to detect third-party libraries in binary code | |
CN109271789B (zh) | 恶意进程检测方法、装置、电子设备及存储介质 | |
US11231948B2 (en) | Applying security mitigation measures for stack corruption exploitation in intermediate code files | |
Dresel et al. | Artist: the android runtime instrumentation toolkit | |
Liao et al. | Mobilefindr: Function similarity identification for reversing mobile binaries | |
Franzen et al. | Katana: Robust, automated, binary-only forensic analysis of linux memory snapshots | |
Ruggia et al. | The dark side of native code on android | |
Kim et al. | Reassembly is hard: a reflection on challenges and strategies | |
Bleier et al. | Of ahead time: Evaluating disassembly of android apps compiled to binary oats through the art | |
Alrabaee et al. | Binary analysis overview | |
Guo et al. | ilibscope: Reliable third-party library detection for ios mobile apps | |
Cojocar et al. | Jtr: A binary solution for switch-case recovery | |
Kwon et al. | Cpr: cross platform binary code reuse via platform independent trace program | |
CN108255496A (zh) | 一种获取安卓应用原生层代码的方法、***及相关装置 | |
Duan | TOWARD SOLVING THE SECURITY RISKS OF OPENSOURCE SOFTWARE USE | |
Usui et al. | Automatic reverse engineering of script engine binaries for building script API tracers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150128 |
|
RJ01 | Rejection of invention patent application after publication |