0


Android 第三方SDK的检测与提取

Android 第三方SDK的检测一直是研究领域的热点与难点:
目前检测Android第三方SDK的方法主要分为两类
下手的目标也主要存在三点

首先说检测的点:

  1. AndroidManifest.xml文件: 从AndroidManifest.xml文件中可以获取许多关于第三方SDK的信息,从标签中获取名称与key值等
  2. smali代码结构:从smali代码结构和包名中同样可以获取sdk的信息,难度较大
  3. so文件:由于so文件的复杂性,从中提取sdk信息最为复杂,许多保密程度较高的应用会将第三方库的使用放入so文件中(部分病毒文件也这样做)因此如何提取so文件中的调用信息可以更加深入分析加密程度高的病毒文件

检测方法:

  1. 基于白名单的检测:基于白名单的检测是一种比较传统的方法:通过构建第三方库的白名单,将市面中所有流行的第三方库收集并放入库中,提取待检测的应用的第三方库清单信息,通过特征匹配的方式来识别使用了哪些的第三方sdk。 难点:全面收集市场上的第三方sdk信息,并做到实时更新,工作量巨大。提取待检测应用信息时存在混淆加密的情况,如何应对混淆加密就成了一个难点。
  2. 基于聚类匹配的方式:基于聚类匹配的检测方法通常是搜集大量的应用来进行提取特征,将大量特征按照一定规则进行聚类,不同的类得到不同的标签,这样就实现了特征库的获取。然后通过特征库和标签来对待检测应用进行匹配即可。 难点:计算资源大,需要预先处理大量的应用,耗费的计算资源,存储空间,时间都是巨大的。此外聚类算法,聚类规则的选择也很大程度上影响着检测结果。

而常见第三方SDK库有如下3种类型:

一、so类型文件
一般是C或C++语言的内容打包成的库,通常是在lib目录下,对于代码的调用较复杂

二、jar类型文件
JAR文件格式允许将许多文件组合成一个压缩文件,其中只包含了class文件与清单文件 ,不包含资源文件,如图片等所有res中的文件。
Jar库的优点:安全性、减少下载时间、传输平台扩展、包密封、包版本控制、可移植性。(大多数,因为可以兼容java)

三、aar类型文件
Android库项目的二进制归档文件,包含所有资源,class以及res资源文件全部包含。
将aar解压(后缀改为.zip,再解压文件)打开后,可以看到每个aar解压后的内容可能不完全一样,但是都会包含AndroidManifest.xml,classes.jar,res,R.txt。(最近的SDK大多采用这种形式)

存在的部分难点:
(1)库代码经过混淆
(2)库代码经过修改与删除


本文转载自: https://blog.csdn.net/weixin_44401481/article/details/127086294
版权归原作者 永恒的心zhX 所有, 如有侵权,请联系我们删除。

“Android 第三方SDK的检测与提取”的评论:

还没有评论