ANDROID应用相似性快速检测方法.pdf

上传人:000****221 文档编号:626327 上传时间:2018-02-26 格式:PDF 页数:12 大小:2.15MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410288712.8

申请日:

2014.06.24

公开号:

CN104063318A

公开日:

2014.09.24

当前法律状态:

驳回

有效性:

无权

法律详情:

发明专利申请公布后的驳回IPC(主分类):G06F 11/36申请公布日:20140924|||实质审查的生效IPC(主分类):G06F 11/36申请日:20140624|||公开

IPC分类号:

G06F11/36

主分类号:

G06F11/36

申请人:

湘潭大学

发明人:

程戈; 张云

地址:

411105 湖南省湘潭市雨湖区羊牯塘街道湘潭大学

优先权:

专利代理机构:

北京卓恒知识产权代理事务所(特殊普通合伙) 11394

代理人:

唐曙晖;刘明芳

PDF下载: PDF下载
内容摘要

本发明涉及一种Android应用相似性快速检测方法,包括:S1.采用Android API中的包名,类名,变量名与方法名作为关键词;S2.获取Android应用样本集;S3.反编译Android应用样本集中的所有样本,获取其Dalvik字节码文件;S4.依据逆文本频率指数算法,在Android应用样本集中的所有样本的Dalvik字节码文件中计算关键词的IDF;S5.反编译待比较Android应用,获取其Dalvik字节码文件;S6.统计每一待比较Android应用的Dalvik字节码文件中IDF非零的关键词的词频;S7.依据TF-IDF算法,计算每一个待比较Android应用的Dalvik字节码文件中所有关键词的TF-IDF权重;S8.依据每一个待比较Android应用的Dalvik字节码文件中所有关键词以及关键词的TF-IDF权重,计算每一个待比较Android应用的信息指纹;S9.依据待比较Android应用的信息指纹比较它们的相似性。

权利要求书

1.  Android应用相似性快速检测方法,所述方法包括以下步骤:
1)、采用Android API中的包名,类名,变量名和方法名作为关键词;
2)、获取Android应用样本集;
3)、反编译Android应用样本集中的所有样本,获取其Dalvik字节码文件;
4)、依据逆文本频率指数(Inverse Document Frequency,缩写IDF)算法,在Android应用样本集中的所有样本的Dalvik字节码文件中计算关键词的IDF;
5)、反编译待比较Android应用,获取其Dalvik字节码文件;
6)、统计每一个待比较Android应用的Dalvik字节码文件中IDF非零的关键词的词频(Term Frequency,缩写TF);
7)、依据TF-IDF算法,计算每一个待比较Android应用的Dalvik字节码文件中所有关键词的TF-IDF权重;
8)、依据每一个待比较Android应用的Dalvik字节码文件中所有关键词以及关键词的TF-IDF权重,计算每一个待比较Android应用的信息指纹;和
9)、依据待比较Android应用的信息指纹比较它们的相似性。

2.
  根据权利要求1的方法,其中在所述步骤1)中,Android API包括Google发布的所有版本的API;和/或
在所述步骤1)中,Android API的包名包含由符号“.”连接的多个字段,将整个包名作为关键字或将每个字段作为关键词;优选的是,将每个字段作为一个关键词。

3.
  根据权利要求1或2的方法,其中在所述步骤2)、3)和4)中,Android应用样本集是指在google Play市场或是第三方市场上发布的所有Android应用,或是其中的一部分应用;优选的在google Play市场上对于每一个人工分类中的最小Android应用子类选取固定数量的Android应用作为样本集。

4.
  根据权利要求1-3中任何一项的方法,其中在所述步骤3)和5)中,Dalvik字节码格式取决于其反编译工具;优选的是采用Baksmali作为反编译工具,该工具将Android代码反编译为以Smali格式的Dalvik字节码文件。

5.
  根据权利要求1-4中任何一项的方法,其中在所述步骤4)和6)中,将关键词转化为反编译工具决定的Dalvik字节码格式,优选的是将关键词转化为Smali格式,
和/或
在所述的步骤4)中,一个关键词W的IDF按照以下公式计算:
其中D表示Android应用样本集中样本的个数,Dw表示Android应用 样本集中包含关键词W的Dalvik字节码文件个数。

6.
  根据权利要求1-5中任何一项的方法,其中在所述步骤7)中,一个待比较Android应用中任何一个关键词的权重由该关键词在该Android应用的Dalvik字节码文件中出现的频率(TF)和步骤4)中计算出的该关键词的逆文本频率指数(IDF)共同决定;优选的是,一个待比较Android应用中某一个关键词的权重=TF*IDF。

7.
  根据权利要求1-6中任何一项的方法,其中在所述步骤8)中,一个Android应用的信息指纹是由该应用Dalvik字节码文件中的关键词的哈希值和关键词的权重共同决定。

8.
  根据权利要求1-7中任何一项的方法,其中在步骤8中,选取一个Android应用Dalvik字节码文件中权重N以上的关键词,使用哈希算法对这些关键词进行哈希运算;优选的是,使用MD5算法计算每个关键词的哈希值,则Android应用信息指纹等于其所有权重为N以上的关键词的哈希值之和,进一步优选的是,如果一个Android应用有k个权重大于N关键词构成集合S={W1,W2,……,Wk}则该Android应用的信息指纹为MD5(W1)+MD5(W2)+……+MD5(Wk),其中MD5(W1),MD5(W2),……MD5(Wk)分别表示该Android应用的关键词集合S中k个权重大于N关键词的MD5哈希值。

9.
  根据权利要求1-7中任何一项的方法,其中在步骤8中,采用相似哈希(Simhash)算法计算Android应用的信息指纹;进一步优选的是,如果一个Android应用有k个权重不为零的关键词集合S={W1,W2,……,Wk},每个关键词对应的权重为Weight1,Weight2,……,Weightk,采用MD5算法计算关键词的哈希值,对应的关键词的哈希值集合为MD5(S)={MD5(W1),MD5(W2),……,MD5(Wk)},则,使用包括如下步骤的相似哈希(Simhash)算法计算Android应用的信息指纹:
