CN106528421A - 一种Android应用中SDK处理方法 - Google Patents
一种Android应用中SDK处理方法 Download PDFInfo
- Publication number
- CN106528421A CN106528421A CN201610986591.3A CN201610986591A CN106528421A CN 106528421 A CN106528421 A CN 106528421A CN 201610986591 A CN201610986591 A CN 201610986591A CN 106528421 A CN106528421 A CN 106528421A
- Authority
- CN
- China
- Prior art keywords
- sdk
- feature
- android
- android applications
- quoted
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephone Function (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种Android应用中SDK处理方法,该方法包括:对于Android应用中的每个软件开发包SDK,收集SDK的信息,从SDK的信息中获取SDK的特征;从所有的SDK的特征中识别出被Android应用引用的特征;查找到所述被Android应用引用的特征对应的SDK,将所述被Android应用引用的特征对应的SDK中的代码文件加入到自动化检测中代码监测环节的黑名单中。该方法实现避免由于引入了第三方SDK而造成的自动化安全检测的漏洞误报问题。
Description
技术领域
本发明涉及移动应用技术领域,特别是涉及一种Android应用中SDK处理方法。
背景技术
目前,Android应用在开发过程中为了使用第三方平台提供的技术服务,通常会使用第三方提供的SDK(Software Development Kit,软件开发工具包)来扩展应用的功能,如地理位置服务、数据统计、支付等等。第三方SDK通常以打包好的JAVA源代码文件即jar文件的形式存在,当应用引入后,在编译的时候其内在的源代码会与移动应用开发者自己编写的代码整合在一起。很多SDK也会使用同一种功能,如微信分享和支付宝支付等。这样在对应用进行自动化地安全分析时常常会对主体的业务代码的检测产生强烈的干扰,导致自动化安全检测的漏洞误报,从而大大降低导致移动应用自动化安全检测结果的准确性。另外,在2015年10月发生的Wormhole漏洞就是由于引入了第三方SDK而对应用本身造成了严重的安全威胁,甚至危害用户的个人隐私。
发明内容
本发明的目的是提供一种Android应用中SDK处理方法,以实现避免由于引入了第三方SDK而造成的自动化安全检测的漏洞误报问题。
为解决上述技术问题,本发明提供一种Android应用中SDK处理方法,该方法包括:
对于Android应用中的每个软件开发包SDK,收集SDK的信息,从SDK的信息中获取SDK的特征;
从所有的SDK的特征中识别出被Android应用引用的特征;
查找到所述被Android应用引用的特征对应的SDK,将所述被Android应用引用的特征对应的SDK中的代码文件加入到自动化检测中代码监测环节的黑名单中。
优选的,SDK的信息包括SDK图标、SDK类别、代码文件夹列表、SDK的特征。
优选的,SDK的特征为Activity组件信息、Receiver组件信息、Service组件信息、Provider组件信息或者So文件信息。
优选的,所述从所有的SDK的特征中识别出被Android应用引用的特征,包括:
获取Android应用的特征;
将所有的SDK的特征与Android应用的特征进行比对,从所有的SDK的特征中查找出与Android应用的特征一致的特征。
优选的,所述与Android应用的特征一致的特征为被Android应用引用的特征。
优选的,所述获取Android应用的特征,包括:
利用apktool工具对Android应用进行解包,得到Android应用的可执行文件和配置文件;
从Android应用的可执行文件中查看引用组件信息;
遍历Android应用进行解包后的路径,查找所有的so文件。
优选的,所述引用组件信息和所述所有的so文件为被Android应用引用的特征。
优选的,所述从SDK的所有特征中识别出被Android应用引用的特征之后,还包括:
利用所述被Android应用引用的特征形成SDK引用模型。
本发明所提供的一种Android应用中SDK处理方法,对于Android应用中的每个软件开发包SDK,收集SDK的信息,从SDK的信息中获取SDK的特征;从所有的SDK的特征中识别出被Android应用引用的特征;查找到所述被Android应用引用的特征对应的SDK,将所述被Android应用引用的特征对应的SDK中的代码文件加入到自动化检测中代码监测环节的黑名单中。可见,该方法根据SDK的特征,从SDK的特征中识别出Android应用引用的特征,识别出的特征对应的SDK就是Android应用引用的SDK,然后将引用的SDK内部包含的代码文件加入到自动化检测中代码监测环节的黑名单里,这样就能规避由于引入了第三方SDK而造成的自动化安全检测的漏洞误报问题,所以该方法实现避免由于引入了第三方SDK而造成的自动化安全检测的漏洞误报问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明所提供的一种Android应用中SDK处理方法的流程图;
图2为SDK引用模型构建流程图。
具体实施方式
本发明的核心是提供一种Android应用中SDK处理方法,以实现避免由于引入了第三方SDK而造成的自动化安全检测的漏洞误报问题。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明所提供的一种Android应用中SDK处理方法的流程图,该方法包括:
S11:对于Android应用中的每个软件开发包SDK,收集SDK的信息,从SDK的信息中获取SDK的特征;
S12:从所有的SDK的特征中识别出被Android应用引用的特征;
S13:查找到被Android应用引用的特征对应的SDK,将被Android应用引用的特征对应的SDK中的代码文件加入到自动化检测中代码监测环节的黑名单中。
可见,该方法根据SDK的特征,从SDK的特征中识别出Android应用引用的特征,识别出的特征对应的SDK就是Android应用引用的SDK,然后将引用的SDK内部包含的代码文件加入到自动化检测中代码监测环节的黑名单里,这样就能规避由于引入了第三方SDK而造成的自动化安全检测的漏洞误报问题,所以该方法实现避免由于引入了第三方SDK而造成的自动化安全检测的漏洞误报问题。
基于上述方法,具体的,SDK的信息包括SDK图标、SDK类别、代码文件夹列表、SDK的特征。
其中,SDK的特征为Activity组件信息、Receiver组件信息、Service组件信息、Provider组件信息或者So文件信息。
进一步的,步骤S12的过程具体为:获取Android应用的特征;将所有的SDK的特征与Android应用的特征进行比对,从所有的SDK的特征中查找出与Android应用的特征一致的特征。
其中,与Android应用的特征一致的特征为被Android应用引用的特征。
其中,获取Android应用的特征的过程具体包括:
S1:利用apktool工具对Android应用进行解包,得到Android应用的可执行文件和配置文件;
S2:从Android应用的可执行文件中查看引用组件信息;
S3:遍历Android应用进行解包后的路径,查找所有的so文件。
其中,引用组件信息和所有的so文件为被Android应用引用的特征。
进一步的,步骤S12之后,还包括:利用被Android应用引用的特征形成SDK引用模型。
详细的,不同的SDK具有不同的特征,本方法可以在应用引入了多个功能相似、特征重合的情况下精准地识别出SDK,并且将SDK自身包含的代码文件在应用的自动化安全检测中对代码的检测环节里规避,并且对于将来可能会出现的由于引入了SDK而发生的安全事件,可以第一时间确定受到影响的移动应用程序,从而降低安全事件造成的损失,最大限度地保证移动应用承载的业务和用户隐私安全。
本文中的SDK即为第三方SDK,第三方SDK是已经打包后的java源代码编译后的字节码文件,文件内有其自己的文件结构。在编译过程中,每一个java源文件都会生成一个或者多个class文件。根据Android应用的运行机制,每一个应用都存在一个对应的配置文件即AndroidManifest.xml文件,如果要引用第三方SDK必须要在其中声明所需要的权限、引入的组件等等信息。
额外地,部分SDK还带有Android系统中运行时需要用到的动态链接库文件即so文件,引入了SDK后该so文件同样也会编码在打包后的APK应用中。因此可以根据不同SDK的必要特征,识别出应用引用的SDK,然后根据SDK的信息,将内部包含的代码文件夹加入到自动化检测中代码监测环节的黑名单里,这样就能规避由于引入了第三方SDK而造成的自动化安全检测的漏洞误报问题。
基于本方法,具体实施流程如下:
1、收集SDK的信息,包括主要特征、代码文件夹列表、SDK图标和SDK类别;
其中,主要特征包括:Activity组件信息、Receiver组件信息、Service组件信息、Provider组件信息、So文件信息;
2、将应用解包,并对AndroidManifest.xml文件和其他代码文件反编译;
其中,Android应用可以使用apktool工具对其解包,解包后将产生Android可执行文件(dex文件)和AndroidManifest.xml文件,该文件可能出现已解码或者未解码的情况,需要进一步操作;
其中,对Android应用的可执行文件可以使用dex2jar将其反编译成jar文件,然后使用Java官方提供的jd-core工具可以将jar文件进一步反编译为java源文件;
3、分析AndroidManifest.xml文件,形成组件使用列表;
其中,如果AndroidManifest.xml文件未被解码,则可以使用AXMLPrinter工具或者Google官方提供的aapt工具进行解码。
4、遍历解包后的路径,查找所有so文件;
其中,使用正则表达式匹配明文的AndroidManifest.xml文件中的内容,然后再编程实现对解包后的文件的遍历功能,从而查找到存在的so文件,这样该应用的特征就收集完毕。
5、将收集到的SDK特诊同应用的实际信息做比对,逐一检验是否满足引入该SDK的特征;
其中,遍历SDK特征库,将应用的特征和SDK特征进行交集匹配,收集所有的能够匹配特征的SDK列表,在数据库中构建关联引用关系;
6、形成SDK引用模型。图2为SDK引用模型构建流程图。
本方法构建Android应用引入的SDK模型能够提高自动化安全检测分析中对代码的自动化检测的准确性,而且能够在将来可能出现的SDK安全问题中第一时间确定收到影响的移动应用,将安全事件对移动应用的影响降到最低,而不用对受到影响的应用人工确认,从而提高移动应用安全的相关工作人员的工作效率。
综上,本发明所提供的一种Android应用中SDK处理方法,对于Android应用中的每个软件开发包SDK,收集SDK的信息,从SDK的信息中获取SDK的特征;从所有的SDK的特征中识别出被Android应用引用的特征;查找到被Android应用引用的特征对应的SDK,将被Android应用引用的特征对应的SDK中的代码文件加入到自动化检测中代码监测环节的黑名单中。可见,该方法根据SDK的特征,从SDK的特征中识别出Android应用引用的特征,识别出的特征对应的SDK就是Android应用引用的SDK,然后将引用的SDK内部包含的代码文件加入到自动化检测中代码监测环节的黑名单里,这样就能规避由于引入了第三方SDK而造成的自动化安全检测的漏洞误报问题,所以该方法实现避免由于引入了第三方SDK而造成的自动化安全检测的漏洞误报问题。
以上对本发明所提供的一种Android应用中SDK处理方法进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (8)
1.一种Android应用中SDK处理方法,其特征在于,包括:
对于Android应用中的每个软件开发包SDK,收集SDK的信息,从SDK的信息中获取SDK的特征;
从所有的SDK的特征中识别出被Android应用引用的特征;
查找到所述被Android应用引用的特征对应的SDK,将所述被Android应用引用的特征对应的SDK中的代码文件加入到自动化检测中代码监测环节的黑名单中。
2.如权利要求1所述的方法,其特征在于,SDK的信息包括SDK图标、SDK类别、代码文件夹列表、SDK的特征。
3.如权利要求2所述的方法,其特征在于,SDK的特征为Activity组件信息、Receiver组件信息、Service组件信息、Provider组件信息或者So文件信息。
4.如权利要求1所述的方法,其特征在于,所述从所有的SDK的特征中识别出被Android应用引用的特征,包括:
获取Android应用的特征;
将所有的SDK的特征与Android应用的特征进行比对,从所有的SDK的特征中查找出与Android应用的特征一致的特征。
5.如权利要求4所述的方法,其特征在于,所述与Android应用的特征一致的特征为被Android应用引用的特征。
6.如权利要求5所述的方法,其特征在于,所述获取Android应用的特征,包括:
利用apktool工具对Android应用进行解包,得到Android应用的可执行文件和配置文件;
从Android应用的可执行文件中查看引用组件信息;
遍历Android应用进行解包后的路径,查找所有的so文件。
7.如权利要求6所述的方法,其特征在于,所述引用组件信息和所述所有的so文件为被Android应用引用的特征。
8.如权利要求1至7中任意一项所述的方法,其特征在于,所述从SDK的所有特征中识别出被Android应用引用的特征之后,还包括:
利用所述被Android应用引用的特征形成SDK引用模型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610986591.3A CN106528421B (zh) | 2016-11-09 | 2016-11-09 | 一种Android应用中SDK处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610986591.3A CN106528421B (zh) | 2016-11-09 | 2016-11-09 | 一种Android应用中SDK处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106528421A true CN106528421A (zh) | 2017-03-22 |
CN106528421B CN106528421B (zh) | 2019-07-26 |
Family
ID=58350519
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610986591.3A Active CN106528421B (zh) | 2016-11-09 | 2016-11-09 | 一种Android应用中SDK处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106528421B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108037989A (zh) * | 2017-12-15 | 2018-05-15 | 北京小米移动软件有限公司 | Sdk组件识别方法及装置 |
CN108279905A (zh) * | 2018-01-04 | 2018-07-13 | 武汉斗鱼网络科技有限公司 | 一种组件中引入库文件的方法及装置 |
CN108446120A (zh) * | 2018-02-13 | 2018-08-24 | 北京奇虎科技有限公司 | 一种sdk接入安装包的检测方法、装置及终端设备 |
CN108563578A (zh) * | 2018-04-20 | 2018-09-21 | 平安科技(深圳)有限公司 | Sdk兼容性检测方法、装置、设备及可读存储介质 |
CN110866225A (zh) * | 2019-11-12 | 2020-03-06 | 拉扎斯网络科技(上海)有限公司 | 风险控制方法、装置、电子设备及存储介质 |
CN111046388A (zh) * | 2019-12-16 | 2020-04-21 | 北京智游网安科技有限公司 | 识别应用中第三方sdk的方法、智能终端及储存介质 |
CN111124486A (zh) * | 2019-12-05 | 2020-05-08 | 任子行网络技术股份有限公司 | 发现安卓应用引用第三方工具的方法、系统及存储介质 |
CN112287343A (zh) * | 2020-10-16 | 2021-01-29 | 深圳市和讯华谷信息技术有限公司 | Sdk监控方法、装置、计算机设备及存储介质 |
CN113586323A (zh) * | 2021-07-29 | 2021-11-02 | 湖南五凌电力科技有限公司 | 非稳态水轮发电机组开机顺序确定方法、装置及存储介质 |
CN113656794A (zh) * | 2021-08-19 | 2021-11-16 | 建信金融科技有限责任公司 | 识别Android应用引用的第三方SDK的方法及装置 |
CN115146264A (zh) * | 2021-03-31 | 2022-10-04 | 中国电信股份有限公司 | 应用程序的处理方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130205401A1 (en) * | 2013-03-15 | 2013-08-08 | Condel International Technologies Inc. | Apparatuses and methods for content protection using digital rights management (DRM) in webview or webkit |
CN104462983A (zh) * | 2013-09-22 | 2015-03-25 | 深圳市腾讯计算机系统有限公司 | 一种php源代码处理方法及系统 |
CN106022104A (zh) * | 2016-05-18 | 2016-10-12 | 广东欧珀移动通信有限公司 | 阻止推送平台应用启动的方法及装置 |
CN106022110A (zh) * | 2016-05-18 | 2016-10-12 | 广东欧珀移动通信有限公司 | 识别推送平台应用的方法及装置 |
-
2016
- 2016-11-09 CN CN201610986591.3A patent/CN106528421B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130205401A1 (en) * | 2013-03-15 | 2013-08-08 | Condel International Technologies Inc. | Apparatuses and methods for content protection using digital rights management (DRM) in webview or webkit |
CN104462983A (zh) * | 2013-09-22 | 2015-03-25 | 深圳市腾讯计算机系统有限公司 | 一种php源代码处理方法及系统 |
CN106022104A (zh) * | 2016-05-18 | 2016-10-12 | 广东欧珀移动通信有限公司 | 阻止推送平台应用启动的方法及装置 |
CN106022110A (zh) * | 2016-05-18 | 2016-10-12 | 广东欧珀移动通信有限公司 | 识别推送平台应用的方法及装置 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108037989B (zh) * | 2017-12-15 | 2021-11-30 | 北京小米移动软件有限公司 | Sdk组件识别方法及装置 |
CN108037989A (zh) * | 2017-12-15 | 2018-05-15 | 北京小米移动软件有限公司 | Sdk组件识别方法及装置 |
CN108279905A (zh) * | 2018-01-04 | 2018-07-13 | 武汉斗鱼网络科技有限公司 | 一种组件中引入库文件的方法及装置 |
CN108446120A (zh) * | 2018-02-13 | 2018-08-24 | 北京奇虎科技有限公司 | 一种sdk接入安装包的检测方法、装置及终端设备 |
CN108563578B (zh) * | 2018-04-20 | 2021-09-21 | 平安科技(深圳)有限公司 | Sdk兼容性检测方法、装置、设备及可读存储介质 |
CN108563578A (zh) * | 2018-04-20 | 2018-09-21 | 平安科技(深圳)有限公司 | Sdk兼容性检测方法、装置、设备及可读存储介质 |
CN110866225A (zh) * | 2019-11-12 | 2020-03-06 | 拉扎斯网络科技(上海)有限公司 | 风险控制方法、装置、电子设备及存储介质 |
CN111124486A (zh) * | 2019-12-05 | 2020-05-08 | 任子行网络技术股份有限公司 | 发现安卓应用引用第三方工具的方法、系统及存储介质 |
CN111046388A (zh) * | 2019-12-16 | 2020-04-21 | 北京智游网安科技有限公司 | 识别应用中第三方sdk的方法、智能终端及储存介质 |
CN112287343A (zh) * | 2020-10-16 | 2021-01-29 | 深圳市和讯华谷信息技术有限公司 | Sdk监控方法、装置、计算机设备及存储介质 |
CN115146264A (zh) * | 2021-03-31 | 2022-10-04 | 中国电信股份有限公司 | 应用程序的处理方法和装置 |
CN113586323A (zh) * | 2021-07-29 | 2021-11-02 | 湖南五凌电力科技有限公司 | 非稳态水轮发电机组开机顺序确定方法、装置及存储介质 |
CN113586323B (zh) * | 2021-07-29 | 2024-01-30 | 湖南五凌电力科技有限公司 | 非稳态水轮发电机组开机顺序确定方法、装置及存储介质 |
CN113656794A (zh) * | 2021-08-19 | 2021-11-16 | 建信金融科技有限责任公司 | 识别Android应用引用的第三方SDK的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106528421B (zh) | 2019-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106528421A (zh) | 一种Android应用中SDK处理方法 | |
Backes et al. | Reliable third-party library detection in android and its security applications | |
Zhang et al. | Detecting third-party libraries in android applications with high precision and recall | |
US9245125B2 (en) | Duleak: a scalable app engine for high-impact privacy leaks | |
Zhan et al. | Automated third-party library detection for android applications: Are we there yet? | |
Yu et al. | Deescvhunter: A deep learning-based framework for smart contract vulnerability detection | |
US8850581B2 (en) | Identification of malware detection signature candidate code | |
CN110414261B (zh) | 一种数据脱敏方法、装置、设备及可读存储介质 | |
Li et al. | Privacystreams: Enabling transparency in personal data processing for mobile apps | |
Lin et al. | Automated forensic analysis of mobile applications on Android devices | |
CN102945203B (zh) | 一种用于移动互联网应用的代码安全测试方法 | |
Xia et al. | How Android developers handle evolution-induced API compatibility issues: a large-scale study | |
CN103473506A (zh) | 用于识别恶意apk文件的方法和装置 | |
Huang et al. | Detecting sensitive data disclosure via bi-directional text correlation analysis | |
Zhang et al. | BDA: practical dependence analysis for binary executables by unbiased whole-program path sampling and per-path abstract interpretation | |
Mahajan et al. | Recommending stack overflow posts for fixing runtime exceptions using failure scenario matching | |
CN107169360A (zh) | 一种源代码安全漏洞的检测方法及系统 | |
Nichols et al. | Syntax-based improvements to plagiarism detectors and their evaluations | |
Li et al. | Large-scale third-party library detection in android markets | |
Sintaha et al. | Katana: Dual slicing based context for learning bug fixes | |
Hua et al. | Rupair: towards automatic buffer overflow detection and rectification for Rust | |
CN115310087A (zh) | 一种基于抽象语法树的网站后门检测方法和系统 | |
Xu et al. | LibRoad: Rapid, online, and accurate detection of TPLs on android | |
Zhao et al. | Demystifying privacy policy of third-party libraries in mobile apps | |
CN112069052A (zh) | 一种异常对象检测方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |