1.一种基于Dalvik指令抽象的Android恶意代码检测方法,其特征在于:所述检测方法包括如下步骤:
1)恶意代码的检测与分类模型训练,过程如下:
1.1)确定训练恶意代码检测模型的训练集,训练集分为两个子集,一个是恶意APK样本集合,另一个是非恶意样本APK集合;APK文件格式通常都包含一个classes.dex文件,该Dex文件封装可被Dalvik虚拟机执行的Dalvik字节码,利用工具Apktool反汇编APK文件,就能得到一个包含smali源码的文件目录,smali目录结构对应着Java源码的src目录,smali是对Dalvik字节码的一种解释,所有语句都遵循一套标准的语法规范,从smali文件中提取出Dalvik操作码并进行抽象简化为指令符号,再针对抽象的Dalvik指令符号的N-Gram序列特征进行统计与归一化处理,最后采用机器学习的分类算法建立恶意代码检测模型;
1.2)确定恶意家族分类模型的训练集,训练集按照恶意家族类型数量分为子集,按照步骤1.1)的方式建立恶意家族分类模型;
2)将待测APK文件先进行预处理,提取出Dalvik指令特征并作抽象简化与N-Gram序列化处理,再通过恶意代码检测模型的检测,初步判断出是否为恶意代码;如果不是就直接给出检测结果,如果是则进一步通过恶意家族分类模型来获得该恶意代码家族类型。
2.如权利要求1所述的基于Dalvik指令抽象的Android恶意代码检测方法,其特征在于:所述抽象简化的过程为:在指令集中提取出能够正确反映程序语义的指令和操作码,对功能相近的指令进行归类,并将该类的指令集合抽象为指令符号。
3.如权利要求2所述的基于Dalvik指令抽象的Android恶意代码检测方法,其特征在于:在Dalvik指令集中提取出的107种代表性指令并分成10大功能相近的类,并且每类指令抽象为一个特定的指令符号,N-Gram编码直接使用这种指令符号代替完整的Dalvik指令。
4.如权利要求1~3之一所述的基于Dalvik指令抽象的Android恶意代码检测方法,其特征在于:所述N-Gram序列化处理处理采用3-Gram序列的随机森林算法。