CN104778409B - 一种Android应用软件相似性的检测方法及装置 - Google Patents
一种Android应用软件相似性的检测方法及装置 Download PDFInfo
- Publication number
- CN104778409B CN104778409B CN201510179551.3A CN201510179551A CN104778409B CN 104778409 B CN104778409 B CN 104778409B CN 201510179551 A CN201510179551 A CN 201510179551A CN 104778409 B CN104778409 B CN 104778409B
- Authority
- CN
- China
- Prior art keywords
- application software
- software
- detected
- resource
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供一种针对移动平台Android系统下应用软件相似性的检测方法及装置,属于计算机安全领域,具体涉及从应用程序权限、组件、资源及代码图四个方面对通过对正常应用软件使用重打包技术注入恶意代码或广告代码的软件进行检测的方法及装置。所述的方法包括Android应用软件解包、反编译,提取权限信息、组件信息、资源信息与代码图信息,并根据上述信息进行相似性的判定;所述的装置包括标准软件库模块、爬虫模块、信息提取模块、相似性判断模块。本发明提供的检测方法及装置,可以快速准确地检测出重打包的Android应用软件,保护Android应用软件开发者与用户的利益。
Description
技术领域
本发明属于计算机安全技术领域,具体涉及一种针对移动平台Android系统下应用软件相似性的检测方法及装置。
背景技术
随着移动互联网的发展,Android平台的新应用也层出不穷。智能移动设备的便利性使其成为了很多人生活、工作和学习不可获取的一部分,例如:购物、导航等。但是近几年针对Android应用软件使用重打包技术来对其注入恶意代码或广告代码的行为使我们不得不更多地考虑Android应用软件的安全问题。根据《腾讯移动安全实验室2014年上半年手机安全报告》,2014年上半年,全国Android病毒感染用户数达到8923.52万,是2012年全年Android手机染毒用户的3.68倍;2014年上半年Android手机染毒用户数是2013年上半年的2.28倍,同比增长128%。而这些Android恶意软件绝大多数是通过重打包技术注入到正常应用软件中的。
Android的安装时权限模型决定了程序一旦发布其权限就必然固定,可以在任何时刻进行审查,固定的权限也决定了程序的功能已经固定。在Android操作系统中,并没有传统意义上的进程,而是系统预定义的各种组件,这些组件实际上都是Android系统的回调模块。为了让系统回调这些模块,Android应用软件需要首先注册这些组件,而绝大部分都要求是显示的静态注册。Android应用软件的资源包括了字符串、图片、布局等。Android应用软件的代码布局可以使用图来表示,节点为方法与域,节点包含的属性为方法与域所属的类,边为方法与方法、方法与域的引用关系。
Android平台的应用软件使用Java语言编写,但Java语言的特性导致Android应用软件容易被逆向和破解,通过ApkTool等工具可以很容易获得Android应用软件的代码与资源文件。同时,Android平台允许应用程序的开发者使用自己的证书对安装包进行签名,也允许系统从第三方应用市场中安装应用。因此,当Android应用软件被逆向后,可以修改其代码与资源等文件,重新签名生成新的安装包,发布到第三方应用市场供用户安装使用。很多恶意软件与广告软件开发者利用该方法,将正常软件中植入恶意代码或广告代码,达到更加广泛的传播并欺骗用户安装使用的目的,以获取更多利益。
由于恶意代码与广告代码都是一个相对独立的模块,为保证原应用软件的正常使用,重打包过程通常不会对原应用软件做大量修改,这使得对重打包植入恶意代码或广告代码的软件进行检测成为了可能。
发明内容
本发明要解决的技术问题在于克服现有技术针对传统的以API作为关键词或对代码进行模糊哈希的方法来进行相似性检测的不足,提供一种基于权限相似性、组件相似性、资源相似性以及代码图相似性结合的Android应用软件相似性检测方法及装置,有效地检测通过重打包技术植入恶意代码或广告代码的Android应用软件,保护Android应用软件开发者与用户的利益。
本发明具体采用如下技术方案:
一种Android应用软件相似性检测方法,用于判断待检测应用软件是否由目标软件重打包而得,其流程如图1所示,包括以下步骤:
步骤1.将待检测的应用软件安装包进行解包反编译,获得代码、布局与资源文件;
步骤2.从解包反编译后的布局文件中提取应用程序的权限信息,并将该待检测应用软件的权限与目标软件的权限进行相似性检测;
步骤3.从解包反编译后的布局文件中提取应用程序的组件信息,并将该待检测应用软件的组件与目标软件的组件进行相似性检测;
步骤4.从解包反编译后的资源文件中提取应用程序的资源信息,并将该待检测应用软件的资源与目标软件的资源进行相似性检测;
步骤5.从解包反编译后的代码文件中提取代码图信息,并将该待检测应用软件的代码图与目标软件的代码图进行相似性检测;
步骤6.若所述待检测应用软件的权限、组件、资源及代码图均与目标软件相应的权限、组件、资源及代码图相似,则判定该待检测应用软件由所述的目标软件重打包而得。
步骤1中所述的对安装包进行解包反编译,具体包括解包过程与反编译过程;Android应用程序安装包即APK格式文件,是一种ZIP格式的压缩文件;所述解包过程指从应用程序安装包文件中得到编译后的代码文件classes.dex、编译后的资源文件resources.arsc、编译后的布局文件AndroidManifest.xml;所述反编译过程指从上述已编译的文件获得相应的未编译的文件,即获得smali代码文件、各xml资源文件以及AndroidManifest.xml布局文件。
步骤2中所述的提取权限信息是指从AndroidManifest.xml文件中提取出<uses-permission>节点的字符串,该字符串描述了应用软件所申请的权限,将提取的字符串构建成该待检测应用软件的权限集合;所述的权限相似性检测如图4所示,记目标应用软件的权限集合集合为P1,检测应用软件的权限集合为P2,若满足关系则判定待检测应用软件的权限与目标应用软件的权限相似。
步骤3所述的提取组件信息是指从AndroidManifest.xml文件中提取<activity>、<service>、<receiver>节点的字符串,上述三个字符串分别描述了应用软件中的Activity组件、Service组件与BroadcastReceiver组件,将提取的字符串构建该待检测应用软件的组件集合;所述的组件相似性检测如图5所示,记目标应用软件的权限集合为P1,待检测应用软件的权限集合为P2,若满足关系则判定待检测应用软件的权限与目标应用软件的权限相似。
步骤4所述的提取资源信息是指从各xml文件中提取出字符串、布局、图片信息,字符串信息位于strings.xml文件,布局信息位于layout目录下的各xml文件,图片信息位于drawable目录,将提取的资源信息构建该待检测应用软件的资源集合;所述的资源相似性检测如图6所示,记目标应用软件的资源集合为R1,待检测应用软件的资源集合为R2,若满足关系则判定待检测应用软件的资源与目标应用软件的资源相似。
步骤5所述的提取代码图信息是指从smali代码文件中提取类、方法、域以及方法与类的包含关系、域与类的包含关系、方法与方法的引用关系、域与方法的引用关系,以方法与域作为图的两种节点,方法与域所属的类作为该节点的属性,方法与方法、方法与域的引用关系作为节点之间的边,形成一个描述了代码布局与关系有向图作为代码图;所述的代码图相似性检测如图7所示,记目标应用软件的代码图为G1,待检测应用软件的代码图为G2,若G1为G2的子图,则判定待检测应用软件的代码图与目标应用软件的代码图相似。
本发明还提供了一种实现上述Android应用软件相似性检测方法的装置,其结构如图2所示,包括标准软件库模块、爬虫模块、信息提取模块、相似性判断模块。
所述标准软件库模块用于存储Android平台各应用软件的官方版本,作为相似性检测的基准;
所述爬虫模块用于通过网络从各应用软件的官方网站下载软件的最新版本至标准软件库,保证标准软件库模块中的应用软件最新最全;
所述信息提取模块用于提取被检测样本与标准软件的权限、组件、资源以及代码图信息;
所述相似性判断模块用于对信息提取模块提取的各种信息与标准软件库模块中各软件官方版本的相应信息进行相似性判断并输出相似性检测结果:若所述待检测应用软件的权限、组件、资源及代码图均与标准软件库中某一标准软件相应的权限、组件、资源及代码图相似,则判定该待检测应用软件由所述的标准软件重打包而得。
本发明的有益效果是:
1、本发明从权限、组件、资源、代码图四个方面进行相似性判定,使得结果更加准确;
2、本发明使用代码图,包含了代码中类、方法、域的关系,不受代码混淆的影响;
3、本发明能够获得最新最全的标准软件,保证检测结果的有效性。
附图说明
图1是本发明Android应用软件相似性检测方法流程图;
图2是本发明Android应用软件相似性检测装置结构示意图;
图3是本发明Android应用软件相似性检测方法具体实施流程图;
图4是权限相似性示意图;
图5是组件相似性示意图;
图6是资源相似性示意图;
图7是代码图相似性示意图。
具体实施方式
下面结合附图1-7和具体实施方式对本发明一种Android应用软件相似性检测方法与装置作进一步的说明。
实施例
本实施例具体采用如下技术方案:
一种Android应用软件相似性检测方法,其流程如图3所示,具体包括以下步骤:
S1.采用Android应用软件的包名与版本号作为Android应用软件的唯一标识;
S2.使用爬虫从各知名软件官网与官方应用市场中爬取下载Android应用软件原始版本安装包,构成集合SetAPK={APK1,APK2,APK3,…,APKn};
S3.从S2中获得的Android应用软件原始版本安装包中,提取各原始版本的包名Pkg与版本号Ver,构成APK的唯一ID=<Pkg,Ver>,对于每一个APKm,都有对应的IDm;
S4.将S2中获得的Android应用软件原始版本安装包解包,得到AndroidManifest.xml、classes.dex、resources.arsc文件,对其进行反编译,获得布局文件、smali代码文件与资源文件;
S5.从S4得到的布局文件、smali代码文件与资源文件中提取权限信息P、组件信息C、资源信息R与代码图G,共同作为Android应用软件相似性检测特征Sig=<P,C,R,G>;
S6.针对每一个Android应用软件安装包,都存在其对应的唯一ID与特征,将S2中的安装包与其对应的S3中的唯一ID和S5中的特征作为一个元组,构成标准软件库L的一个条目Item,对于APKm,其条目为Itemm=<APKm,IDm,Sigm>,其中IDm=<Pkgm,Verm>,Sigm=<Pm,Cm,Rm,Gm>;
S7.对于提交的被检测样本APKs,同样使用S3-S5所述方法,获得其IDs与Sigs;
S8.遍历标准软件库中的所有条目,若存在Itemn∈L,使得Gn为Gs的子图,则被检测样本APKs为标准样本库中APKn重打包得到的。
Claims (7)
1.一种Android应用软件相似性的检测方法,包括以下步骤:
步骤1.将待检测的应用软件安装包进行解包反编译,获得代码、布局与资源文件;
步骤2.从解包反编译后的布局文件中提取应用程序的权限信息,并将该待检测应用软件的权限与目标软件的权限进行相似性检测;
步骤3.从解包反编译后的布局文件中提取应用程序的组件信息,并将该待检测应用软件的组件与目标软件的组件进行相似性检测;
步骤4.从解包反编译后的资源文件中提取应用程序的资源信息,并将该待检测应用软件的资源与目标软件的资源进行相似性检测;
步骤5.从解包反编译后的代码文件中提取代码图信息,并将该待检测应用软件的代码图与目标软件的代码图进行相似性检测;
步骤6.若所述待检测应用软件的权限、组件、资源及代码图均与目标软件相应的权限、组件、资源及代码图相似,则判定该待检测应用软件由所述的目标软件重打包而得。
2.根据权利要求1中所述的Android应用软件相似性的检测方法,其特征在于,所述解包反编译过程具体包括解包过程和反编译过程;所述解包过程指从应用软件安装文件中得到编译后的代码文件classes.dex、编译后的资源文件resources.arsc、编译后的布局文件AndroidManifest.xml;所述反编译过程指从上述已编译的文件获得相应的未编译的文件,即获得smali代码文件、各xml资源文件以及AndroidManifest.xml布局文件。
3.根据权利要求2中所述的Android应用软件相似性的检测方法,其特征在于,所述的提取权限信息是指从AndroidManifest.xml文件中提取出<uses-permission>节点的字符串,该字符串描述了应用软件所申请的权限,将提取的字符串构建成该待检测应用软件的权限集合;
所述的权限相似性检测过程具体如下:
记目标应用软件的权限集合为P1,待检测应用软件的权限集合为P2,若满足关系则判定待检测应用软件的权限与目标应用软件的权限相似。
4.根据权利要求2中所述的Android应用软件相似性的检测方法,其特征在于,所述的提取组件信息是指从AndroidManifest.xml文件中提取出<activity>、<service>、<receiver>节点的字符串,上述三个字符串分别描述了应用软件中的Activity组件、Service组件与BroadcastReceiver组件,将提取的字符串构建该待检测应用软件的组件集合;
所述的组件相似性检测过程具体如下:
记目标应用软件的组件集合为C1,待检测应用软件的组件集合为C2,若满足关系则判定待检测应用软件的组件与目标应用软件的组件相似。
5.根据权利要求2中所述的Android应用软件相似性的检测方法,其特征在于,所述的提取资源信息是指从各xml文件中提取出字符串、布局、图片信息,字符串信息位于strings.xml文件,布局信息位于layout目录下的各xml文件,图片信息位于drawable目录,将提取的资源信息构建该待检测应用软件的资源集合;
所述的资源相似性检测过程具体如下:
记目标应用软件的资源集合为R1,待检测应用软件的资源集合为R2,若满足关系则判定待检测应用软件的资源与目标应用软件的资源相似。
6.根据权利要求2中所述的Android应用软件相似性的检测方法,其特征在于,所述的提取代码图信息是指从smali代码文件中提取类、方法、域以及方法与类的包含关系、域与类的包含关系、方法与方法的引用关系、域与方法的引用关系,以方法与域作为图的两种节点,方法与域所属的类作为该节点的属性,方法与方法、方法与域的引用关系作为节点之间的边,形成一个描述了代码布局与关系有向图作为代码图;
所述的代码图相似性检测过程具体如下:
记目标应用软件的代码图为G1,待检测应用软件的代码图为G2,若G1为G2的子图,则判定待检测应用软件的代码图与目标应用软件的代码图相似。
7.一种实现如权利要求1所述的Android应用软件相似性检测方法的装置,包括标准软件库模块、爬虫模块、信息提取模块、相似性判断模块;
其特征在于,所述标准软件库模块用于存储Android平台各应用软件的官方版本,作为相似性检测的基准;
所述爬虫模块用于通过网络从各应用软件的官方网站下载软件的最新版本至标准软件库,保证标准软件库模块中的应用软件最新最全;
所述信息提取模块用于提取被检测样本与标准软件的权限、组件、资源以及代码图信息;
所述相似性判断模块用于对信息提取模块提取的各种信息与标准软件库模块中各软件官方版本的相应信息进行相似性判断并输出相似性检测结果:若所述待检测应用软件的权限、组件、资源及代码图均与标准软件库中某一标准软件相应的权限、组件、资源及代码图相似,则判定该待检测应用软件由所述的标准软件重打包而得。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510179551.3A CN104778409B (zh) | 2015-04-16 | 2015-04-16 | 一种Android应用软件相似性的检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510179551.3A CN104778409B (zh) | 2015-04-16 | 2015-04-16 | 一种Android应用软件相似性的检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104778409A CN104778409A (zh) | 2015-07-15 |
CN104778409B true CN104778409B (zh) | 2018-01-12 |
Family
ID=53619864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510179551.3A Expired - Fee Related CN104778409B (zh) | 2015-04-16 | 2015-04-16 | 一种Android应用软件相似性的检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104778409B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105975855B (zh) * | 2015-08-28 | 2019-07-23 | 武汉安天信息技术有限责任公司 | 一种基于apk证书相似性的恶意代码检测方法及系统 |
CN106445513A (zh) * | 2016-09-12 | 2017-02-22 | 中山大学 | 一种基于移动应用界面元素的相似性计算方法 |
CN106599623B (zh) * | 2016-12-09 | 2019-10-18 | 江苏通付盾科技有限公司 | 一种应用相似度计算方法及装置 |
CN108255695A (zh) * | 2016-12-29 | 2018-07-06 | 武汉安天信息技术有限责任公司 | Apk重打包的检测方法及系统 |
CN106951780B (zh) * | 2017-02-08 | 2019-09-10 | 中国科学院信息工程研究所 | 重打包恶意应用的静态检测方法和装置 |
CN107122660B (zh) * | 2017-03-29 | 2020-05-22 | 中国科学院信息工程研究所 | 一种Android应用软件用户隐私信息泄露检测方法 |
CN106980787A (zh) * | 2017-03-30 | 2017-07-25 | 杭州网蛙科技有限公司 | 一种识别恶意特征的方法和设备 |
CN108958826B (zh) * | 2017-05-22 | 2022-06-07 | 北京京东尚科信息技术有限公司 | 动态配置应用安装包的方法和装置 |
CN107315680B (zh) * | 2017-05-26 | 2020-11-03 | 北京航空航天大学 | Hybrid移动应用用户界面的检测方法及系统 |
CN109542456B (zh) * | 2017-08-15 | 2022-03-01 | 中兴通讯股份有限公司 | 一种应用相似度的获得方法、装置及终端 |
CN109933976B (zh) * | 2017-12-15 | 2023-05-09 | 深圳Tcl工业研究院有限公司 | 一种安卓应用相似性检测方法、移动终端及存储装置 |
CN108667806A (zh) * | 2018-04-08 | 2018-10-16 | 南京邮电大学 | Android重打包恶意应用检测方法、可读存储介质和终端 |
CN109800575B (zh) * | 2018-12-06 | 2023-06-20 | 成都网安科技发展有限公司 | 一种Android应用程序的安全检测方法 |
CN109858249B (zh) * | 2019-02-18 | 2020-08-07 | 暨南大学 | 移动恶意软件大数据的快速智能比对和安全检测方法 |
CN110908705B (zh) * | 2019-11-20 | 2021-06-22 | 福州大学 | 建立不同版本程序类集合映射关系的方法 |
CN111259374B (zh) * | 2020-01-08 | 2021-10-12 | 南京苏宁加电子商务有限公司 | 权限异常检测方法、装置、计算机设备和存储介质 |
CN111459822B (zh) * | 2020-04-01 | 2023-10-03 | 抖音视界有限公司 | 系统组件数据的提取方法、装置、设备及可读介质 |
CN112346779A (zh) * | 2020-11-12 | 2021-02-09 | 广州至真信息科技有限公司 | 应用程序相似度的检测方法、装置和计算机设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440459A (zh) * | 2013-09-25 | 2013-12-11 | 西安交通大学 | 一种基于函数调用的Android恶意代码检测方法 |
CN103473346A (zh) * | 2013-09-24 | 2013-12-25 | 北京大学 | 一种基于应用程序编程接口的安卓重打包应用检测方法 |
CN104091121A (zh) * | 2014-06-12 | 2014-10-08 | 上海交通大学 | 对Android重打包恶意软件的恶意代码的检测、切除和恢复的方法 |
CN104484607A (zh) * | 2014-12-16 | 2015-04-01 | 上海交通大学 | Android应用程序安全性测试的通用方法及系统 |
-
2015
- 2015-04-16 CN CN201510179551.3A patent/CN104778409B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473346A (zh) * | 2013-09-24 | 2013-12-25 | 北京大学 | 一种基于应用程序编程接口的安卓重打包应用检测方法 |
CN103440459A (zh) * | 2013-09-25 | 2013-12-11 | 西安交通大学 | 一种基于函数调用的Android恶意代码检测方法 |
CN104091121A (zh) * | 2014-06-12 | 2014-10-08 | 上海交通大学 | 对Android重打包恶意软件的恶意代码的检测、切除和恢复的方法 |
CN104484607A (zh) * | 2014-12-16 | 2015-04-01 | 上海交通大学 | Android应用程序安全性测试的通用方法及系统 |
Non-Patent Citations (1)
Title |
---|
Android平台恶意应用程序行为分析与研究;赵幸;《 中国优秀硕士学位论文全文数据库信息科技辑》;20140615;正文第2.1.2,2.1.3,2.2.3,2.3,3.2,4.1,4.2.1-4.2.4节,图2-2,3-1,3-2,3-4,4-2,4-3,4-5 * |
Also Published As
Publication number | Publication date |
---|---|
CN104778409A (zh) | 2015-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104778409B (zh) | 一种Android应用软件相似性的检测方法及装置 | |
Li et al. | Rebooting research on detecting repackaged android apps: Literature review and benchmark | |
Huang et al. | {SUPOR}: Precise and scalable sensitive user input detection for android apps | |
Backes et al. | Reliable third-party library detection in android and its security applications | |
Li et al. | Libd: Scalable and precise third-party library detection in android markets | |
Zhang et al. | Detecting third-party libraries in android applications with high precision and recall | |
CN103761475B (zh) | 检测智能终端中恶意代码的方法及装置 | |
CN104123493B (zh) | 应用程序的安全性检测方法和装置 | |
Rosen et al. | Appprofiler: a flexible method of exposing privacy-related behavior in android applications to end users | |
Trimananda et al. | {OVRseen}: Auditing network traffic and privacy policies in oculus {VR} | |
US10963563B2 (en) | Method and system for evaluating security of application | |
Jiang et al. | Pdiff: Semantic-based patch presence testing for downstream kernels | |
Yu et al. | Autoppg: Towards automatic generation of privacy policy for android applications | |
CN106796640A (zh) | 分类恶意软件检测和抑制 | |
Edu et al. | SkillVet: automated traceability analysis of Amazon Alexa skills | |
Andow et al. | Uiref: analysis of sensitive user inputs in android applications | |
Yu et al. | Revisiting the description-to-behavior fidelity in android applications | |
Piet et al. | Jatmo: Prompt injection defense by task-specific finetuning | |
CN104598825A (zh) | 一种基于改进贝叶斯算法的安卓恶意软件检测方法 | |
CN109614795A (zh) | 一种事件感知的安卓恶意软件检测方法 | |
CN106548073A (zh) | 基于卷积神经网络的恶意apk的筛查方法 | |
CN107169360A (zh) | 一种源代码安全漏洞的检测方法及系统 | |
Song et al. | Computation of program source code similarity by composition of parse tree and call graph | |
Li et al. | Large-scale third-party library detection in android markets | |
CN106874760A (zh) | 一种基于层次式SimHash的Android恶意代码分类方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180112 |