一种Android应用中SDK处理方法与流程

文档序号:12120620阅读:788来源:国知局
一种Android应用中SDK处理方法与流程

本发明涉及移动应用技术领域,特别是涉及一种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处理方法进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1