A1:对于Android应用的N位信息指纹,设置N个实数,用r1,r2,……,rn表示,并将它们的值初始化为零;
A2:从Android应用有K个权重不为零的关键词集合S={W1,W2,……,Wk}中选取关键词Wt
A3:从该Android应用关键词的哈希值集合中选取该关键词对应的哈希值MD5(Wt);
A4:遍历MD5(Wt)的N位哈希值,如果其第i位,哈希值为0,则将对应的第i个实数ri减去该关键词Wt对应的权重Weightt,如果其第i位,哈希值为1,则将对应的第i个实数ri 加上该关键词Wt对应的权重Weightt
A5:将关键词Wt从该Android应用关键词集合S={W1,W2,……,Wk}移除;
A6:如果该Android应用关键词集合不为空,转至步骤A2;和
A7:对于该Android应用的N位信息指纹,如果ri>0,则第i位值置为1,否则置为0。

10.
  根据权利要求1-9中任何一项的方法,其中在所述步骤S9中,Android应用的相似性取决于其信息指纹的位数与不同位数的个数。

说明书

Android应用相似性快速检测方法
技术领域
本发明属于移动互联网技术领域,具体涉及一种Android应用相似性快速检测方法。
背景技术
根据Google于2013年12月份的报告,搭载Android操作系统的智能终端激活量已经多达10亿台。为了让Android手机用户能够方便地浏览和安装Android手机应用,平台供应商提供了集中式的应用市场,应用开发者向应用市场提交自己的应用,使其开发的应用提供给成千上万的智能手机用户(Android应用已经突破了100万)。与此同时,人们也创造了各种不同用途(比如为了满足区域或本地化需求)的第三方应用市场。例如Cydia和Amazon应用商店分别容纳了成千上万的iPhone和Android应用。在中国,还有着众多的第三方应用市场。例如安智市场、机锋市场、木蚂蚁应用市场、安极市场等等。
然而,在这些应用市场上的移动应用程序中,存在数量众多的对合法应用程序的肆意修改,并用新的签名密钥进行重新打包并发布的应用。作为一种技术性方法,应用重新打包技术可以是出于良好的意图。然而,更常见的情况是,应用重新打包技术被用于恶意目的,由此给应用开发者、手机用户、市场运营商乃至整个Android生态系统都造成不容忽视的风险。例如,恶意软件作者可能会将具有破坏性的载体程序附加到合法的应用程序里面,然后在多个应用市场中通过广告推送的形式来感染不知情的用户,或是,将广告代码植入热门应用程序中,通过应用原作者获取广告收入。
针对上述问题,本发明提供一种Android应用相似性快速检测方法,可以从数以百万计的Android应用中快速而高效地识别出再包装的Android应用,保护Android开发者,避免侵犯它们所拥有的知识产权。此外,运营Android市场的厂商也能够利用该方法,确保它们的Android市场不会被经过再包装技术或者包含木马的应用程序所占领,使下载第三方软件的用户能够更放心的在Android平台上使用。
发明内容
本发明提出一种Android应用相似性快速检测方法,该方法采用Google提供的AndroidAPI作为关键词,通过Android应用反编译代码中关键词以及关键词的权重,计算Android应用的信息指纹,进行相似性比较。
根据本发明的第一个实施方案,本发明提供一种Android应用相似性快速检测方法,所述方法包括以下步骤:
1)、采用Android API中的包名,类名,变量名和方法名作为关键词;
2)、获取Android应用样本集;
3)、反编译Android应用样本集中的所有样本,获取其Dalvik字节码文件;
4)、依据逆文本频率指数(Inverse Document Frequency,缩写为IDF)算法,在Android应用样本集中的所有样本的Dalvik字节码文件中计算关键词的IDF;
5)、反编译待比较Android应用,获取其Dalvik字节码文件;
6)、统计每一个待比较Android应用的Dalvik字节码文件中IDF非零的关键词的词频(Term Frequency,缩写TF);
7)、依据TF-IDF算法,计算每一个待比较Android应用的Dalvik字节码文件中所有关键词的TF-IDF权重;
8)、依据每一个待比较Android应用的Dalvik字节码文件中所有关键词以及关键词的TF-IDF权重,计算每一个待比较Android应用的信息指纹;和
9)、依据待比较Android应用的信息指纹比较它们的相似性。
一般来说,在所述步骤1)中,Android API包括Google发布的所有版本的API。
进一步,在所述步骤1)中,Android API的包名包含由符号“.”连接的多个字段,将整个包名作为关键字或将每个字段作为关键词;优选的是,将每个字段作为一个关键词。
优选的是,在所述步骤2)、3)和4)中,Android应用样本集是指在google Play市场或是第三方市场上发布的所有Android应用,或是其中的一部分应用(或应用的一部分);优选的在google Play市场上对于每一个人工分类中的最小Android应用子类选取固定数量的Android应用作为样本集。
优选的是,在所述步骤3)和5)中,Dalvik字节码格式取决于其反编译工具;优选的是采用Baksmali作为反编译工具,该工具将Android代码反编译为以Smali格式的Dalvik字节码文件。
优选的是,在所述步骤4)和6)中,将关键词转化为反编译工具决定的Dalvik字节码格式,优选的是将关键词转化为Smali格式。
进一步,在所述的步骤4)中,一个关键词W的IDF按照以下公式计算:
其中D表示Android应用样本集中样本的个数,Dw表示Android应用样本集中包含关键词W的Dalvik字节码文件个数。
优选的是,在所述步骤7)中,一个待比较Android应用中任何一个关键词的权重由该关键词在该Android应用的Dalvik字节码文件中出现的频率(TF)和步骤4)中计算出的该关键词的逆文本频率指数(IDF)共同决定;优选的是,一个待比较Android应用中某一个关键词的权重=TF*IDF。
优选的是,在所述步骤8)中,一个Android应用的信息指纹是由该应用Dalvik字节码文件中的关键词的哈希值和关键词的权重共同决定。
优选的是,在步骤8中,选取一个Android应用Dalvik字节码文件中权重N以上的关键词,使用哈希算法对这些关键词进行哈希运算;优选的是,使用MD5算法计算每个关键词的哈希值,则Android应用信息指纹等于其所有权重为N以上的关键词的哈希值之和,进一步优选的是,如果一个Android应用有k个权重大于N关键词构成集合S=(W1,W2,……,Wk},则该Android应用的信息指纹为MD5(W1)+MD5(W2)+……+MD5(Wk),其中MD5(W1),MD5(W2),……MD5(Wk)分别表示该Android应用的关键词集合S中k个权重大于N关键词的MD5哈希值。
另外,优选的是,在步骤8中,采用相似哈希(Simhash)算法计算Android应用的信息指纹;进一步优选的是,如果(或假定)一个Android应用有k个权重不为零的关键词集合S={W1,W2,……,Wk},每个关键词对应的权重为Weight1,Weight2,……,Weightk,采用MD5算法计算关键词的哈希值,对应的关键词的哈希值集合为MD5(S)={MD5(W1),MD5(W2),……,MD5(Wk)},则,使用包括如下步骤的相似哈希(Simhash)算法计算Android应用的信息指纹:
A1:对于Android应用的N位信息指纹,设置N个实数,用r1,r2,……,rn表示,并将它们的值初始化为零;
A2:从Android应用有K个权重不为零的关键词集合S={W1,W2,……,Wk}中选取关键词Wt
A3:从该Android应用关键词的哈希值集合中选取该关键词对应的哈希值MD5(Wt);
A4:遍历MD5(Wt)的N位哈希值,如果其第i位,哈希值为0,则将对应的第i个实数ri减去该关键词Wt对应的权重Weightt,如果其第i位,哈希值为1,则将对应的第i个实数ri加上该关键词Wt对应的权重Weightt
A5:将关键词Wt从该Android应用关键词集合S={W1,W2,……,Wk}移除;
A6:如果该Android应用关键词集合不为空,转至步骤A2;和
A7:对于该Android应用的N位信息指纹,如果r1>0,则第i位值置为1,否则置为0。
优选的是,在所述步骤S9中,Android应用的相似性取决于其信息指纹的位数与不同位数的个数。如果相同的位数之和占总位数之和的90%以上或甚至95%以上,则判定两个Android应用相似。例如,对于64位Android应用的信息指纹,两个Android应用信息指纹有62位以上的哈希值相同,则判定两个Android应用相似。
术语解释:在本申请中“S1”步骤1,“S2”表示步骤2,以此类推。
本发明的技术效果或优点:
相比现有的技术方案,本发明提出的Android应用程序相似性快速检测方法是用Google提供的Android API作为关键词,依据Android应用反编译代码中关键词及关键词的权重,计算Android应用的信息指纹。信息指纹是一种哈希值,本发明提出的方法将Android应用的相似性检测转化为其信息指纹的比较问题。因为计算机可以快速比较哈希值之间的异同,因此,本发明的方法可以快速有效的处理海量Android应用的相似性检测问题。
附图说明
图1是Android level19部分API。
图2是一段Android应用反编译后Smail格式的Dalvik字节码。
图3是Android应用相似性检测方法流程图。
在图3中,
301:S1采用Android API中的包名,类名,变量名与方法名作为关键词;
302:S2.获取Android应用样本集;
303:S3.反编译Android应用样本集中的所有样本,获取其Dalvik字节码文件;
304:S4.依据IDF算法,在Android应用样本集中的所有样本的Dalvik字节码文件中计算关键词的IDF;
305:S5反编译待比较Android应用,获取其Dalvik字节码文件;
306:S6统计每一待比较Android应用的Dalvik字节码文件中IDF非零的关键词的TF;
307:S7.依据TF-IDF算法,计算每一个待比较Android应用的Dalvik字节码文件中所有关键词的TF-IDF权重;
308:S8.依据每一个待比较Android应用的Dalvik字节码;
309:S9.依据待比较Android应用的信息指纹比较它们的相似性。
图4是相似哈希(Simhash)算法计算Android应用的信息指纹的步骤。
在图4中
401:A1对于Android应用的N位信息指纹,设置N个实数,将它们的值初始化为零;
402:A2从Android应用有K个权重不为零的关键词集合S={W1,W2,……,Wk}中选取关键词Wt
403:A3从该Android应用关键词的哈希值集合中选取该关键词对应的哈希值MD5(Wt);
404:A4遍历MD5(Wt)的N位哈希值,如果其第i位哈希值为0,则将对应的第i个实数ri减去Weightt。否则,加上Weightt
405:A5将关键词Wt从该Android应用关键词集合S中移除;
406:A6如果该Android应用关键词S集合不为空,转步骤A2;
407:A7对于该Android应用的,如果r1>0,则N位信息指纹的第i位值置为1,否则置为0。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式做进一步描述。如图3所示本实施例所提供的Android应用相似性快速检测方法包括以下主要步骤:
S1.采用Android API中的包名,类名,变量名与方法名作为关键词;
S2.获取Android应用样本集;
S3.反编译Android应用样本集中的所有样本,获取其Dalvik字节码文件;
S4.依据逆文本频率指数(Inverse Document Frequency缩写IDF)算法,在Android应用样本集中的所有样本的Dalvik字节码文件中计算关键词的IDF;
S5.反编译待比较Android应用,获取其Dalvik字节码文件;
S6.统计每一个待比较Android应用的Dalvik字节码文件中IDF非零的关键词的词频(Term Frequency缩写TF);
S7.依据TF-IDF算法,计算每一个待比较Android应用的Dalvik字节码文件中所有关键词的TF-IDF权重;
S8.依据每一个待比较Android应用的Dalvik字节码文件中所有关键词以及关键词的TF-IDF权重,计算每一个待比较Android应用的信息指纹;
S9.依据待比较Android应用的信息指纹比较它们的相似性。
在步骤1中Android API包括Google发布的所有版本的API。Android API的包名包含由 符号“.”连接的多个字段,可以将整个包名作为关键词,也可以将每个字段作为关键词。优选的将每个字段作为一个关键词。例如图1为google API level19中的部分包名与某一个类的部分方法名。其中包名andour.animation中,andour和animation都作为关键词,公有方法addListener等也作为关键词。
在所述步骤S2、S3和S4中,Android应用样本集是指在google Play市场或是第三方市场上发布的所有Android应用,或是其中的一部分应用。优选的在google Play市场上对于每一个人工分类中的最小Android应用子类选取固定数量的Android应用作为样本集。
在所述步骤S3和S5中,Dalvik字节码格式决定于其反编译工具,优选的采用Baksmali作为反编译工具,该工具将Android代码反编译为以Smali格式的Dalvik字节码文件。
在所述步骤S4和S6中,应将关键词转化为反编译工具决定的Dalvik字节码格式,优选的转化为Smali格式。如图2所示,一段Android应用反编译后Smail格式的Dalvik字节码,其中对于包名第一个字段,Smali格式增加了一个前缀字母L。
在所述的步骤S4中,一个关键词W的IDF按照以下公式计算其中D表示Android应用样本集中样本的个数,Dw表示Android应用样本集中包含关键词W的Dalvik字节码文件个数。因此,Dw越大,关键词W的权重越小。
在所述步骤S7中,一个待比较Android应用中某一个关键词的权重由该关键词在该Android应用的Dalvik字节码文件中出现的频率(TF)和步骤S4中计算出的该关键词的逆文本频率指数(IDF)共同决定。优选的一个待比较Android应用中某一个关键词的权重=TF*IDF。
其中在所述步骤S8中,一个Android应用的信息指纹是由该应用的关键词的哈希值和关键词的权重共同决定。
优选的可以选取权重N以上的关键词,对这些关键词进行哈希运算,优选的使用MD5算法计算每个关键词的哈希值。那么Android应用的信息指纹等于所有权重为N以上的关键词的哈希值之和。近一步优选的,如果一个Android应用有K个权重大于N关键词构成集合S={W1,W2,……,Wk}那么,该Android应用的信息指纹为MD5(W1)+MD5(W2)+……+MD5(Wk)。其中MD5(W1),MD5(W2),……MD5(Wk)分别表示该Android应用的关键词集合S中k个权重大于N关键词的MD5哈希值。

