一种基于关键词上下文频率矩阵的应用重打包辨别方法,应用于安卓系统,首先对应用程序文件进行处理,得到smali代码文件然后对smali代码处理,提取操作符序列,统计关键词信息,对每个特定类型的关键词构造上下文相关的特征三元组生成基于上下文频率的特征矩阵,对应用程序的特征矩阵进行两两对比,根据矩阵相似度得到两个应用程序的相似度。最后结合作者信息等内容判断应用程序间是否有重打包关系。用本发明专利技术提供的技术方案,可以对重打包的安卓应用程序进行判别,同时避免了对整个应用程序进行巨型字符串哈希处理的额外开销;不依赖原始文件二进制代码顺序;通过限制特征矩阵的大小,降低空间开销;提高了安卓应用程序重打包判别的执行效率。
【技术实现步骤摘要】
【专利摘要】,应用于安卓系统,首先对应用程序文件进行处理,得到smali代码文件然后对smali代码处理,提取操作符序列,统计关键词信息,对每个特定类型的关键词构造上下文相关的特征三元组生成基于上下文频率的特征矩阵,对应用程序的特征矩阵进行两两对比,根据矩阵相似度得到两个应用程序的相似度。最后结合作者信息等内容判断应用程序间是否有重打包关系。用本专利技术提供的技术方案,可以对重打包的安卓应用程序进行判别,同时避免了对整个应用程序进行巨型字符串哈希处理的额外开销;不依赖原始文件二进制代码顺序;通过限制特征矩阵的大小,降低空间开销;提高了安卓应用程序重打包判别的执行效率。【专利说明】—种基于关键词上下文频率矩阵的应用重打包辨别方法
本专利技术涉及,具体涉及一种在安卓平台下,利用应用程序代码关键词频率矩阵,识别应用重打包的处理方法。
技术介绍
安卓(Android)系统是谷歌公司开发并推广,基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,例如智能手机或平板电脑。安卓系统是目前全球市场份额最大的移动手机操作系统,来自官方的数据显示,安卓系统上的应用程序已经超过975,000个。通常,安卓系统应用程序由第三方开发者开发和发布,这就带来一个问题,即应用重打包。应用重打包是指,某些开发者通过不同渠道攫取其他开发者发布的应用,通过反编译,二进制代码插桩等技术,对现有应用程序进行修改(例如植入恶意代码,修改开发者信息,修改权限,对受保护内容进行破解等),再重新打包、发布。这就引发了关于版权,安全,著作权,隐私保护,恶意代码植入等诸多问题。Silvio Cesare 和 Yang Xiang在《Software Similarity and Classification》一书中总结了若干关于软件相似度和聚类分析的解决方案:例如通过字符串分析,对代码文本进行相似度比较,进而得出软件相似度的信息;以及通过对代码词频进行统计,根据统计结果比较软件相似度。不过这些解决方案并没有考虑移动平台应用相关的特殊情况。2012年,美国南加州大学Wu Zhou, Yajin Zhou等人提出了另一种解决方案(C0DASPY’ 12论文):利用混淆哈希技术,提取应用程序特征,然后利用混淆哈希生成应用的指纹,再采用滚动哈希技术,将指纹生成为一个特征向量,通过两个应用的特征向量相似度比较,判断是否存在软件重打包问题。该方法需要对所有代码进行分析,复杂低效,且依赖代码文本顺序,无法处理通过插入无用代码,代码混淆,函数重命名,改变代码顺序等对代码进行修改的情况。
技术实现思路
本专利技术的目的是提供一种新的方法,使得在较小开销,较快时间内,对给出的若干安卓应用程序进行预处理,得到一个基于关键词上下文频率的特征矩阵,通过对矩阵相似度的计算,进行聚类,得到这些安卓应用程序中哪些是重打包应用的信息。本专利技术的原理是:首先对应用程序文件(apk文件)进行处理,得到smali代码文件,smali代码是原来应用程序二进制代码的一种中间表示。然后对smali代码处理,提取操作符序列,统计关键词信息,对每个特定类型的关键词构造上下文相关的特征三元组<K1,i,K2>,生成基于上下文频率的特征矩阵,对应用程序的特征矩阵进行两两对比,根据矩阵相似度得到两个应用程序的相似度。最后结合作者信息等内容判断应用程序间是否有重打包关系。本专利技术提供的技术方案如下:,应用于安卓系统,其特征是,包括如下步骤(流程参见图9):A.对应用程序文件进行预处理,将二进制代码转换为smali代码文件、提取应用程序的作者签名信息并构造关键词向量;B.对smali代码文件进行处理,生成smali操作符序列;C.生成关键词上下文频率矩阵;D.对比应用程序关键词上下文频率矩阵的相似度,判断该应用程序是否为重打包应用。所述的应用重打包辨别方法,其特征是,步骤A包括:Al.提取安卓应用程序二进制代码文件以及ΜΕΤΑ-1NFO文件中的作者签名信息文件;A2.使用现有工具,将二进制代码转换为smali代码文件;A3.使用现有工具,从相应文件提取作者签名内容;A4.构造关键词向量。所述的应用重打包辨别方法,其特征是,步骤B包括:B1.对步骤A中得到的smali代码文件进行处理,去掉第三方库文件(主要是一些广告库,社交平台库等内容);B2.对步骤BI中得到的smali代码文件处理,将每条语句中的操作符以外的其他所有信息剥离,得到一个应用程序的smali操作符序列。所述的应用重打包辨别方法,其特征是,步骤C包括:Cl.构造关键词上下文频率矩阵Max ;C2.根据选定的关键词向量,对每一个关键词,在步骤B得到的smali操作符序列中的每一次出现,采用哈希算法,将其上文的K条语句和下文的K条语句分别映射为整数Kl和K2,其中,所述关键词在关键词向量中对应下标为i ;C3.增加特征矩阵对应位置Max 计数。所述的应用重打包辨别方法,其特征是,步骤D包括:Dl.对给定的安卓应用程序,计算其关键词上下文频率矩阵的相似度,以此作为标准,对两个安卓应用程序进行两两比较;D2.将关键词上下文频率矩阵的相似度计算结果超过指定阈值的安卓应用程序聚类,认为这一类的安卓应用程序可能存在重打包问题;D3.结合步骤A中得到的作者签名信息,进一步对步骤D2的判定结果进行筛选排查。所述的应用重打包辨别方法,其特征是,步骤Dl中,计算其关键词上下文频率矩阵的相似度的方法为:设原应用程序(即未重打包的原始应用程序)和待判断的应用程序的关键词上下文频率矩阵分别为Maxl,Max2,对两个矩阵的每一位,分别用Maxl 和Max2 表示,计算这两个数的最小值Min ,用score来表示其相似度得分,score=200* Σ Min / Σ (Maxi +Max2 )。所述的应用重打包辨别方法,其特征是,步骤D2中,所述的阈值为70。所述的应用重打包辨别方法,其特征是,步骤A4中,选择如下指令对应的操作符作为关键词:转移指令、函数调用指令、比较指令、声明类指令、运算指令、传送指令、抛出异常指令。所述的应用重打包辨别方法,其特征是,步骤A4中,选择如下操作符作为关键词:if、goto、invoke_virtual>invoke_static>invoke_direct> add-1nt/lit8> move_result_object、new-array、const/4、const/16、const-string、throw、new-1nstance、cmp1-float、and-1nt/litlo本专利技术的有益效果:利用本专利技术提供的技术方案,可以对重打包的安卓应用程序进行判别,同时避免了对整个应用程序进行巨型字符串哈希处理的额外开销;不依赖原始文件二进制代码顺序;通过限制特征矩阵的大小,降低空间开销;提高了安卓应用程序重打包判别的执行效率。【专利附图】【附图说明】图1本专利技术的应用程序预处理流程。图2本专利技术的生成smali操作符序列流程。图3本专利技术的生成关键词上下文频率矩阵流程。图4本专利技术的重打包结果判断流程。图5本专利技术实施例提供的应用程序预处流程图。图6本专利技术实施例提供的生成s本文档来自技高网...
【技术保护点】
一种基于关键词上下文频率矩阵的应用重打包辨别方法,应用于安卓系统,其特征是,包括如下步骤:A.对应用程序文件进行预处理,将二进制代码转换为smali代码文件、提取应用程序的作者签名信息并构造关键词向量;B.对smali代码文件进行处理,生成smali操作符序列;C.生成关键词上下文频率矩阵;D.对比应用程序关键词上下文频率矩阵的相似度,判断该应用程序是否为重打包应用。
【技术特征摘要】
【专利技术属性】
技术研发人员:郭耀,吕骁博,王浩宇,刘梦馨,陈向群,
申请(专利权)人:北京大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。