基于抽象API调用序列的Android恶意软件检测方法论文

基于抽象API调用序列的Android恶意软件检测方法

崔艳鹏 颜 波 胡建伟

(西安电子科技大学网络与信息安全学院 陕西 西安 710071)

摘 要 随着Android版本的不断更替,以及恶意软件的代码混淆技术的发展,主流的静态检测方法开始面临检测效率逐年下降的问题。针对上述问题,提出一种基于抽象API调用序列的Android恶意软件检测方法。该方法采用API包名、混淆名和自定义名来抽象API调用序列,使得抽象出来的序列不依赖API版本,同时又包含混淆代码特征,具有更好的容错性。在此基础上,计算抽象API调用序列之间的转移概率矩阵作为分类特征,采用RandomForest分类算法进行恶意软件检测。实验结果表明,该方法对API版本依赖性小,且判别准确率高于一般使用API调用序列作为特征的判别方法,从而能更有效地检测未知应用软件的恶意性。

关键词 Android 恶意软件检测 抽象API调用序列 代码混淆 RandomForest

0 引 言

Android平台是目前世界上使用最多的智能平台,占据了全球85%的市场份额。迄今为止,Google市场有超过650亿次的下载量,比App Store高出2倍[1]。同时,Android平台的流行也吸引了许多恶意攻击者们的兴趣,他们开发的恶意软件可以进行各种恶意甚至非法操作,比如:窃取用户隐私及敏感数据、远程执行代码、消耗用户资费等行为。这些恶意软件不仅危及用户数据安全,也威胁到Android系统安全。

根据独立安全机构AV-Test在2018年1月发表的报告[2],使用AhnLab、Alibaba、McAfee、Tencent、Kaspersky Lab等19个手机杀毒软件对2 766个己知Android恶意应用进行检测发现各大手机杀毒软件对于已知的恶意应用检测效果并不理想。

同时,由于当前主流的Android恶意软件检测方法都严重依赖API版本和恶意家族样例,随着时间推移,Android API版本的不断变化和软件保护措施的不断加强,这些检测方法变得越来越低效。

针对上述技术存在的问题,本文提出了一种基于抽象API调用序列的Android恶意软件检测方法。该方法采用静态行为特征提取方法,提取Android应用软件的API调用序列。然后,通过基于API包名、混淆名和自定义名的方法来抽象API调用序列。该方法能有效地识别Android系统原生API、Google API、混淆后的API以及开发者自定义的API,且不会对API版本产生依赖。最后,将抽象后的API调用序列作为分类特征来训练RandomForest分类器。实验结果表明,与一般使用API调用序列作为特征的判别方法相比,本文方法能更有效地检测未知应用软件的恶意性,且能适应API版本的变化,具有更好的容错性。

2.2.3 中医证候疗效 疗后第2周,两组中医证候等级疗效比较,经Wilcoxon秩和检验,差异有统计学意义;中医证候总有效率的组间比较,经CMHχ2检验,差异有统计学意义,试验组优于对照组。FAS、PPS分析结论一致。FAS数据集结果见表5。

1 相关工作

目前,关于Android恶意软件检测的方法比较多,主要有基于动态检测和静态检测方法。但基于动态检测的方法在实验资源成本上会耗费过大,且代码覆盖率不全,导致相应特征提取不全,检测有效性降低,所以国内外学者们主要是研究静态检测方法。当前,基于静态检测的方法主要是从签名、权限和API这三大方面进行展开的。

基于签名的静态检测方法[3]是采用了模式匹配的思想。该方法极度依赖已知的恶意软件签名库,无法对未知的恶意软件进行检测。

不同的Android版本对应着不同的API版本,不同版本的Android API也存在不同,会根据新增的功能去增加或删改一些应用程序接口。因此,如何让提取API特征不依赖API版本成为一个亟待解决的问题。

直线电机气隙在线监测系统采集到了大量的直线电机状态历史数据,并将数据存储在数据库中,通过进行大数据分析和挖掘,可以找出直线电机下沉的趋势,实现对直线电机故障的预判。

