Android应用克隆检测的可扩展精确两阶段方法外文翻译资料

 2023-02-22 09:02

英语原文共 12 页,剩余内容已隐藏,支付完成后下载完整资料


悟空:Android应用克隆检测的可扩展精确两阶段方法

王皓宇、姚果、马子昂、陈向群

高可信软件技术重点实验室(教育部)

北京大学电子工程与计算机学院

{望月11日,耀国,马店14号,樱桃}@sei.pku.edu.cn

摘要

重新打包的Android应用程序(app clone)已经在许多第三方市场上被发现,这不仅侵犯了原始作者的版权,而且对移动用户的安全和隐私构成威胁。已经提出了细粒度和粗粒度方法来检测应用程序克隆。然而,采用复杂克隆检测算法的细粒度技术很难扩展到数十万个应用程序,而基于简单功能的粗粒度技术具有可扩展性,但精确度较低。本文提出了一种两阶段的检测方法WuKong,该方法包括粗粒度检测阶段,通过比较轻量级静态语义特征来识别可疑的应用程序;细粒度检测阶段,只对第一阶段中发现的应用程序比较详细的特征。为了进一步提高检测速度和准确性,我们还引入了一个基于自动聚类的预处理步骤,在进行app克隆检测之前过滤第三方库。从五个Android市场收集的超过100000个Android应用程序的实验证明了我们方法的有效性和可扩展性。

类别和主题描述

D、 2.7[软件工程]:分布、维护和增强重组、逆向工程和再工程

一般条款

算法、安全、实验

关键词

克隆检测,移动应用程序,Android,重新打包,第三方库

一。导言

在过去的几年里,智能手机和平板电脑等移动设备爆炸式增长。从那以后

允许为个人或

教室的使用是免费的,前提是复印件不是为了盈利或商业利益而制作或分发的,允许制作本作品的全部或部分的数字或硬拷贝,并且复印件上有本通知,并且只要复印件在首页上,个人或教室的全部引用是免费的。非ACM所有的本作品组成部分的版权

不得分发。允许对WithProfitCreditor进行摘要处理。若要避免,则必须在通知服务器上或在HeratedDistributionLecitationToLists上重新发布此副本。否则,则必须在FirstPriorPageSpecifii.ToopyPermissionOther和/或OAc类

费用。从permissions@acm.org请求权限。

重新发布、在服务器上发布或重新发布到列表,需要事先指定

ISSTA 15许可,Julyand/or12–a17,fee2015,。巴尔的摩,马里兰州,美国

伊斯塔15c2015ACM,7月。97812–-17,-45215,3-3620巴尔的摩,-8/15/07MD,hellip;15USA.00美元版权2015ACM1145/2771783978--4503-3620-8/15/07hellip;$15.00。0 http://dx.doi文件.组织/10..2771795

主导着智能手机市场,每天有超过150万台设备被激活[1]。开发了多种功能丰富的移动应用程序(简称app)。目前,谷歌游戏市场上的Android应用数量已经突破140万大关。

然而,Android应用程序很容易破解,因为有很多decom打桩工具可用[5,7]。黑客可以很容易地破解合法的应用程序,并在各种第三方市场重新发布广告。付费应用程序可以免费破解和广告。黑客还可以修改广告库以窃取收入

[26]。恶意黑客可能会将恶意软件插入合法的应用程序,以感染不易受攻击的用户[65]。这些行为不仅会导致原始作者失去潜在的收入,还会危及移动用户的安全和隐私。

已经提出了各种技术来检测重新打包的Android应用程序克隆,包括基于sim ple hashing[64,27]或其他静态语义特征[63,62]的技术,以及基于PDGs[24,25]或其他现有代码克隆技术[55]的更复杂技术。

我们注意到现有方法中的两个关键挑战:

如何在检测移动应用克隆的同时实现准确性和可扩展性。虽然简单的基于散列的方法[64,27]和基于静态语义特征的方法[63,62]非常快,但它们通常不如更复杂的方法(如基于PDG的检测)准确[24,55]。相反,尽管基于PDG的方法更为精确,但在拥有超过一百万个应用程序的市场上,它们无法扩展到执行应用程序克隆检测。因此,开发一种准确且可扩展的方法来检测Android市场上的应用克隆仍然是一个巨大的挑战[21]。

如何在应用程序克隆检测期间处理第三方库。与桌面/服务器应用程序相比,Android应用程序的一个特殊特性是,它们通常包含许多第三方库。根据我们的评估,Android应用程序中超过60%的子包来自第三方库,这可能以完全相同的形式出现在许多其他应用程序中。检测和过滤这些第三方库是很重要的,因为如果应用程序被这些库代码控制,那么应用程序克隆检测结果将明显倾斜。

现有的大多数方法[64、27、21、24、55]都使用白名单,通过比较外部库的包名来筛选外部库。例如,最近的一项工作[21]在白名单中使用了73个库的列表。然而,不可能建立一个完整的白名单

71

在现有的第三方库中,我们发现了600多个具有自动聚类技术的不同库。此外,有些库没有特定的包名称或使用模糊的包名称,而白名单无法检测到这些名称。

