推荐两个非常实用的开源项目,提高开发效率!

共 2392字,需浏览 5分钟

 ·

2020-08-15 12:21

热文推荐:

1.SDK-Analysis

前言

随着对 apk 内部集成 SDK 调研需求的增加,实现自动化检测 apk 包中 SDK 集成情况的功能是很有必要的。因此,笔者创建了 SDK-Analysis 这个项目,目的就是自动化拆解 apk 包,并查找其是否集成所要了解的 SDK。

支持功能

目前支持 8 家 SDK 的检测:数盟,数美,极光,友盟,Mob,TalkingData,网易易盾,易观方舟;具体步骤:

  • 解压 apk 文件

  • 通过 baksmali 解压 dex文件

  • 查找 apk 中所需要的 SDK集成情况,并打印结果

基础使用

将代码下载到本地后:

  1. 将要解析的 apk 放入项目的 a目录下,可以支持 n 个apk的解析工作

  2. 根据自身情况修改文件路径,本示例以如下:

    # 要解析的 apk 文件路径
    pathsour = 'D:\\MyProgects\\Python\\SdkAnalysis\\apk\\'
    # baksmali.jar
    baksmali = 'D:\\MyProgects\\Python\\SdkAnalysis\\baksmali.jar'
  3. 根据自身情况修改输出文件路径,本示例如下:

    reportPath = "D:\\MyProgects\\Python\SdkAnalysis\\logout\\UmengSDKReport.txt"
  4. 总结要查找的 SDK 的特征值:

    # sdk feature
    # 友盟
    umengStr = "com.umeng"

    # 极光
    JAnalyStr = "JAnalyticsInterface"  # 极光统计
    JPushStr = "JPushInterface"        # 极光推送
    JMessageStr = "JMessageClient"     # 极光IM
    JShareStr = "JShareInterface"      # 极光分享

    # 个推
    GTStr = "getui"
    GTStr_1 = "GTIntentService"
    GTStr_2 = "GetuiPushService"
    # 个数
    GSStr_1 = 'GsManager '
    GSStr_2 = 'GsConfig '
    # 个像
    GI = 'GInsightManager '

    # TalkingData
    TalkingDataStr = "TCAgent"
    # Mob
    MobSDKStr = "MobSDK"
    # 数盟
    DUSDKStr = "cn\shuzilm\core"
    # 数美
    SMSDKStr = "SmAntiFraud"
    # 易观方舟
    YGSDKStr = "AnalysysAgent"
    # 网易易盾
    WANGYIStr = "watchman"

注意:经分析,推送类 SDK 与大多数其他的分析类 SDK 不同,只是实现简单的发送和接受功能。而其他的sdk大多具备完整数据能力,因此对极光和个推的 SDK 类别做了区分。

至此,我们可以开启 apk 解析之旅了,启动项目。

输出文件

报告输出以 SDK 为单位,打印集成 SDK 的应用包名(下载后的apk名称),这样可以更方便的看到对应 SDK 都被哪些 apk 所集成。

项目中报告的路径如下:

输入图片说明

以 JGSDKReport 为例,内部结构如下:

<========================== 极光 SDK 集成情况 ===========================>
app name ====> com.kuaikan.comic_5.40.0_540000   JPush SDK
app name ====> com.kuaikan.comic_5.40.0_540000   JAnalytic SDK

内容主要有APP名称,所集成的SDK名;可根据自身需求修改输出格式。

注意

  • 由于  baksmali 在解包的时候速度会稍微慢一下,请耐心点;

  • 由于解包后的文件比较大,记得及时清理

项目地址

github地址:https://github.com/knight-li/SDK-Analysis

2.常用的数据结构和算法封装库celib

celib是使用ANSI C开发的一个扩展类库(c extend library),包含了一些常用的数据结构和算法的封装,可以用于应用或者学习。

目前已经包含的封装如下:

(01). 动态数组。

(02). bitmap。

(03). 布隆过滤器。

(03). 二叉树。

(04). 基本压缩函数(RLE和LZE算法)。

(05). 常用的Hash函数(BKDR,FNV,DJB,ELF,bobJenkins,Murmur,crc32)。

(06). 哈希表(hashmap)。

(07). 双向链表。

(08). 基本的数学操作函数。

(09). MD5(字符串md5, 文件md5)。

(10). 排序(插入,希尔,归并,快速,桶式,Bit桶式)。

(11). 字符串API(类Java的StringBuffer字符串缓冲, token, 截取, 查找/替换)。

(12). 一些简单的内存操作函数。

项目地址

官方首页:http://code.google.com/p/cx-util/downloads/list


如有收获,欢迎分享 

「点赞「评论 

看完本文有收获?请转发分享给更多人

  开发者全社区 

5T技术资源大放送!包括但不限于:Android,Python,Java,大数据,人工智能,AI等等。关注公众号后回复「2T」,即可免费获取!
浏览 38
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报