基于API调用的静态检测方法[6-7]主要是将Android应用程序的信息接口(API)作为突破口。Android应用软件中API的调用序列存在着大量的行为信息,通过分析API调用特征所得到的特征向量,再结合多种分类算法,可以对Android恶意软件进行检测。文献[8]提出了一种DroidAPIMiner分类器,该分类器从应用软件的字节码中提取API和其他参数,并且对API的使用频率进行统计,最后使用了不同的机器学习的方法处理了这些特征。文献[9]提出了权限和API特征结合的检测方法,主要通过将权限和高危的20种API结合起来作为一个特征集合。实验验证了该方法的准确率比将单一的权限或者API作为特征的准确率要高。但是文献中指出的20种高危API可能会被混淆后的名字代替,从而该方法会漏掉这一关键特征,检测效率也将有偏差。文献[10]提出了一种改进的多级签名检测方法,将签名和API结合起来,对方法和类的签名进行多级匹配。但是该方法依赖已知恶意软件家族,实验训练样本是已知的恶意软件,测试样本则是训练样本进行变种后,按照比例挑选出来的。同时,该方法检测精度也只有88%。文献[11]提取了多项特征数据,包括通过静态检测方法获取的权限、API调用信息和通过动态检测方法获取的日志文件作为总体特征。虽然他们的实验检测效率达到94%,且在准确性方面优于其他反病毒系统,但是检测模型的质量取决于良性样本集合和恶意样本集合。文献[12]提出了一种基于上下文信息的检测方法,该方法提取敏感API编程接口,并分析其行为的激活事件和条件因子,生成语境特征,该方法精确度达92.86%,但是文献中实验数据集太少,只有266个,实验数据具有特殊性。

基于静态检测的方法方便、快速、代码覆盖率高,但是必须考虑到两个问题:一方面,随着Android安全技术的不断提高,很多应用软件均被使用了混淆等保护技术,获取混淆后APK所包含的相关特征信息变得困难;另一方面,目前现有的Android恶意软件静态检测方法都无法适应API版本的更替,随着API版本的更改,检测效率会降低。因此,本文提出的检测方法是采用API包名、混淆名和自定义名来抽象API调用序列,使得抽象出来的序列不依赖API版本,同时又包含了混淆代码特征,具有更好的容错性。

2 基于抽象API 调用序列的检测方法

基于抽象的API调用序列的Android恶意软件检测方法通过对提取出的API调用序列进行多层次的抽象描述,然后计算抽象API调用序列之间的转移概率作为分类特征,最后通过RandomForest算法来达到区分恶意软件的效果。实验的整体设计框架如图1所示。

图1 实验设计框架图

2.1 样本预处理

为了使实验样本包含不同API版本,本文从各大应用市场下载各类别的不同版本的热门软件,良性应用软件集总共3 000个。其中:前1 500个API版本均在24~27之间,这些版本是目前市场上多数使用的API版本;后1 500个API版本均在16~23之间,这些版本是比较老的API版本,但依旧占据小部分市场。同时,上述良性应用软件集都是通过杀毒软件的过滤筛除后得到的。实验中的恶意应用软件集来自于VirusShare.com[13]中提供的2 000个恶意软件。

为了更好地训练分类器和获取更好的分类结果,本实验中训练样本集合与测试样本集合的比例为8∶2。表1给出了本实验数据的具体划分情况。

自身性激素受体敏感性的改变或者由于患者长期的下丘脑-垂体-卵巢轴的紊乱,可以导致高雄激素或者黄体激素高峰导致的卵泡成熟障碍,引起雌激素及雄激素的持续性分泌紊乱。PCOS的发生能够导致排卵前雌激素高峰形成的障碍,导致不排卵,同时还能够引起显著的高雄激素血症表现。PCOS患者临床治疗的总体有效率不高,治疗后的病情缓解率不足25%,且疾病长期迁延不愈[6-7]。通过对于PCOS发病过程中相关生物学机制的研究,可以为PCOS患者的综合性临床治疗提供参考。

表1 实验训练集与测试集划分

2.2 API 特征的分析与提取

Android 系统中的API是可以提供给Android应用软件开发者调用的系统接口。随着Android版本的不断更新,Android应用软件开发者不仅使用Android系统原生API,还包括Google API。这些API包含丰富的功能函数,其为上层应用软件提供框架支撑和行为实现。获取API调用序列的一种方法就是获取Android应用程序的函数调用关系图,通过对函数关系图的分析,获取API 调用序列。

TPR:表示非恶意样例被正确分类的比率。其公式如下:

燃气锅炉烟气经过冷凝式节能器后,温度会降低到50℃以下,此时回收的热量既包括显热量又包括潜热量,很难分别单独计算。因此,对于锅炉出口烟气在100℃以上时,未发生冷凝,节能器仅回收显热;对于烟气温度从100℃降到50℃时,节能器工作在湿空气下既回收显热又回收潜热。