在本文中,我们提出了一种在Android市场上检测应用程序克隆的新方法WuKong。我们介绍了两个关键技术,以实现准确性和可扩展性。1

我们提出了一种新的基于聚类的技术来自动识别和过滤第三方库,与大多数最先进的应用程序中使用的白名单方法相比,这种方法更加有效和准确。实验结果表明,该方法可以有效地提高系统的性能

更有效,删除了10万个Android应用程序中超过60%的子包。2

我们提出了一种两阶段的应用克隆识别技术,包括粗粒度检测阶段,通过比较可疑的克隆应用的静态语义特征,快速选择可疑的克隆应用;细粒度检测阶段,执行更详细的代码段级比较,以细化结果。由于粗粒度阶段可以快速地将可疑克隆对缩小几个数量级,因此它允许细粒度阶段对有限数量的候选克隆执行详细检测。

我们已经实现了一个原型系统,并研究了从5个Android市场收集的10万多个应用程序。我们能够对这些应用程序执行应用程序克隆检测,而没有误报,而整个比较过程只需要几个小时。除了来自不同市场的应用程序克隆,我们还发现同一市场中也存在大量的克隆应用程序对。

2。背景

2.1 Android应用程序

Android应用程序通常用Java编写并编译为Dalvik字节码(DEX)。所有Java代码都包含在classes.dex文件中。编译后的代码和资源打包为Android包(.apk)。

Android应用程序的一个特别特点是,它们大多包含第三方库,如广告库、社交网络库、移动分析工具等。这些库通常构成相当一部分代码(在许多应用程序中高达50%),这可能会影响应用程序克隆检测的准确性和效率[63,64]。

此外,许多Android应用程序被模糊化,增加了逆向工程的难度[29,61,41]。例如,ProGuard[14]是一个模糊处理工具,可以通过删除未使用的代码和重命名具有语义模糊名称的类、字段和方法来缩小、优化和模糊源代码。混淆增加了识别第三方库的难度。

2.2应用程序克隆

术语app clones,也称为app repackage[64]或app piggy backing[63],用于描述场景

1悟空是中国民间传说中著名的虚构人物孙悟空的名字,他能用肉眼分辨出假的或克隆的生物和真的生物。

2 在本文中,每个子包都是指一个目录下的所有字节码文件,不包括其子目录,这样不同的子包中就不会有重复。

当两个应用具有相似的核心功能但拥有不同的所有权时。核心功能是指功能代码,不包括第三方库和框架。应用程序的所有权由应用程序的签名决定,该签名使用开发人员的私钥进行签名。我们假设开发人员的私钥不会泄露,因此克隆的应用程序必须有不同的签名。由同一开发人员开发的应用程序(例如,同一应用程序的不同版本)不被视为克隆应用程序。

根据Android应用的特点和应用克隆的标准,我们在检测克隆应用时面临以下挑战:

如何识别应用程序的核心功能?只有当一个应用程序的核心功能在另一个应用程序中克隆时,我们才能将它们视为克隆对。大多数应用程序都包含第三方库,这可能会对检测结果产生很大影响。高效准确地识别和过滤这些外部框架和库是识别核心功能的关键。

如何有效地进行配对比较?应用程序克隆可以出现在不同的市场或同一个市场。考虑到来自不同市场的应用程序,我们应该明智地比较这些应用程序对,以确定所有的克隆对。比较的数量随着应用程序的数量呈爆炸式增长。为了

例如,对100000个应用程序进行成对比较将产生近50亿个比较(C)。1000002

如何高效地生成应用程序功能?一个应用程序通常包含数千行代码,每个应用程序平均包含50000个操作码[27]。生成精确的特性来表示每个应用程序既重要又困难。简单的特性可能无法描述应用程序的详细特性,而详细的特性可能会增加比较的复杂性。

3. 悟空概况

3.1关键思想

如上所述,我们的目标是实现两个重要的目标:一个是准确地识别和过滤第三方库,另一个是同时实现准确性和可伸缩性。为了实现这两个目标,我们提出了两个关键技术:基于聚类的第三方库过滤和两阶段的应用克隆检测:

(一)一种基于自动聚类的高效、准确地过滤第三方库的方法。一般来说,第三方图书馆有两个特点:

(1) ,因此不同应用程序中的同一个库具有相同的特性;(2)它们可能被许多应用程序使用,因此我们可以通过聚类来识别它们,而无需事先了解。基于这两个特征,如果我们在子包级别为大量应用提取特征并将这些特征分组,则包含第三方库的子包将分组,因为许多不同的应用使用相同的库。应用程序开发人员不经修改即可使用它们

(二)采用两阶段的app克隆检测方法,同时实现了准确性和可扩展性。简单的检测方法可以扩展,因为它们包含的特征较少,但它们不能保证与更复杂的方法相同的精度。当

72

预处理

粗粒度检测

细粒度检测

静态的

代码块

安卓

反编译

应用程序

提取子包级别特征

子包级群集

不包括第三方制动器

语义的

水平

<!--

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[234397],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

课题毕业论文、文献综述、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。