优选的是,可以采用相似哈希(Simhash)算法计算Android应用的信息指纹。进一步优选的,如果一个Android应用有K个权重不为零的关键词集合S={W1,W2,……,Wk},每个关键词对应的权重Weight1,Weight2,……,Weightk。采用MD5计算关键词的哈希值,对应的关键词的哈希值集合为MD5(S)=(MD5(W1),MD5(W2),……,MD5(Wk)}。那么,如图4使用如下步骤的相似哈希(Simhash)算法计算Android应用的信息指纹:
A1对于Android应用的N位信息指纹,设置N个实数r1,r2,……,rn,将它们的值初始化为零;
A2从Android应用有K个权重不为零的关键词集合S={W1,W2,……,Wk}中选取关键词Wt
A3从该Android应用关键词的哈希值集合中选取该关键词对应的哈希值MD5(Wt);
A4遍历MD5(Wt)的N位哈希值,如果其第i位哈希值为0,则将对应的第i个实数ri减去该关键词Wt对应的权重Weightt,如果其第i位哈希值为1,则将对应的第i个实数ri加上该关键词Wt对应的权重Weightt;例如,假设哈希值为8位,Wt是第一个被选中的关键词,MD5(Wt)值为10110110,则,r1,r2,……,r8的值分别为Weightt,-Weightt,Weightt,Weightt,-Weightt,Weightt,Weightt,-Weightt
A5将关键词Wt从该Android应用关键词集合s中移除;
A6如果该Android应用关键词S集合不为空,转步骤A2;
A7对于该Android应用的信息指纹,如果ri>0,则N位信息指纹的第i位值置为1,否则置为0。例如,假设信息指纹为8位,r1,r2,……,r8的值分别为:-0.6,0.12,1.5,-1.3,1.7,0.5,-0.2,0.3,则该Android应用的8位信息指纹为01101101。
在所述步骤S9中,Android应用的相似性取决于其信息指纹的位数与不同位数的个数。例如,对于64位Android应用的信息指纹,两个Android应用信息指纹有62位以上的哈希值相同,则判定两个Android应用相似。
上面是本发明提供的Android应用相似性快速检测方法优选实施方式,并不构成对本发明的保护权限,任何在本发明上的改进,只要原理相同,都包含在本发明的权利要求保护范围之内。

