识别Android应用引用的第三方SDK的方法及装置制造方法及图纸

技术编号:30828760 阅读:17 留言:0更新日期:2021-11-18 12:35
本发明专利技术公开了一种识别Android应用引用的第三方SDK的方法及装置,涉及软件开发及应用领域,该方法包括:对接收的Android应用程序包进行反编译,从反编译的AndroidManifest.xml文件中提取包名列表;提取反编译的lib目录下所有动态链接库的文件名列表;针对所述包名列表中的每个包名,确定包名长度,获取包名长度对应的关联数据子集;将每个包名与关联数据子集中包名进行匹配,如果关联数据子集中存储有相同包名,则将该相同包名对应的动态链接库名与lib目录下动态链接库的文件名列表进行匹配,如果存在相同的动态链接库名,则确定目标应用引用了第三方SDK。本发明专利技术可以提升第三方SDK的识别效率。SDK的识别效率。SDK的识别效率。

【技术实现步骤摘要】
识别Android应用引用的第三方SDK的方法及装置


[0001]本专利技术涉及软件开发及应用
,尤其涉及一种识别Android应用引用的第三方SDK的方法及装置。

技术介绍

[0002]本部分旨在为权利要求书中陈述的本专利技术实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
[0003]第三方软件开发工具包(Software Development Kit,SDK),一般由第三方服务商将服务封装为工具包(即SDK)供开发者使用,常见的服务包括广告、数据、社交网络、地图和推送平台等,其原理是将复杂的逻辑和实现过程封装成易用的接口供其他开发者使用。第三方SDK是一种重要的可复用的软件资源,在移动应用平台受到开发者的青睐,应用范围日益广泛。使用第三方SDK进行开发,不仅可以有效的提高开发效率,并且可以使项目更加成熟稳定。
[0004]但是随着第三方SDK被大规模引用,也引入了一定的风险因素,例如隐私泄露、安全漏洞等,因此需要通过识别Android应用引用的第三方SDK来进行更好的管控安全风险。现有技术一般采用包名作为第三方SDK特征,在关联数据中比对找到对应SDK。采用包名作为特征识别第三方SDK,每一次需在关联数据中比对所有数据项,比对效率不高,并且随着关联数据的增加,效率会愈加下降。同时包名不具有唯一性,开发者可以根据格式对包名进行任意命名,在这种条件下,仅使用包名作为关联特征,识别结果也会存在一定的误差。

技术实现思路

