文章信息
- 汪润, 唐奔宵, 王丽娜
- WANG Run, TANG Benxiao, WANG Lina
- DroidFAR:一种基于程序语义的Android重打包应用抗混淆检测方法
- DroidFAR: An Anti-Obfuscation Method for Detecting Android Repackaged Application Based on Program Semantics
- 武汉大学学报(理学版), 2018, 64(5): 407-414
- Journal of Wuhan University(Natural Science Edition), 2018, 64(5): 407-414
- http://dx.doi.org/10.14188/j.1671-8836.2018.05.005
-
文章历史
- 收稿日期:2017-10-12

2. 武汉大学 国家网络安全学院,湖北 武汉 430072
2. School of Cyber Science and Engineering, Wuhan University, Wuhan 430072, Hubei, China
近些年来,智能设备如智能手机、智能穿戴设备等变得越来越普遍.与此同时,提供给用户下载安装使用的移动应用数量也在飞速增长.据统计,Android平台的官方商店Google Play和iOS平台的官方商店Apple Store的应用数量已经超过了300万之多,国内一些第三方应用商店如安智、豌豆荚、小米应用商店等都有大量的应用供用户下载、安装和使用.但由于一些不法分子制造大量的恶意应用,使得第三方应用给用户带来了令人惊叹的功能体验的同时,也存在威胁用户安全和隐私的隐患[1~5].
iOS和Android是目前两大主流移动平台,iOS平台存在的安全问题多是由于应用漏洞导致的,而Android平台的安全问题主要是由于恶意应用的传播导致的.相关研究显示,在移动平台上传播的恶意应用,Android平台占将近98%.在Android平台的恶意应用中,有超过86%的恶意应用是重打包应用[6].重打包应用是指恶意开发者通过修改已经发布在应用市场的合法应用,诱导用户下载达到谋取非法收益、传播恶意应用的目的[7].
针对Android平台的重打包应用检测,学术界展开了一系列的相关研究工作,主要分为基于代码克隆的重打包检测[8~16]和基于Android应用特征的重打包检测[17~21]两类方法.其中,第一类方法是先抽取应用的代码特征如程序依赖图、控制流图表示应用的特征,然后通过度量应用特征之间的相似性来判断是否为重打包应用.Juxtapp[8]利用k-gram算法对应用反编译得到的操作码进行编码处理,然后使用Jaccard距离计算其相似性.但如果攻击者在代码中插入多余的代码,会严重地干扰检测的准确率.DNADroid[9]生成应用的程序依赖图,利用图匹配算法识别可疑的重打包应用,该方法易遭受代码混淆攻击的影响且由于其检测速度慢导致无法应用于大规模的市场检测.Chen等[13, 14]利用应用程序流程图的质心表示应用的特征,但是该方法在面临严重的代码混淆时,检测效果并不理想.
上述基于代码克隆的检测方法容易受到代码混淆的干扰,当应用程序代码严重混淆时,检测准确率低.为了解决第一类方法难以应对代码混淆的问题,有学者提出第二类基于Android应用特征的重打包应用检测方法,这类方法使用应用的资源文件表示应用的特征,通过计算相似性来判断他们是否为重打包应用.其中Android应用的资源文件包括图片、用户界面和视频文件等.ViewDroid[17]使用有向图表示应用的特征,其中有向图的顶点是应用的视图,当视图之间存在事件可以进行视图切换时,顶点之间建立有向边连接.DroidEagle[18]也使用应用的UI(user interface)表示特征,为了解决大规模的重打包应用的快速检测问题,DroidEagle由部署在移动端的HostEagle和部署在服务端的RepoEagle构成.其中,RepoEagle将UI表示成树形结构,HostEagle将树形结构的布局进行哈希处理.这类方法的不足是由于部分应用的模板相似,导致该类方法误报率较高.
我们通过大量的研究发现,目前针对Android重打包应用的检测方法存在以下不足:可以实现面向大规模应用市场的快速重打包应用检测,但是检测的准确率低;或可以实现高准确率的检测,但是检测的速度慢,不能用于大规模应用市场中重打包应用的检测;一些基于代码克隆的高效、准确检测方法,易遭受代码混淆的影响,导致检测的误报和漏报率较高.
针对现有重打包应用检测方法中存在的不足,本文提出了一种基于程序语义的应用表示方法,实现面向大规模移动应用市场重打包应用的快速、准确检测,并且可以有效地对抗常见的代码混淆给应用检测带来的影响.
1 相关背景知识在本节中,主要介绍本文涉及的相关背景知识.其中,1.1节介绍程序依赖图,1.2节介绍重打包应用的4种常见类型.
1.1 程序依赖图程序依赖图(program dependency graph, PDG)用于表示应用程序中各个语句之间的依赖关系,包括数据依赖和控制依赖[22].数据依赖是指如果语句S1中存在变量的值是由语句S2决定的,则语句S1和语句S2之间存在数据依赖.如果语句S1控制语句S2执行与否,则语句S1和语句S2之间存在控制依赖.
用基于数据依赖的程序依赖图表示应用特征可以有效地防御代码插入、修改等攻击行为,相比于程序控制流图更适合表示应用相似性检测的特征.基于语义的程序依赖图(semantic-based program dependency graph, SPDG)是一种简化版的PDG,与PDG不同的是,SPDG的顶点包含有平台API(application program interface)语句,顶点之间通过数据依赖关系建立连接.由于SPDG的顶点包含有API的语句,因此可以有效地抵御代码混淆攻击.
1.2 重打包应用类型根据恶意开发者修改构造合法应用的精细程度以及程序代码拷贝的比例等,Android平台重打包应用主要包括以下几种类型:
① 类型1:完全拷贝,不修改程序代码.在合法应用的基础上,保留所有的程序代码内容不变,仅仅添加代码注释等内容;
② 类型2:完全拷贝,修改程序代码变量名等.恶意开发者仅仅修改部分变量名或函数名等;
③ 类型3:部分或完全拷贝,修改程序代码行数.恶意开发者在程序代码中修改、删除或增加部分程序代码等;
④ 类型4:程序语义功能拷贝.开发者在理解应用功能的基础上,重新编写代码实现相似或相同的功能.
2 总体设计 2.1 基本思想通过大量的研究发现,恶意开发者在修改生成重打包应用时,通常会增加、修改包含有平台API的语句.但是包含有平台API的语句不易被代码混淆.换句话说,含有平台API的语句是应用程序的关键语句,包含有丰富的程序语义信息,可以用于表示程序的行为特征.基于以上发现,首先反编译应用的安装文件(apk, Android package files)生成基于语义的程序依赖图,顶点是含有Android平台API的语句,边表示顶点之间存在数据依赖.然后将生成的SPDG分割成子图,每个子图中仅包含两个顶点,顶点之间存在数据依赖关系.将子图构成的集合作为应用的语义特征表示,通过语义特征之间的相似性度量来快速地检测出可疑的重打包应用.最后,利用程序依赖图表示应用的特征,完成可疑重打包应用的细粒度检测.本文提出的基于SPDG的应用特征表示,其顶点包含有平台API的语句,它们不易被修改、混淆处理,可以有效地抵御常见的代码混淆对重打包应用检测带来的影响.而且,本文中SPDG的顶点之间通过数据依赖建立联系,可以防御程序代码的插入、修改等操作.
2.2 框架基于文中提出的程序语义特征表示方法设计的Android平台重打包应用检测系统DroidFAR的框架如图 1所示.DroidFAR主要由三个部分组成,分别是Android应用收集、粗粒度检测和细粒度检测.
|
| 图 1 Android重打包应用检测系统DroidFAR框架图 Figure 1 The framework of application repackaging detection system, DroidFAR, in Android |
本文的方法能够有效地检测1.2节中提到的类型1、2、3重打包应用,并不适用类型4基于语义功能的重打包应用检测.本文中分析和检测修改DEX代码生成的重打包应用,也就是Java语言编写的代码部分,而修改本地代码(native code)生成的重打包应用并不在本文的分析范围内.研究表明仅有4.2%的应用包含有本地代码[23],而且鲜有研究报告显示有修改本地代码生成重打包应用的案例.
3 DroidFAR方法本节介绍DroidFAR方法细节.其中3.1节介绍基本定义,3.2节介绍apk文件预处理,3.3节介绍基于SPDG的粗粒度重打包应用检测,3.4节介绍基于PDG的细粒度重打包应用检测.
3.1 基本定义本文中的重打包应用检测方法主要由粗粒度检测和细粒度检测两部分构成,其中,基于SPDG的应用特征表示用于实现快速的粗粒度检测,基于PDG的应用特征表示用于细粒度的准确重打包检测.在详细描述本文的检测方法之前,这里先给出一些基本的符号解释和定义.
定义1 Android应用语义语句S.Android应用语义语句表示为S={Ii}, i=1,2,…,M,其中I表示语句中调用的函数名,M表示应用中语句的个数,I∈R,R表示Android平台API的集合.
定义2 Android应用SPDG.Android应用SPDG表示为Gs=〈S, E〉,其中S表示函数中含有系统API的语句集,见定义1所示,E表示边集,当语句间有数据依赖时,语句间存在有向边连接.
定义3 Android应用PDG.Android应用的程序依赖图表示为G=〈Sp, Ep〉,其中Sp表示函数的语句集,Ep表示边集,当语句之间有数据依赖时,语句之间存在有向边连接.
3.2 预处理在Android应用市场,Android应用以apk文件的形式发布,供用户下载、安装和使用.从各个应用市场包括Android官方应用商店Google Play中收集移动应用,作为应用检测分析的对象,其中包括合法应用和部分重打包应用.apk文件包括Dalvik字节码、资源文件和XML格式的Manifest文件等.安装包中的class.dex文件包含提供给Dalvik虚拟机执行的Dalvik字节码,应用的签名也包含在安装包中作为应用的惟一标识.
在本文的SPDG和PDG生成中,均需要通过反编译解析安装包中DEX文件,生成相应的应用特征.应用的签名用于提取开发者的标识信息,不同开发者的签名均不同,用于识别两个应用是否为相同的开发者.
3.3 基于SPDG的粗粒度重打包应用检测基于SPDG的快速相似性检测流程如图 2所示.首先反编译获得Android安装包的DEX文件,针对应用程序代码中的每个方法生成相应的SPDG,然后将其特征向量化,最后根据特征向量的相似性距离判断是否为可疑的重打包应用.在相似性检测中主要包括以下三个组成部分:SPDG生成、特征向量化表示以及相似性检测等,下面详细介绍这三个组成部分的内容.
|
| 图 2 基于SPDG的应用快速相似性检测流程图 Figure 2 The flow graph of application similarity detection based on SPDG |
1) SPDG生成
SPDG的顶点为包含有Android平台API的语句.这些语句可以用于表示程序的行为,而且难以被代码混淆处理.当顶点之间存在数据依赖时,建立有向边连接.因此,SPDG不仅可以对抗诸如在程序代码中插入语句、修改语句等行为,而且不易受控制流修改等攻击行为的影响[9, 16].由于顶点是含有Android平台API的语句,不易被代码混淆处理,因此可以有效地抵御常见的代码混淆攻击.
本文对应用中每个函数都生成相应的SPDG,表示为Gs(见定义2),其生成过程如算法1所示.由于应用中存在大量的第三方通用库,需建立白名单过滤应用的库文件,降低库文件给应用相似性检测带来的影响.另外,一些代码行数少的函数存在功能通用和模板相似的现象,这些函数的SPDG会出现相似或相同的问题.因此,本文中过滤掉SPDG节点个数小于特定值(本文中特定值设为5)的函数.
| 算法1 SPDG生成算法 |
| 输入:应用apk文件F; |
| Android平台API集合St. |
| 输出:应用的SPDG集合表示Gs. |
| 1. methods=getMethod(F); /*获取应用的方法*/ |
| 2. for m in methods |
| 3. nodes=countNode(m, St); /*计算方法中含有系统API的语句个数*/ |
| 4. if nodes < 5 or is ThirdLibrary(m): /*去除节点数少于5和第三方库文件的函数*/ |
| 5. continue; |
| 6. else: |
| 7. Gs←genSPDG(m, TYPE=DataDep); /*将每个方法的SPDG保存在集合Gs中,节点间存在数据依赖*/ |
| 8. end for |
2) 特征向量化表示
SPDG以一种图形化结构表示应用,但是由于子图同构是NP难问题,难以在多项式时间内完成.因此,基于SPDG的应用特征表示方法难以拓展到大规模的应用检测环境中.本文设计了一种基于SPDG的子图特征表示方法,将SPDG分割成节点对,如图 3所示.
|
| 图 3 应用的SPDG的特征子图表示 Figure 3 The featured sub-graph representation of application's SPDG |
在图 3的子图特征表示中,标记有颜色的节点为含有Android平台API的语句,将生成的SPDG分割成节点对,子图表示成g=(nx, ny),其中节点nx和ny之间存在数据依赖关系,nx和ny表示语句中调用Android平台的API.抽取数据集中所有应用的SPDG形成的子图集合表示成Sg= {g1, …, gk, …, gm}.每个函数的SPDG特征向量化表示为ΗiGs=[(hig1)Gs, …, (higk)Gs, …, (higm)Gs]T,当gk在应用的子图中时,(higk)Gs=1,否则,(higk)Gs=0.
3) 相似性检测
在应用特征向量化之后,本文中使用Jaccard距离计算两个应用的特征相似性距离,即
|
(1) |
应用A1和A2相似性计算如下
|
(2) |
(2) 式中n表示应用A1和A2的函数个数最小值,系数σ表示根据函数节点个数统计得出的权重,Jm表示最大的Jaccard距离.如果sim(A1, A2)大于阈值0.75,判定应用A1和A2是重打包应用程序对.关于阈值的确定见第4节.
3.4 基于PDG的细粒度重打包应用分析与SPDG的检测类似,对应用的每个函数都生成PDG,表示为G(见定义3).在生成应用的PDG时删除节点数少于8的函数,并使用白名单过滤掉第三方库.
在利用PDG作为应用的特征相似性比较时,将其转化成子图同构,找出存在部分或全部克隆的程序代码片段.基于PDG的应用相似性计算如下
|
(3) |
(3) 式中,P1和P2表示一对可疑的重打包应用,|G|表示应用程序P1的函数个数,C(G)表示P1在P2中找到最佳匹配子图的节点个数.
4 实验与结果分析 4.1 方法实现DroidFAR重打包检测主要有以下几个步骤:
① Android安装文件的反编译.Keytool用于提取应用的签名信息,作为应用的惟一标识.使用apktool反编译DEX文件生成应用的SPDG和PDG.
② 过滤第三方库.文献[24]中公开了多达1 000个第三方的功能库和240个广告库,本文利用这些公开的信息库作为白名单过滤应用中的库文件.
③ SPDG和PDG的生成.在本文中使用soot[25]生成应用中每个函数的SPDG和PDG,其中SPDG和PDG的节点之间存在数据依赖关系.
④ PDG同构子图发现.使用VF2算法[26]找出在细粒度分析中PDG的同构子图,识别部分或全部的代码克隆片段.
4.2 实验环境与数据来源实验环境:CPU为Intel(R) Core(TM) i7-6700K 4 GHz,内存32 GB,操作系统为Ubuntu 14.04.
本文中的实验数据分为两部分:一部分是来源于第三方市场收集的应用,如表 1所示;另一部分来自AndroZoo中提供的重打包应用程序对[24],包括2 776个合法应用和15 297个修改生成的重打包应用.实验中收集的应用安装文件大小分布如图 4所示,有超过85%的apk文件大小在8 MB以内,apk文件的平均大小在4 MB左右.
| 应用市场 | 应用数量 | 比例/% |
| Google Play | 52 789 | 42.4 |
| Baidu | 31 245 | 25.1 |
| Anzhi | 40 478 | 32.5 |
| Total | 124 512 | 100 |
|
| 图 4 实验数据中安装文件大小分布 Figure 4 The distribution of apk files in experimental data |
本文提出的基于SPDG和PDG的应用特征表示方法,旨在解决大规模的重打包应用检测问题.在实验结果评价中,从应用检测的速度和检测的准确率两方面展开有关分析.
基于SPDG的粗粒度重打包检测,是为了实现快速检测并且对抗常见的代码混淆攻击对检测准确率的影响,同时降低在细粒度分析中的规模.图 5表示在细粒度检测中,代码比较的次数与应用规模变化的关系,实验数据为表 1中提供的应用数据.相比于DNADroid只通过应用代码的两两比较的方式实现检测,当达到10×104个应用时,比较的次数近25×1014次,在本文中使用SPDG作为应用特征实现检测之后,在基于PDG的细粒度比较中10×104个应用只需要4×1014次比较.
|
| 图 5 程序代码对与应用数量的关系 Figure 5 The relation of program code pair and application number |
实验结果表明,基于SPDG的粗粒度检测可以实现分析规模的约减,随着应用的增长其代码对的比较次数可以保持在线性增长空间内,因此本文的方法可以有效地应用于大规模的第三方应用市场检测.
图 6表示在基于SPDG的粗粒度检测和基于PDG的细粒度检测中,阈值与准确率的关系.实验中,我们在AndroZoo数据集上通过多次调整阈值,发现阈值设为0.75时,基于SPDG的粗粒度快速相似性检测准确率最高达到87%;阈值设为0.85时,基于PDG的细粒度应用相似性检测准确率最高达到0.951(图 6).
|
| 图 6 阈值与检测准确率的关系图 Figure 6 The relation of threshold and detection accuracy |
实验结果显示,本文方法的漏报率(FNR)为4.2%,误报率(FPR)为1.2%,召回率(recall)为95.8%,准确率(accuracy)为95.1%,精准率(precision)为98.8%,准确率和召回率的调和平均值(F-score)为97.3%.实验结果的ROC(receiver operating characteristic)曲线如图 7所示.
|
| 图 7 ROC曲线 Figure 7 ROC curve TPR(true positive rate), FPR(ralse positive rate) |
本文的方法与现有的基于代码克隆[6, 9, 16]和基于应用资源文件[17, 18]等重打包应用检测的方法在检测速度、检测准确率和抗代码混淆三方面比较结果如表 2所示.
在Android应用中存在大量的第三方库如广告库、功能库等,使用Androzoo提供的白名单过滤第三方库,由于提供的白名单并不能完全包括所有的第三方库列表,所以在库过滤中存在一定的误报和漏报的现象.本文的研究对象是修改DEX文件生成的重打包应用,修改本地代码生成的重打包应用不在本文的研究范围内.在未来工作中我们可以在检测系统中补充关于二进制程序克隆检测的功能,解决DroidFAR存在的不足.由于目前鲜有报告指出存在大量修改本地代码生成的重打包应用,因此本文中针对Java代码的研究范围是合理的.
使用SPDG表示应用的特征,相比于现有的重打包应用检测方法可以有效地抵御常见的代码混淆攻击如布局混淆、数据混淆和控制混淆.ProGuard是Android平台使用最广泛的代码混淆工具,实验表明本文方法可以有效地分析并检测使用ProGuard生成的apk文件.但是,本文方法针对加壳保护的apk文件无效.在未来的工作中,我们尝试使用动态分析方法研究加壳保护的重打包应用检测.
在进行粗粒度的快速重打包检测后,输出可疑的重打包应用|P|≪M(数据集中应用的数量),有效地降低了基于PDG的细粒度检测阶段中的分析规模,因此本文方法可以满足大规模应用市场的检测要求.
6 结论本文提出了一种基于程序依赖图的语义特征表示方法,利用Android平台API包含丰富的语义可以用于表示程序行为的特点,设计了一种基于语义特征的快速相似性检测方法,识别可疑的重打包应用.使用程序依赖图表示应用的特征,实现细粒度的准确检测.本文的方法能够有效地检测1.2节提到的类型1、2、3的重打包应用,但不适用类型4的重打包应用.
本文的检测方法仍然是用两两比较的方式来计算某一应用与合法应用之间的相似性距离,从而判断该应用是否为重打包应用.如果合法应用数据缺失,则会导致漏报.在未来工作中,我们将尝试从应用程序的代码风格出发,提取能表示重打包应用潜在特点的特征,降低检测的漏报率.
| [1] |
ZHOU Y J, JIANG X X. Dissecting Android malware: Characterization and evolution[C]//2012 IEEE Symposium on Security and Privacy (SP). Washington D C: IEEE Press, 2012: 95-109. DOI: 10.1109/sp.2012.16.
|
| [2] |
卿斯汉. Android安全研究进展[J]. 软件学报, 2016, 27(1): 45-71. QING S H. Research progress on Android security[J]. Journal of Software, 2016, 27(1): 45-71 (Ch). DOI:10.13328/j.cnki.jos.004914 |
| [3] |
张玉清, 王凯, 杨欢, 等. Android安全综述[J]. 计算机研究与发展, 2014, 51(7): 1385-1396. ZHANG Y Q, WANG K, YANG H, et al. Survey of Android OS security[J]. Journal of Computer Research and Development, 2014, 51(7): 1385-1396 (Ch). DOI:10.7544/issn1000-1239.2014.20140098 |
| [4] |
ACAR Y, BACKES M, BUGIEL S, et al. Sok: Lessons learned from Android security research for appified software platforms[C]//2016 IEEE Symposium on Security and Privacy (SP). Washington D C: IEEE Press, 2016: 433-451. DOI: 10.1109/SP.2016.33.
|
| [5] |
刘剑, 苏璞睿, 杨珉, 等. 软件与网络安全研究综述[J]. 软件学报, 2018, 29(1): 42-68. LIU J, SU P R, YANG M, et al. Software and cyber security-A survey[J]. Journal of Software, 2018, 29(1): 42-68 (Ch). DOI:10.13328/j.cnki.jos.005320 |
| [6] |
ZHOU W, ZHOU Y, JIANG X, et al. Detecting repackaged smartphone applications in third-party Android marketplaces[C]//Proceedings of the Second ACM Conference on Data and Application Security and Privacy. New York: ACM Press, 2012: 317-326. DOI: 10.1145/2133601.2133640.
|
| [7] |
LI L, LI D, BISSYANDE T F, et al. Understanding Android app piggybacking[C]//Proceedings of the 39th International Conference on Software Engineering Companion. Washington D C: IEEE Press, 2017: 359-361. DOI: 10.1109/ICSE-C.2017.109.
|
| [8] |
HANNA S, HUANG L, WU E, et al.Juxtapp: A scalable system for detecting code reuse among Android applications[C]//International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment. Heidelberg: Springer-Verlag, 2012: 62-81. DOI: 10.1007/978-3-642-37300-8_4.
|
| [9] |
CRUSSELL J, GIBLER C, CHEN H. Attack of the clones: Detecting cloned applications on Android markets[C]//European Symposium on Research in Computer Security (LNCS 7459). Heidelberg: Springer, 2012: 37-54. DOI: 10.1007/978-3-642-33167-1_3.
|
| [10] |
WANG H, GUO Y, MA Z, et al. Wukong: A scalable and accurate two-phase approach to Android app clone detection[C]//Proceedings of the 2015 International Symposium on Software Testing and Analysis. New York: ACM Press, 2015: 71-82. DOI: 10.1145/2771783.2771795.
|
| [11] |
王浩宇, 王仲禹, 郭耀, 等. 基于代码克隆检测技术的Android应用重打包检测[J]. 中国科学:信息科学, 2014, 44(1): 142-157. WANG H Y, WANG Z Y, GUO Y, et al. Detecting repackaged Android applications based on code clone detection technique[J]. Scientia Sinica (Informationis), 2014, 44(1): 142-157 (Ch). DOI:10.1360/N112013-00130 |
| [12] |
KIM D, GOKHALE A, GANAPATHY V, et al. Detecting plagiarized mobile apps using API birthmarks[J]. Automated Software Engineering, 2016, 23(4): 591-618. DOI:10.1007/s10515-015-0182-6 |
| [13] |
CHEN K, LIU P, ZHANG Y. Achieving accuracy and scalability simultaneously in detecting application clones on Android markets[C]//Proceedings of the 36th International Conference on Software Enginee- ring. New York: ACM Press, 2014: 175-186. DOI: 10.1145/2568225.2568286.
|
| [14] |
CHEN K, WANG P, LEE Y, et al. Finding Unknown Malice in 10 Seconds: Mass Vetting for New Threats at the Google-Play Scale[C/OL].[2018-05-12]. https://www.usenix.org/system/files/confe-rence/usenixsecurity15/sec15-paper-chen-kai.pdf.
|
| [15] |
ZHOU W, ZHOU Y, GRACE M, et al. Fast, scalable detection of "piggybacked" mobile applications[C]//Proceedings of the Third ACM Conference on Data and Application Security and Privacy. New York: ACM Press, 2013: 185-196. DOI: 10.1145/2435349.2435377.
|
| [16] |
CRUSSELL J, GIBLER C, CHEN H. AnDarwin: Scalable detection of semantically similar android applications[C]//European Symposium on Research in Computer Security. Heidelberg: Springer-Verlag, 2013: 182-199. DOI: 10.1007/978-3-642-40203-6_11.
|
| [17] |
ZHANG F, HUANG H, ZHU S, et al. ViewDroid: Towards obfuscation-resilient mobile application repackaging detection[C]//Proceedings of the 2014 ACM Conference on Security and Privacy in Wireless & Mobile Networks. New York: ACM Press, 2014: 25-36. DOI: 10.1145/2627393.2627395.
|
| [18] |
SUN M S, LI M M, LUI J C S. DroidEagle: Seamless detection of visually similar android apps[C]//Proceedings of the 8th ACM Conference on Security & Privacy in Wireless and Mobile Networks. New York: ACM Press, 2015: 1-12. DOI: 10.1145/2766498.2766508.
|
| [19] |
焦四辈, 应凌云, 杨轶, 等. 一种抗混淆的大规模Android应用相似性检测方法[J]. 计算机研究与发展, 2014, 51(7): 1446-1457. JIAO S B, YING L Y, YANG Y, et al. An anti-obfuscation method for detecting similarity among Android applications in large scale[J]. Journal of Computer Research and Development, 2014, 51(7): 1446-1457 (Ch). DOI:10.7544/issn1000-1239.2014.20121775 |
| [20] |
SHAO Y, LUO X, QIAN C, et al. Towards a scalable resource-driven approach for detecting repackaged android applications[C]//Proceedings of the 30th Annual Computer Security Applications Conference. New York: ACM Press, 2014: 56-65. DOI: 10.1145/2664243.2664275.
|
| [21] |
GADYATSKAYA O, LEZZA A L, ZHAUNIAROVICH Y. Evaluation of resource-based app repackaging detection in Android[C]//Nordic Conference on Secure IT Systems(LNCS 10014). Heidelberg: Springer-Verlag, 2016: 135-151. DOI: 10.1007/978-3-319-47560-8_9.
|
| [22] |
LIU C, CHEN C, HAN J, et al. GPLAG: Detection of software plagiarism by program dependence graph analysis[C]//Proceedings of The 12th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. New York: ACM Press, 2006: 872-881. DOI: 10.1145/1150402.1150522.
|
| [23] |
ZHOU Y, WANG Z, ZHOU W, et al. Hey, you, get off of my market: Detecting malicious apps in official and alternative Android markets[C/OL].[2018-05-12]. http://wp.internetsociety.org/ndss/wp-content/uploads/sites/25/2017/09/07_5.pdf.
|
| [24] |
ALLIX K, BISSYANDE T F, KLEIN J, et al. AndroZoo: Collecting millions of Android apps for the research community[C]//ACM 13th Working Conference on Mining Software Repositories. New York: ACM Press, 2016: 468-471. DOI: 10.1145/2901739.2903508.
|
| [25] |
LAM P, BODDEN E, LHOTAK O, et al. The soot framework for java program analysis: A retrospective[DB/OL].[2017-10-02].https://sable.github.io/soot/resources/lblh11soot.pdf.
|
| [26] |
CORDELLA L P, FOGGIA P, SANSONE, et al. A (sub) graph isomorphism algorithm for matching large graphs[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2004, 26(10): 1367-1372. DOI:10.1109/TPAMI.2004.75 |
2018, Vol. 64