图2 API示意图

2.2.1 函数调用关系图的提取

对于Android应用软件的函数调用关系图的提取,本文使用了AndroidGuard工具。AndroidGuard可以进行程序流程图的生成,还能通过图形化的方式输出,让用户对程序有直观的了解。

为了更好地说明本文方法的不同之处,以一个真实的恶意软件样本作为运行实例。图3列出恶意样本malicious1.apk反编译后提取出来的类。图3中的代码片段表示本地保存的短信内容、电话等信息会上传到服务器。

3)coord。文档包含的检索词数。一次搜索可能包含多个搜索词,而一篇文档中也可能包含多个搜索词,其包含的搜索词越多,此文档打分越高。

图3 Malicious1.apk中zjSevice类的代码片段

这个恶意软件伪装成一个图片查看器的应用软件,但其中包含恶意行为:恶意记录短信内容、电话号码等敏感信息到本地并上传到某服务器上,导致隐私数据泄露。为了清晰地描述API的调用关系,本文只分析图3 uploadAllfiles函数,且忽略了对象初始化、返回类型和参数以及方法中隐式调用的调用关系。该函数的API调用关系如图4所示。

图4 uploadAllfiles函数的调用关系图

2.2.2 API 调用序列的提取

本文从获取到应用软件的函数调用关系中提取API调用的序列。该阶段的操作步骤为:标识函数调用关系图中的入口节点(即没有传入边的节点);枚举出每个入口节点可到达的路径。在此阶段确定的所有路径的集合L 就是该函数的API调用序列。以图3中的uploadAllfiles函数的调用关系图为例,函数调用序列对如图5所示。

图5 uploadAllfiles函数的API调用序列对

2.2.3 抽象API 调用序列

where n is the turn ratio of primary coil and secondary coil.The transfer impedance can be simplified from Eq. (3) as:

基于权限的静态检测方法[4-5]主要是从Android系统的权限安全机制着手,因为Android系统中组件间重要敏感的行为受权限限制。该方法通过从应用程序的Android Manifest文件中提取权限字段,建立了正常数据和恶意软件数据的所有权限数据库,最后利用机器学习算法对Android应用中的恶意软件进行分类和识别。该方法优点是简单并且很容易实现,缺点是容易出现误差,比如由于缺乏经验的开发者可能事先申请了某些权限,但其在编程中却没有用到被该权限作用的函数,因此准确率较低,且遗漏问题严重。

本文方法通过抽象API的包名避免了检测的特征对于API版本的依赖。具体包括:对API官方网站给出的API进行包名抽象、对应用程序自定义的包名统一抽象为insensitive-defined、对被混淆后的包名统一抽象为obfuscated。根据Android API和Google API官方统计,API以包名进行分类共有9个,分别包括android、com.google、java、javax、org.xml、org.apache、junit、org.json和org.w3c.dom。由于org.w3c.dom家族下的API都为文档对象模型 (DOM)提供接口,junit类适用于开发者做单元测试的类,并且org.w3c.dom和junit都几乎不曾在实验样本集中出现过,所以剔除这两类。表2中给出了所有API抽象描述后的种类集合,总共8种。

1.仔猪水肿病以采取综合性治疗措施,常用磺胺嘧啶钠、恩诺沙星、氯霉素、硫酸卡那霉素对本病均有一定治疗作用。此外,对病猪还可以用盐类缓泻剂通便,以减少毒素的吸收。

目前,各高职院校与企业的合作层次较低。合作形式大多为顶岗实习安排、订单人才培养、兼职教师建设等,而学校、企业的深度融合,教师、师傅的联合传授,工学交替、实岗培养等深层次合作不够。合作运行机制缺少有力的政策支持和法律保障,没有真正实现“双重”管理、“双元”育人,校企合作质量难以保证。

表2 抽象API的集合

在Android软件开发中,自定义包名的命名规则采用反域名命名规则,全部使用小写字母。一级包名为com;二级包名为个人或公司名称,可以简写,三级包名根据应用进行命名;四级包名为模块名或层级名;根据实际情况也是可以用五级包名、六级包名。而在Android应用程序层中,混淆技术主要采用标识符混淆,它是对源程序中的包名、类名、方法名和变量名进行重命名,用无意义的标识符来替换,使得破解和分析更困难。通过标识符混淆后的包名多数以单一字符或定制的混淆字典中的字符串替换每级包名,这些单一字符和定制的混淆字典中的字符串的命名方式不会遵守反域名命名规则。因此根据上述特性,本文对应用程序自定义的包名和混淆后的包名识别算法步骤如下:

输入:API调用信息Sorigin,API官网抽象出的集合[APIabstract]=[android, com.google, java, javax, org.xml, org.apache]。

2.建立严格的考核机制。强化合规业绩考核机制,细化完善考核标准,将合规评价纳入员工业绩考核和干部选拔任用的必备条件中。企业应当确保各级员工明白,违反合规政策、程序和反腐败法规会受到轻重不等的纪律处罚,例如,按照相关法律的规定,可能会内部通报纪律处分,甚至可能被解除劳动合同。在合规考核机制方面,企业可以同时考虑业绩与合规两个方面对管理者和员工进行全面的业绩考核。比如,微软公司考核管理者业绩时不仅考核其业务发展,还要考核其合规管理。业绩考核当然是非常重要的,但是合规考核是一票否决的东西,一旦合规性不达标,业绩再好也不行。

输出:抽象的API。

按照上述分类标准,根据第1.1节中船舶领域统计模型,分别对4类目标船周围最近船舶相对其运动的轨迹最近距离时刻的相对位置分布进行统计,得到图7。

步骤一:以“.”切分Sorigin,得到一个包名组L。

步骤二:将包名组L中的元素与[APIabstract]逐个匹配,匹配成功,则输出匹配的元素,即为抽象API。

式中:C ij 表示APIi 到APIj 的转换次数;表示APIi 到[API1…APIi-1 APIi+1 …APIt ]之间存在的所有转换次数总和。

步骤四:判断count是否大于等于len(L)/2,是则输出匹配元素obfuscated,表示为混淆的包名;否则输出匹配元素insensitive-defined,表示为自定义包名。

继续以图5的API调用图为例,API抽象后结果如图6所示。

袁绍觉着自己兵多粮足,准能把曹操灭了。曹操也准备跟袁绍决战,但他的人马少,打了几仗没得胜。他就下令修筑土垒(),坚守营寨。袁绍看到曹军不敢出战,就让士兵们在曹营外面堆起一个一个的小土山,土山上再搭起高台子,叫士兵们站在高台上向曹营里射箭。曹操的将士只好用挡箭牌遮住身子,在地上慢慢地爬来爬去。袁绍的士兵看了,都得意地哈哈大笑。曹操忙跟谋士们商量对付的办法。他们造了一个发石机,能把十几斤重的大石头打出去。这种发石机投射大石头的时候,还“轰隆隆”地发出响声,挺吓人的,所以大伙儿又叫它“霹雳车”。结果,袁军的高台让石头打得塌的塌,垮的垮,士兵们头破血流,逃回营里去了。

图6 抽象后的API调用序列

2.3 获取分类特征

输入:n 个训练样本集T [n ],测试样本x ,样本特征维度M 。

输出:转移概率矩阵T n×t

(1)

步骤三:如果步骤二匹配不成功,计算L中每个元素的长度,统计元素长度不超过3的元素数量count。

接着,根据上述2.2节分析可知,抽象API集合L API_abstract=[android, com.google, java, javax, org.xml, org.apache, obfuscated, insensitive-defined],则L API_abstract中API两两之间转换的状态有64(8×8)种,设一个64列的特征向量V translate_count=[API]1×64来代表64种转化状态。其中V translate_count分别代表的是L API_abstract集合中抽象API两两之间的转换概率矩阵。一个应用软件中所有函数的抽象API调用序列中的API之间转移概率的集合就组成了转移概率矩阵。具体算法流程如下:

输入:一个应用软件中n 个函数的抽象API调用序列集;特征维度t =64。

API两两之间的转移概率P 的计算公式如下:

步骤一:创建转移概率矩阵T n×t ,并将其元素都初始化为0。

步骤二:计算T i×j 的值。其中T i×t (第i 行向量)表示第i 个函数的抽象API调用序列中API之间的转移概率向量,因此T i×j 表示第i 个函数在V translate_count的第j 个指定的两个API之间转换概率。该概率通过式(1)计算可得。

步骤三:输出矩阵T n×t

2.4 分类算法

本文采用的分类算法为随机森林算法,主要是为了区分恶意软件和良性软件。