[0005]本专利技术实施例提供一种识别Android应用引用的第三方SDK的方法,用以提升第三方SDK的识别效率,减小识别结果存在的误差,该方法包括:
[0006]当接收到目标应用的Android应用程序包,对Android应用程序包进行反编译,得到反编译文件,所述反编译文件包含AndroidManifest.xml文件和lib目录;
[0007]从AndroidManifest.xml文件中提取目标应用的包名列表;
[0008]遍历lib目录,获取lib目录下所有动态链接库的文件名列表;
[0009]针对所述包名列表中的每个包名,确定包名长度,获取包名长度对应的关联数据子集,所述关联数据子集中存储相同包名长度的第三方SDK的包名和动态链接库名;
[0010]将每个包名与关联数据子集中包名进行匹配,如果关联数据子集中存储有相同包名,则将该相同包名对应的动态链接库名与lib目录下动态链接库的文件名列表进行匹配,如果存在相同的动态链接库名,则确定目标应用引用了第三方SDK。
[0011]在本专利技术实施例的一种实现方式中,在获取包名长度对应的关联数据子集之前,所述方法还包括:
[0012]获取已知的第三方SDK,提取每个第三方SDK的指定特征,所述指定特征包括包名长度、包名和动态链接库名;
[0013]将相同包名长度的第三方SDK的指定特征存入以包名长度为标识的关联数据子集中,所有包名长度的关联数据子集构成第三方SDK的关联数据集。
[0014]在本专利技术实施例的一种实现方式中,所述方法还包括:
[0015]读取包名中指定分隔符号的数量;
[0016]将指定分隔符号的数量加1确定为包名长度。
[0017]在本专利技术实施例的一种实现方式中,所述方法还包括:
[0018]如果第三方SDK没有动态链接库,则将动态链接库名设置为空。
[0019]在本专利技术实施例的一种实现方式中,将该相同包名对应的动态链接库名与lib目录下动态链接库的文件名列表进行匹配,如果存在相同的动态链接库名,则确定目标应用引用了第三方SDK,包括:
[0020]如果相同包名对应的动态链接库名为空,则确定目标应用引用了第三方SDK。
[0021]在本专利技术实施例的一种实现方式中,从AndroidManifest.xml文件中提取目标应用的包名列表,包括:
[0022]解析AndroidManifest.xml文件,从AndroidManifest.xml文件标签名为activity、service、provider和reicever的标签中提取属性为android:name的值,得到目标应用的包名列表。
[0023]在本专利技术实施例的一种实现方式中,在将每个包名与关联数据子集中包名进行匹配之后,所述方法还包括:
[0024]如果关联数据子集中没有存储相同包名,则确定目标应用没有引用该包名的第三方SDK。
[0025]在本专利技术实施例的一种实现方式中,在将该相同包名对应的动态链接库名与lib目录下动态链接库的文件名列表进行匹配之后,所述方法还包括:
[0026]如果不存在相同的动态链接库名,则确定目标应用没有引用该包名的第三方SDK。
[0027]本专利技术实施例还提供一种识别Android应用引用的第三方SDK的装置,用以提升第三方SDK的识别效率,减小识别结果存在的误差,该装置包括:
[0028]反编译模块,用于当接收到目标应用的Android应用程序包,对Android应用程序包进行反编译,得到反编译文件,所述反编译文件包含AndroidManifest.xml文件和lib目录;
[0029]提取模块,用于从AndroidManifest.xml文件中提取目标应用的包名列表;
[0030]提取模块,还用于遍历lib目录,获取lib目录下所有动态链接库的文件名列表;
[0031]提取模块,还用于针对所述包名列表中的每个包名,确定包名长度,由获取模块获取包名长度对应的关联数据子集,所述关联数据子集中存储相同包名长度的第三方SDK的包名和动态链接库名;
[0032]匹配模块,用于将每个包名与关联数据子集中包名进行匹配,如果关联数据子集中存储有相同包名,则将该相同包名对应的动态链接库名与lib目录下动态链接库的文件名列表进行匹配,如果存在相同的动态链接库名,则确定目标应用引用了第三方SDK。
[0033]在本专利技术实施例的一种实现方式中,
[0034]获取模块,还用于获取已知的第三方SDK,由提取模块提取每个第三方SDK的指定特征,所述指定特征包括包名长度、包名和动态链接库名;
[0035]存储模块,用于将相同包名长度的第三方SDK的指定特征存入以包名长度为标识的关联数据子集中,所有包名长度的关联数据子集构成第三方SDK的关联数据集。
[0036]在本专利技术实施例的一种实现方式中,提取模块,还用于:
[0037]读取包名中指定分隔符号的数量;
[0038]将指定分隔符号的数量加1确定为包名长度。
[0039]在本专利技术实施例的一种实现方式中,提取模块,还用于:
[0040]如果第三方SDK没有动态链接库,则将动态链接库名设置为空。
[0041]在本专利技术实施例的一种实现方式中,匹配模块,用于:
[0042]如果相同包名对应的动态链接库名为空,则确定目标应用引用了本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种识别Android应用引用的第三方SDK的方法,其特征在于,所述方法包括:当接收到目标应用的Android应用程序包,对Android应用程序包进行反编译,得到反编译文件,所述反编译文件包含AndroidManifest.xml文件和lib目录;从AndroidManifest.xml文件中提取目标应用的包名列表;遍历lib目录,获取lib目录下所有动态链接库的文件名列表;针对所述包名列表中的每个包名,确定包名长度,获取包名长度对应的关联数据子集,所述关联数据子集中存储相同包名长度的第三方SDK的包名和动态链接库名;将每个包名与关联数据子集中包名进行匹配,如果关联数据子集中存储有相同包名,则将该相同包名对应的动态链接库名与lib目录下动态链接库的文件名列表进行匹配,如果存在相同的动态链接库名,则确定目标应用引用了第三方SDK。2.根据权利要求1所述的方法,其特征在于,在获取包名长度对应的关联数据子集之前,所述方法还包括:获取已知的第三方SDK,提取每个第三方SDK的指定特征,所述指定特征包括包名长度、包名和动态链接库名;将相同包名长度的第三方SDK的指定特征存入以包名长度为标识的关联数据子集中,所有包名长度的关联数据子集构成第三方SDK的关联数据集。3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:读取包名中指定分隔符号的数量;将指定分隔符号的数量加1确定为包名长度。4.根据权利要求2所述的方法,其特征在于,所述方法还包括:如果第三方SDK没有动态链接库,则将动态链接库名设置为空。5.根据权利要求4所述的方法,其特征在于,将该相同包名对应的动态链接库名与lib目录下动态链接库的文件名列表进行匹配,如果存在相同的动态链接库名,则确定目标应用引用了第三方SDK,包括:如果相同包名对应的动态链接库名为空,则确定目标应用引用了第三方SDK。6.根据权利要求1所述的方法,其特征在于,从AndroidManifest.xml文件中提取目标应用的包名列表,包括:解析AndroidManifest.xml文件,从AndroidManifest.xml文件标签名为activity、service、provider和reicever的标签中提取属性为android:name的值,得到目标应用的包名列表。7.根据权利要求1所述的方法,其特征在于,在将每个包名与关联数据子集中包名进行匹配之后,所述方法还包括:如果关联数据子集中没有存储相同包名,则确定目标应用没有引用该包名的第三方SDK。8.根据权利要求1所述的方法,其特征在于,在将该相同包名对应的动态链接库名与lib目录下动态链接库的文件名列表进行匹配之后,所述方法还包括:如果不存在相同的动态链接库名,则确定目标应用没有引用该包名的第三方SDK。9.一种识别Android应用引用的第三方S...

【专利技术属性】
技术研发人员:罗明宇高媛媛刘庆文杨有为赵志文
申请(专利权)人:建信金融科技有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1