ANDROID应用相似性快速检测方法.pdf_第1页
第1页 / 共12页
ANDROID应用相似性快速检测方法.pdf_第2页
第2页 / 共12页
ANDROID应用相似性快速检测方法.pdf_第3页
第3页 / 共12页
点击查看更多>>
资源描述

《ANDROID应用相似性快速检测方法.pdf》由会员分享,可在线阅读,更多相关《ANDROID应用相似性快速检测方法.pdf(12页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN104063318A43申请公布日20140924CN104063318A21申请号201410288712822申请日20140624G06F11/3620060171申请人湘潭大学地址411105湖南省湘潭市雨湖区羊牯塘街道湘潭大学72发明人程戈张云74专利代理机构北京卓恒知识产权代理事务所特殊普通合伙11394代理人唐曙晖刘明芳54发明名称ANDROID应用相似性快速检测方法57摘要本发明涉及一种ANDROID应用相似性快速检测方法,包括S1采用ANDROIDAPI中的包名,类名,变量名与方法名作为关键词;S2获取ANDROID应用样本集;S3反编译ANDROID应用样。

2、本集中的所有样本,获取其DALVIK字节码文件;S4依据逆文本频率指数算法,在ANDROID应用样本集中的所有样本的DALVIK字节码文件中计算关键词的IDF;S5反编译待比较ANDROID应用,获取其DALVIK字节码文件;S6统计每一待比较ANDROID应用的DALVIK字节码文件中IDF非零的关键词的词频;S7依据TFIDF算法,计算每一个待比较ANDROID应用的DALVIK字节码文件中所有关键词的TFIDF权重;S8依据每一个待比较ANDROID应用的DALVIK字节码文件中所有关键词以及关键词的TFIDF权重,计算每一个待比较ANDROID应用的信息指纹;S9依据待比较ANDROI。

3、D应用的信息指纹比较它们的相似性。51INTCL权利要求书2页说明书6页附图3页19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书6页附图3页10申请公布号CN104063318ACN104063318A1/2页21ANDROID应用相似性快速检测方法,所述方法包括以下步骤1、采用ANDROIDAPI中的包名,类名,变量名和方法名作为关键词;2、获取ANDROID应用样本集;3、反编译ANDROID应用样本集中的所有样本,获取其DALVIK字节码文件;4、依据逆文本频率指数INVERSEDOCUMENTFREQUENCY,缩写IDF算法,在ANDROID应用样本集中的所有样本。

4、的DALVIK字节码文件中计算关键词的IDF;5、反编译待比较ANDROID应用,获取其DALVIK字节码文件;6、统计每一个待比较ANDROID应用的DALVIK字节码文件中IDF非零的关键词的词频TERMFREQUENCY,缩写TF;7、依据TFIDF算法,计算每一个待比较ANDROID应用的DALVIK字节码文件中所有关键词的TFIDF权重;8、依据每一个待比较ANDROID应用的DALVIK字节码文件中所有关键词以及关键词的TFIDF权重,计算每一个待比较ANDROID应用的信息指纹;和9、依据待比较ANDROID应用的信息指纹比较它们的相似性。2根据权利要求1的方法,其中在所述步骤1。

5、中,ANDROIDAPI包括GOOGLE发布的所有版本的API;和/或在所述步骤1中,ANDROIDAPI的包名包含由符号“”连接的多个字段,将整个包名作为关键字或将每个字段作为关键词;优选的是,将每个字段作为一个关键词。3根据权利要求1或2的方法,其中在所述步骤2、3和4中,ANDROID应用样本集是指在GOOGLEPLAY市场或是第三方市场上发布的所有ANDROID应用,或是其中的一部分应用;优选的在GOOGLEPLAY市场上对于每一个人工分类中的最小ANDROID应用子类选取固定数量的ANDROID应用作为样本集。4根据权利要求13中任何一项的方法,其中在所述步骤3和5中,DALVIK字。

6、节码格式取决于其反编译工具;优选的是采用BAKSMALI作为反编译工具,该工具将ANDROID代码反编译为以SMALI格式的DALVIK字节码文件。5根据权利要求14中任何一项的方法,其中在所述步骤4和6中,将关键词转化为反编译工具决定的DALVIK字节码格式,优选的是将关键词转化为SMALI格式,和/或在所述的步骤4中,一个关键词W的IDF按照以下公式计算其中D表示ANDROID应用样本集中样本的个数,DW表示ANDROID应用样本集中包含关键词W的DALVIK字节码文件个数。6根据权利要求15中任何一项的方法,其中在所述步骤7中,一个待比较ANDROID应用中任何一个关键词的权重由该关键词。

7、在该ANDROID应用的DALVIK字节码文件中出现的频率TF和步骤4中计算出的该关键词的逆文本频率指数IDF共同决定;优选的是,一个待比较ANDROID应用中某一个关键词的权重TFIDF。7根据权利要求16中任何一项的方法,其中在所述步骤8中,一个ANDROID应用的信息指纹是由该应用DALVIK字节码文件中的关键词的哈希值和关键词的权重共同决定。8根据权利要求17中任何一项的方法,其中在步骤8中,选取一个ANDROID应用权利要求书CN104063318A2/2页3DALVIK字节码文件中权重N以上的关键词,使用哈希算法对这些关键词进行哈希运算;优选的是,使用MD5算法计算每个关键词的哈希。

8、值,则ANDROID应用信息指纹等于其所有权重为N以上的关键词的哈希值之和,进一步优选的是,如果一个ANDROID应用有K个权重大于N关键词构成集合SW1,W2,WK则该ANDROID应用的信息指纹为MD5W1MD5W2MD5WK,其中MD5W1,MD5W2,MD5WK分别表示该ANDROID应用的关键词集合S中K个权重大于N关键词的MD5哈希值。9根据权利要求17中任何一项的方法,其中在步骤8中,采用相似哈希SIMHASH算法计算ANDROID应用的信息指纹;进一步优选的是,如果一个ANDROID应用有K个权重不为零的关键词集合SW1,W2,WK,每个关键词对应的权重为WEIGHT1,WEI。

9、GHT2,WEIGHTK,采用MD5算法计算关键词的哈希值,对应的关键词的哈希值集合为MD5SMD5W1,MD5W2,MD5WK,则,使用包括如下步骤的相似哈希SIMHASH算法计算ANDROID应用的信息指纹A1对于ANDROID应用的N位信息指纹,设置N个实数,用R1,R2,RN表示,并将它们的值初始化为零;A2从ANDROID应用有K个权重不为零的关键词集合SW1,W2,WK中选取关键词WT;A3从该ANDROID应用关键词的哈希值集合中选取该关键词对应的哈希值MD5WT;A4遍历MD5WT的N位哈希值,如果其第I位,哈希值为0,则将对应的第I个实数RI减去该关键词WT对应的权重WEIG。

10、HTT,如果其第I位,哈希值为1,则将对应的第I个实数RI加上该关键词WT对应的权重WEIGHTT;A5将关键词WT从该ANDROID应用关键词集合SW1,W2,WK移除;A6如果该ANDROID应用关键词集合不为空,转至步骤A2;和A7对于该ANDROID应用的N位信息指纹,如果RI0,则第I位值置为1,否则置为0。10根据权利要求19中任何一项的方法,其中在所述步骤S9中,ANDROID应用的相似性取决于其信息指纹的位数与不同位数的个数。权利要求书CN104063318A1/6页4ANDROID应用相似性快速检测方法技术领域0001本发明属于移动互联网技术领域,具体涉及一种ANDROID应。

11、用相似性快速检测方法。背景技术0002根据GOOGLE于2013年12月份的报告,搭载ANDROID操作系统的智能终端激活量已经多达10亿台。为了让ANDROID手机用户能够方便地浏览和安装ANDROID手机应用,平台供应商提供了集中式的应用市场,应用开发者向应用市场提交自己的应用,使其开发的应用提供给成千上万的智能手机用户ANDROID应用已经突破了100万。与此同时,人们也创造了各种不同用途比如为了满足区域或本地化需求的第三方应用市场。例如CYDIA和AMAZON应用商店分别容纳了成千上万的IPHONE和ANDROID应用。在中国,还有着众多的第三方应用市场。例如安智市场、机锋市场、木蚂蚁。

12、应用市场、安极市场等等。0003然而,在这些应用市场上的移动应用程序中,存在数量众多的对合法应用程序的肆意修改,并用新的签名密钥进行重新打包并发布的应用。作为一种技术性方法,应用重新打包技术可以是出于良好的意图。然而,更常见的情况是,应用重新打包技术被用于恶意目的,由此给应用开发者、手机用户、市场运营商乃至整个ANDROID生态系统都造成不容忽视的风险。例如,恶意软件作者可能会将具有破坏性的载体程序附加到合法的应用程序里面,然后在多个应用市场中通过广告推送的形式来感染不知情的用户,或是,将广告代码植入热门应用程序中,通过应用原作者获取广告收入。0004针对上述问题,本发明提供一种ANDROID。

13、应用相似性快速检测方法,可以从数以百万计的ANDROID应用中快速而高效地识别出再包装的ANDROID应用,保护ANDROID开发者,避免侵犯它们所拥有的知识产权。此外,运营ANDROID市场的厂商也能够利用该方法,确保它们的ANDROID市场不会被经过再包装技术或者包含木马的应用程序所占领,使下载第三方软件的用户能够更放心的在ANDROID平台上使用。发明内容0005本发明提出一种ANDROID应用相似性快速检测方法,该方法采用GOOGLE提供的ANDROIDAPI作为关键词,通过ANDROID应用反编译代码中关键词以及关键词的权重,计算ANDROID应用的信息指纹,进行相似性比较。0006。

14、根据本发明的第一个实施方案,本发明提供一种ANDROID应用相似性快速检测方法,所述方法包括以下步骤00071、采用ANDROIDAPI中的包名,类名,变量名和方法名作为关键词;00082、获取ANDROID应用样本集;00093、反编译ANDROID应用样本集中的所有样本,获取其DALVIK字节码文件;00104、依据逆文本频率指数INVERSEDOCUMENTFREQUENCY,缩写为IDF算法,在ANDROID应用样本集中的所有样本的DALVIK字节码文件中计算关键词的IDF;说明书CN104063318A2/6页500115、反编译待比较ANDROID应用,获取其DALVIK字节码文件。

15、;00126、统计每一个待比较ANDROID应用的DALVIK字节码文件中IDF非零的关键词的词频TERMFREQUENCY,缩写TF;00137、依据TFIDF算法,计算每一个待比较ANDROID应用的DALVIK字节码文件中所有关键词的TFIDF权重;00148、依据每一个待比较ANDROID应用的DALVIK字节码文件中所有关键词以及关键词的TFIDF权重,计算每一个待比较ANDROID应用的信息指纹;和00159、依据待比较ANDROID应用的信息指纹比较它们的相似性。0016一般来说,在所述步骤1中,ANDROIDAPI包括GOOGLE发布的所有版本的API。0017进一步,在所述步。

16、骤1中,ANDROIDAPI的包名包含由符号“”连接的多个字段,将整个包名作为关键字或将每个字段作为关键词;优选的是,将每个字段作为一个关键词。0018优选的是,在所述步骤2、3和4中,ANDROID应用样本集是指在GOOGLEPLAY市场或是第三方市场上发布的所有ANDROID应用,或是其中的一部分应用或应用的一部分;优选的在GOOGLEPLAY市场上对于每一个人工分类中的最小ANDROID应用子类选取固定数量的ANDROID应用作为样本集。0019优选的是,在所述步骤3和5中,DALVIK字节码格式取决于其反编译工具;优选的是采用BAKSMALI作为反编译工具,该工具将ANDROID代码反。

17、编译为以SMALI格式的DALVIK字节码文件。0020优选的是,在所述步骤4和6中,将关键词转化为反编译工具决定的DALVIK字节码格式,优选的是将关键词转化为SMALI格式。0021进一步,在所述的步骤4中,一个关键词W的IDF按照以下公式计算0022其中D表示ANDROID应用样本集中样本的个数,DW表示ANDROID应用样本集中包含关键词W的DALVIK字节码文件个数。0023优选的是,在所述步骤7中,一个待比较ANDROID应用中任何一个关键词的权重由该关键词在该ANDROID应用的DALVIK字节码文件中出现的频率TF和步骤4中计算出的该关键词的逆文本频率指数IDF共同决定;优选的。

18、是,一个待比较ANDROID应用中某一个关键词的权重TFIDF。0024优选的是,在所述步骤8中,一个ANDROID应用的信息指纹是由该应用DALVIK字节码文件中的关键词的哈希值和关键词的权重共同决定。0025优选的是,在步骤8中,选取一个ANDROID应用DALVIK字节码文件中权重N以上的关键词,使用哈希算法对这些关键词进行哈希运算;优选的是,使用MD5算法计算每个关键词的哈希值,则ANDROID应用信息指纹等于其所有权重为N以上的关键词的哈希值之和,进一步优选的是,如果一个ANDROID应用有K个权重大于N关键词构成集合SW1,W2,WK,则该ANDROID应用的信息指纹为MD5W1M。

19、D5W2MD5WK,其中MD5W1,MD5W2,MD5WK分别表示该ANDROID应用的关键词集合S中K个权重大于N关键词的MD5哈希值。0026另外,优选的是,在步骤8中,采用相似哈希SIMHASH算法计算ANDROID应用的信息指纹;进一步优选的是,如果或假定一个ANDROID应用有K个权重不为零的关键词说明书CN104063318A3/6页6集合SW1,W2,WK,每个关键词对应的权重为WEIGHT1,WEIGHT2,WEIGHTK,采用MD5算法计算关键词的哈希值,对应的关键词的哈希值集合为MD5SMD5W1,MD5W2,MD5WK,则,使用包括如下步骤的相似哈希SIMHASH算法计算。

20、ANDROID应用的信息指纹0027A1对于ANDROID应用的N位信息指纹,设置N个实数,用R1,R2,RN表示,并将它们的值初始化为零;0028A2从ANDROID应用有K个权重不为零的关键词集合SW1,W2,WK中选取关键词WT;0029A3从该ANDROID应用关键词的哈希值集合中选取该关键词对应的哈希值MD5WT;0030A4遍历MD5WT的位哈希值,如果其第I位,哈希值为0,则将对应的第I个实数RI减去该关键词WT对应的权重WEIGHTT,如果其第I位,哈希值为1,则将对应的第I个实数RI加上该关键词WT对应的权重WEIGHTT;0031A5将关键词WT从该ANDROID应用关键词。

21、集合SW1,W2,WK移除;0032A6如果该ANDROID应用关键词集合不为空,转至步骤A2;和0033A7对于该ANDROID应用的N位信息指纹,如果R10,则第I位值置为1,否则置为0。0034优选的是,在所述步骤S9中,ANDROID应用的相似性取决于其信息指纹的位数与不同位数的个数。如果相同的位数之和占总位数之和的90以上或甚至95以上,则判定两个ANDROID应用相似。例如,对于64位ANDROID应用的信息指纹,两个ANDROID应用信息指纹有62位以上的哈希值相同,则判定两个ANDROID应用相似。0035术语解释在本申请中“S1”步骤1,“S2”表示步骤2,以此类推。0036。

22、本发明的技术效果或优点0037相比现有的技术方案,本发明提出的ANDROID应用程序相似性快速检测方法是用GOOGLE提供的ANDROIDAPI作为关键词,依据ANDROID应用反编译代码中关键词及关键词的权重,计算ANDROID应用的信息指纹。信息指纹是一种哈希值,本发明提出的方法将ANDROID应用的相似性检测转化为其信息指纹的比较问题。因为计算机可以快速比较哈希值之间的异同,因此,本发明的方法可以快速有效的处理海量ANDROID应用的相似性检测问题。附图说明0038图1是ANDROIDLEVEL19部分API。0039图2是一段ANDROID应用反编译后SMAIL格式的DALVIK字节码。

23、。0040图3是ANDROID应用相似性检测方法流程图。0041在图3中,0042301S1采用ANDROIDAPI中的包名,类名,变量名与方法名作为关键词;0043302S2获取ANDROID应用样本集;0044303S3反编译ANDROID应用样本集中的所有样本,获取其DALVIK字节码文件;0045304S4依据IDF算法,在ANDROID应用样本集中的所有样本的DALVIK字节码文说明书CN104063318A4/6页7件中计算关键词的IDF;0046305S5反编译待比较ANDROID应用,获取其DALVIK字节码文件;0047306S6统计每一待比较ANDROID应用的DALVIK。

24、字节码文件中IDF非零的关键词的TF;0048307S7依据TFIDF算法,计算每一个待比较ANDROID应用的DALVIK字节码文件中所有关键词的TFIDF权重;0049308S8依据每一个待比较ANDROID应用的DALVIK字节码;0050309S9依据待比较ANDROID应用的信息指纹比较它们的相似性。0051图4是相似哈希SIMHASH算法计算ANDROID应用的信息指纹的步骤。0052在图4中0053401A1对于ANDROID应用的N位信息指纹,设置N个实数,将它们的值初始化为零;0054402A2从ANDROID应用有K个权重不为零的关键词集合SW1,W2,WK中选取关键词WT。

25、;0055403A3从该ANDROID应用关键词的哈希值集合中选取该关键词对应的哈希值MD5WT;0056404A4遍历MD5WT的N位哈希值,如果其第I位哈希值为0,则将对应的第I个实数RI减去WEIGHTT。否则,加上WEIGHTT;0057405A5将关键词WT从该ANDROID应用关键词集合S中移除;0058406A6如果该ANDROID应用关键词S集合不为空,转步骤A2;0059407A7对于该ANDROID应用的,如果R10,则N位信息指纹的第I位值置为1,否则置为0。具体实施方式0060下面结合附图和实施例,对本发明的具体实施方式做进一步描述。如图3所示本实施例所提供的ANDRO。

26、ID应用相似性快速检测方法包括以下主要步骤0061S1采用ANDROIDAPI中的包名,类名,变量名与方法名作为关键词;0062S2获取ANDROID应用样本集;0063S3反编译ANDROID应用样本集中的所有样本,获取其DALVIK字节码文件;0064S4依据逆文本频率指数INVERSEDOCUMENTFREQUENCY缩写IDF算法,在ANDROID应用样本集中的所有样本的DALVIK字节码文件中计算关键词的IDF;0065S5反编译待比较ANDROID应用,获取其DALVIK字节码文件;0066S6统计每一个待比较ANDROID应用的DALVIK字节码文件中IDF非零的关键词的词频TE。

27、RMFREQUENCY缩写TF;0067S7依据TFIDF算法,计算每一个待比较ANDROID应用的DALVIK字节码文件中所有关键词的TFIDF权重;0068S8依据每一个待比较ANDROID应用的DALVIK字节码文件中所有关键词以及关键词的TFIDF权重,计算每一个待比较ANDROID应用的信息指纹;0069S9依据待比较ANDROID应用的信息指纹比较它们的相似性。说明书CN104063318A5/6页80070在步骤1中ANDROIDAPI包括GOOGLE发布的所有版本的API。ANDROIDAPI的包名包含由符号“”连接的多个字段,可以将整个包名作为关键词,也可以将每个字段作为关键。

28、词。优选的将每个字段作为一个关键词。例如图1为GOOGLEAPILEVEL19中的部分包名与某一个类的部分方法名。其中包名ANDOURANIMATION中,ANDOUR和ANIMATION都作为关键词,公有方法ADDLISTENER等也作为关键词。0071在所述步骤S2、S3和S4中,ANDROID应用样本集是指在GOOGLEPLAY市场或是第三方市场上发布的所有ANDROID应用,或是其中的一部分应用。优选的在GOOGLEPLAY市场上对于每一个人工分类中的最小ANDROID应用子类选取固定数量的ANDROID应用作为样本集。0072在所述步骤S3和S5中,DALVIK字节码格式决定于其反编。

29、译工具,优选的采用BAKSMALI作为反编译工具,该工具将ANDROID代码反编译为以SMALI格式的DALVIK字节码文件。0073在所述步骤S4和S6中,应将关键词转化为反编译工具决定的DALVIK字节码格式,优选的转化为SMALI格式。如图2所示,一段ANDROID应用反编译后SMAIL格式的DALVIK字节码,其中对于包名第一个字段,SMALI格式增加了一个前缀字母L。0074在所述的步骤S4中,一个关键词W的IDF按照以下公式计算其中D表示ANDROID应用样本集中样本的个数,DW表示ANDROID应用样本集中包含关键词W的DALVIK字节码文件个数。因此,DW越大,关键词W的权重越。

30、小。0075在所述步骤S7中,一个待比较ANDROID应用中某一个关键词的权重由该关键词在该ANDROID应用的DALVIK字节码文件中出现的频率TF和步骤S4中计算出的该关键词的逆文本频率指数IDF共同决定。优选的一个待比较ANDROID应用中某一个关键词的权重TFIDF。0076其中在所述步骤S8中,一个ANDROID应用的信息指纹是由该应用的关键词的哈希值和关键词的权重共同决定。0077优选的可以选取权重N以上的关键词,对这些关键词进行哈希运算,优选的使用MD5算法计算每个关键词的哈希值。那么ANDROID应用的信息指纹等于所有权重为N以上的关键词的哈希值之和。近一步优选的,如果一个AN。

31、DROID应用有K个权重大于N关键词构成集合SW1,W2,WK那么,该ANDROID应用的信息指纹为MD5W1MD5W2MD5WK。其中MD5W1,MD5W2,MD5WK分别表示该ANDROID应用的关键词集合S中K个权重大于N关键词的MD5哈希值。0078或0079优选的是,可以采用相似哈希SIMHASH算法计算ANDROID应用的信息指纹。进一步优选的,如果一个ANDROID应用有K个权重不为零的关键词集合SW1,W2,WK,每个关键词对应的权重WEIGHT1,WEIGHT2,WEIGHTK。采用MD5计算关键词的哈希值,对应的关键词的哈希值集合为MD5SMD5W1,MD5W2,MD5WK。

32、。那么,如图4使用如下步骤的相似哈希SIMHASH算法计算ANDROID应用的信息指纹0080A1对于ANDROID应用的N位信息指纹,设置N个实数R1,R2,RN,将它们的值初始化为零;说明书CN104063318A6/6页90081A2从ANDROID应用有K个权重不为零的关键词集合SW1,W2,WK中选取关键词WT;0082A3从该ANDROID应用关键词的哈希值集合中选取该关键词对应的哈希值MD5WT;0083A4遍历MD5WT的N位哈希值,如果其第I位哈希值为0,则将对应的第I个实数RI减去该关键词WT对应的权重WEIGHTT,如果其第I位哈希值为1,则将对应的第I个实数RI加上该关。

33、键词WT对应的权重WEIGHTT;例如,假设哈希值为8位,WT是第一个被选中的关键词,MD5WT值为10110110,则,R1,R2,R8的值分别为WEIGHTT,WEIGHTT,WEIGHTT,WEIGHTT,WEIGHTT,WEIGHTT,WEIGHTT,WEIGHTT。0084A5将关键词WT从该ANDROID应用关键词集合S中移除;0085A6如果该ANDROID应用关键词S集合不为空,转步骤A2;0086A7对于该ANDROID应用的信息指纹,如果RI0,则N位信息指纹的第I位值置为1,否则置为0。例如,假设信息指纹为8位,R1,R2,R8的值分别为06,012,15,13,17,0。

34、5,02,03,则该ANDROID应用的8位信息指纹为01101101。0087在所述步骤S9中,ANDROID应用的相似性取决于其信息指纹的位数与不同位数的个数。例如,对于64位ANDROID应用的信息指纹,两个ANDROID应用信息指纹有62位以上的哈希值相同,则判定两个ANDROID应用相似。0088上面是本发明提供的ANDROID应用相似性快速检测方法优选实施方式,并不构成对本发明的保护权限,任何在本发明上的改进,只要原理相同,都包含在本发明的权利要求保护范围之内。说明书CN104063318A1/3页10图1图2说明书附图CN104063318A102/3页11图3说明书附图CN104063318A113/3页12图4说明书附图CN104063318A12。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1