随机森林[14]是建立在决策树算法基础上的改进算法,用于分类与回归。该算法通过重复多次的有放回的方式从原始样本中随机抽取部分样本产生新的样本集合,每个样本集合后续都可以构建成一棵决策树,多棵决策树组建成随机森林。最终分类结果根据每棵分类子树投票统计结果而定。该算法的执行步骤[13]如下:

为了更好体现API调用序列之间的关系,本文方法通过计算API两两之间的转移概率,获取转移矩阵作为分类特征。

输出:x 所属的类别。

治理结构的逐步成形和不断完善,既可为业务部门在定制各种服务的采购方案时提供针对性分析和委托设计支持,也能为管理部门有效驾驭专业力量在整个业务支持体系中起到应有作用和发挥最大价值提供指引和帮助。

步骤一:对于原始训练样本集T [n ],有放回的随机抽取N 个训练样本。

步骤二:随机地从M 个特征中选取m 个特征子集(m <<M ),每次树进行分裂时,从m 个特征中选择最优的特征。每棵树尽最大程度生长,不做任何修剪。

步骤三:将经过步骤二生长后的多棵树进行组建,构建成一个随机森林分类器。

步骤四:将测试样本x 放入随机森林分类器中进行分类判别。

3 实验结果与分析

3.1 方法评测标准

分类结果的好坏需要通过不同的指标来表现。本文主要以TPR、FPR、Accuracy、Precision、Recall和F-measure作为分类方法的评价标准。具体说明如下:

图2为原始API的表达形式,其中包含的信息有:API所属的包名(java.lang.String)、函数名(getBytes)、函数返回值类型(bytes)。

(2)

式中:TP 表示非恶意样例被正确分类的个数;P 表示非恶意样例的总个数。

FPR:表示恶意样例被错误分类的比率。其公式如下:

(3)

式中:FP 表示恶意样例被错误划分为正常样例的个数;N 表示恶意样例的总个数。

Accuracy:表示准确率,即所有样本被正常分类的比率。其公式如下:

(4)

式中:TN 表示恶意样例被正常分类的个数。

Precision:表示精度,即非恶意样本正常分类的个数占所有被正常分类总样本个数的比率。其公式如下:

(5)

Recall:表示查全率,即表示非恶意样本被正常分类的个数占总正常样本的个数的比率。其公式如下:

(6)

F-measure:表示综合查全率,即平均上述的Precision和Recall指标后的综合评测标准。其公式如下:

(7)

3.2 实验结果

本节包含了对不同特征的分类性能的验证实验,具体包括以下两部分实验:(1) 基于抽象API调用序列特征的分类实验。(2) 本方法与市场已有的恶意软件检测方法的比较实验。

3.2.1 基于抽象API 调用序列特征的分类实验

实验结果对不同API版本的数据集上的准确率、召回率表现进行了详细地统计。从表3中可以看出,API版本在16~23的F-measure和API版本在24~27的F-measure都是93%。API版本在16~23和24~27的TPR、 FPR的差距都只控制在0.2%,表明本文方法能有效区分恶意样本且不受API版本的影响。

沿着小商河曲折的河道向上游走,发现小商河自西南方向先向北流,在距桥200米的上游向东折去,减缓了水势后才穿桥而过,因此,小商桥的桥墩避开了汹涌波涛的冲击,从而保证了桥的主拱基础稳定。所以,一千多年来,桥身和桥面虽有损坏,但小商桥的主体部分拱券和桥墩却从未进行过大修。

表3 不同API版本中RandomForest算法的各项指标 %

3.2.2 与其他方法的对比实验

为了验证本文提出的基于抽象API调用序列的特征方法对于Android恶意软件的检测效果。将本文提出的检测方法与邵舒迪等[9]提出的基于权限和API特征结合方法,以及卢正军等[10]提出的基于上下文信息的Android恶意行为检测方法进行对比实验。实验结果如图7所示。

图7 本文方法与文献[9]和文献[11]方法对比结果

根据实验结果可以看出,本文方法的检测精度比文献[9]方法高出了3.8%,比文献[11]提出的方法检测率高出了1%。因此,基于抽象API调用序列的Android恶意软件检测方法效果远优于的文献[9]和文献[11]方法,且实验结果更加具有说服力。

4 结 语

根据目前Android系统存在的安全问题,本文在对Android应用软件的静态特征进行分析后,提出了一种基于抽象API调用序列的Android应用软件检测方法,来判别某个软件是否为恶意软件。本文对3 000款正常软件和2 000款恶意软件进行了仿真实验,结果验证了本文提出的方法的准确性和高效性。

该方法依旧还有提升的空间,可以结合动态方法提取恶意软件运行时的行为进行分析,同样也可以从运行时API调用的角度出发考虑,将动态和静态分析获取到的API调用序列融合在一起,或许可以达到更好的检测效果。

参考文献

[1] Miller C. The App Store continues to bring in nearly double the revenue of Google Play, data shows [EB/OL]. (2018-7-16)[2018-10-29]. https://9to5mac.com/2018/07/16/google-play-revenue-app-store-revenue/.

[2] AVTest. The best antivirus software for Android [EB/OL].(2018-1)[2018-10-29]. https://www.av-test.org/en/antivirus/mobile-devices/android/january-2018/.

[3] 吴震雄. Android恶意软件静态检测方案研究[D]. 南京:南京邮电大学, 2015.

[4] Shahriar H, Islam M, Clincy V. Android malware detection using permission analysis[C]//Southeastcon IEEE, 2017:1-6.

[5] Varma P R K, Raj K P, Raju K V S. Android mobile security by detecting and classification of malware based on permissions using machine learning algorithms[C]//2017 International Conference on I-SMAC(IoT in Social, Mobile, Analytics and Cloud). IEEE, 2017: 294-299.

[6] Karbab E M B, Debbabi M, Derhab A, et al. Android Malware Detection using Deep Learning on API Method Sequences[EB]. arXiv preprint arXiv:1712.08996, 2017.

[7] Yang M, Wang S, Ling Z, et al. Detection of malicious behavior in android apps through API calls and permission uses analysis[J]. Concurrency & Computation Practice & Experience, 2017, 29(1):e4172.

[8] Aafer Y, Du W, Yin H. DroidAPIMiner: Mining API-Level Features for Robust Malware Detection in Android[C]//International Conference on Security and Privacy in Communication Systems. Springer International Publishing, 2013:86-103.

[9] 邵舒迪, 虞慧群, 范贵生. 基于权限和API特征结合的Android恶意软件检测方法[J]. 计算机科学, 2017, 44(4):135-139.

[10] 宁卓, 邵达成, 陈勇,等. 基于签名与数据流模式挖掘的Android恶意软件检测系统[J]. 计算机科学, 2017, 44(S2):317-321.

[11] Chen S, Xue M, Tang Z, et al. StormDroid:A Streaminglized Machine Learning-Based System for Detecting Android Malware[C]//Acm on Asia Conference on Computer & Communications Security. ACM, 2016:377-388.

[12] 卢正军,方勇,刘亮. 基于上下文信息的Android恶意行为检测方法[J]. 计算机工程,2018, 44(7):156-161.

[13] VirusShare. VirusShare for Android[EB/OL]. (2018-10-29)[2018-10-29]. http://virusshare.com/.

[14] 杨宏宇, 徐晋. 基于改进随机森林算法的Android恶意软件检测[J]. 通信学报, 2017, 38(4):8-16.

ANDROID MALWARE DETECTION METHOD BASED ON ABSTRACT API CALL SEQUENCES

Cui Yanpeng Yan Bo Hu Jianwei

(School of Cyber Engineering ,Xidian University ,Xi ’an 710071 ,Shaanxi ,China )

Abstract With the continuous update and replacement of the Android version, as well as the development of code obfuscation techniques of malware, mainstream static detection methods are beginning to face the problem of decreasing detection efficiency year by year. Aiming at the above problems, we proposed a Android malware detection method based on abstract API call sequences. The method used API package name, obfuscated name and self-defined name to abstract the API call sequence, so that the abstracted sequence did not depend on the API version. And it contained obfuscated code features, which had better fault tolerance. On this basis, the transition probability matrix between abstract API call sequences was calculated as the classification feature, and the RandomForest classification algorithm was used for malware detection. The experimental results show that the method has little dependence on the API version, and the discriminant accuracy is higher than the commonly used API call sequence as the feature discriminant method, so that the maliciousness of the unknown application software can be detected more effectively.

Keywords Android Malware detection Abstract API call sequences Obfuscated code RandomForest

中图分类号 TP309

文献标识码 A

DOI: 10.3969/j.issn.1000-386x.2019.09.055

收稿日期: 2019-01-15。崔艳鹏 ,副教授,主研领域:信息安全。

颜波 ,硕士生。胡建伟 ,副教授。

标签:;  ;  ;  ;  ;  ;  

基于抽象API调用序列的Android恶意软件检测方法论文
下载Doc文档

猜你喜欢