推薦兩個(gè)非常實(shí)用的開源項(xiàng)目,提高開發(fā)效率!
1.SDK-Analysis
前言
隨著對 apk 內(nèi)部集成 SDK 調(diào)研需求的增加,實(shí)現(xiàn)自動(dòng)化檢測 apk 包中 SDK 集成情況的功能是很有必要的。因此,筆者創(chuàng)建了 SDK-Analysis 這個(gè)項(xiàng)目,目的就是自動(dòng)化拆解 apk 包,并查找其是否集成所要了解的 SDK。
支持功能
目前支持 8 家 SDK 的檢測:數(shù)盟,數(shù)美,極光,友盟,Mob,TalkingData,網(wǎng)易易盾,易觀方舟;具體步驟:
解壓 apk 文件
通過 baksmali 解壓 dex文件
查找 apk 中所需要的 SDK集成情況,并打印結(jié)果
基礎(chǔ)使用
將代碼下載到本地后:
將要解析的 apk 放入項(xiàng)目的 a目錄下,可以支持 n 個(gè)apk的解析工作
根據(jù)自身情況修改文件路徑,本示例以如下:
#?要解析的?apk?文件路徑
pathsour?=?'D:\\MyProgects\\Python\\SdkAnalysis\\apk\\'
#?baksmali.jar
baksmali?=?'D:\\MyProgects\\Python\\SdkAnalysis\\baksmali.jar'根據(jù)自身情況修改輸出文件路徑,本示例如下:
reportPath?=?"D:\\MyProgects\\Python\SdkAnalysis\\logout\\UmengSDKReport.txt"總結(jié)要查找的 SDK 的特征值:
#?sdk?feature
#?友盟
umengStr?=?"com.umeng"
#?極光
JAnalyStr?=?"JAnalyticsInterface"??#?極光統(tǒng)計(jì)
JPushStr?=?"JPushInterface"????????#?極光推送
JMessageStr?=?"JMessageClient"?????#?極光IM
JShareStr?=?"JShareInterface"??????#?極光分享
#?個(gè)推
GTStr?=?"getui"
GTStr_1?=?"GTIntentService"
GTStr_2?=?"GetuiPushService"
#?個(gè)數(shù)
GSStr_1?=?'GsManager?'
GSStr_2?=?'GsConfig?'
#?個(gè)像
GI?=?'GInsightManager?'
#?TalkingData
TalkingDataStr?=?"TCAgent"
#?Mob
MobSDKStr?=?"MobSDK"
#?數(shù)盟
DUSDKStr?=?"cn\shuzilm\core"
#?數(shù)美
SMSDKStr?=?"SmAntiFraud"
#?易觀方舟
YGSDKStr?=?"AnalysysAgent"
#?網(wǎng)易易盾
WANGYIStr?=?"watchman"
注意:經(jīng)分析,推送類 SDK 與大多數(shù)其他的分析類 SDK 不同,只是實(shí)現(xiàn)簡單的發(fā)送和接受功能。而其他的sdk大多具備完整數(shù)據(jù)能力,因此對極光和個(gè)推的 SDK 類別做了區(qū)分。
至此,我們可以開啟 apk 解析之旅了,啟動(dòng)項(xiàng)目。
輸出文件
報(bào)告輸出以 SDK 為單位,打印集成 SDK 的應(yīng)用包名(下載后的apk名稱),這樣可以更方便的看到對應(yīng) SDK 都被哪些 apk 所集成。
項(xiàng)目中報(bào)告的路徑如下:

以 JGSDKReport 為例,內(nèi)部結(jié)構(gòu)如下:
<==========================?極光?SDK?集成情況?===========================>
app?name?====>?com.kuaikan.comic_5.40.0_540000???JPush?SDK
app?name?====>?com.kuaikan.comic_5.40.0_540000???JAnalytic?SDK
內(nèi)容主要有APP名稱,所集成的SDK名;可根據(jù)自身需求修改輸出格式。
注意
由于 ?baksmali 在解包的時(shí)候速度會稍微慢一下,請耐心點(diǎn);
由于解包后的文件比較大,記得及時(shí)清理
項(xiàng)目地址
github地址:https://github.com/knight-li/SDK-Analysis
2.常用的數(shù)據(jù)結(jié)構(gòu)和算法封裝庫celib
celib是使用ANSI C開發(fā)的一個(gè)擴(kuò)展類庫(c extend library),包含了一些常用的數(shù)據(jù)結(jié)構(gòu)和算法的封裝,可以用于應(yīng)用或者學(xué)習(xí)。
目前已經(jīng)包含的封裝如下:
(01). 動(dòng)態(tài)數(shù)組。
(02). bitmap。
(03). 布隆過濾器。
(03). 二叉樹。
(04). 基本壓縮函數(shù)(RLE和LZE算法)。
(05). 常用的Hash函數(shù)(BKDR,FNV,DJB,ELF,bobJenkins,Murmur,crc32)。
(06). 哈希表(hashmap)。
(07). 雙向鏈表。
(08). 基本的數(shù)學(xué)操作函數(shù)。
(09). MD5(字符串md5, 文件md5)。
(10). 排序(插入,希爾,歸并,快速,桶式,Bit桶式)。
(11). 字符串API(類Java的StringBuffer字符串緩沖, token, 截取, 查找/替換)。
(12). 一些簡單的內(nèi)存操作函數(shù)。
項(xiàng)目地址
官方首頁:http://code.google.com/p/cx-util/downloads/list

如有收獲,歡迎「分享?
」
「點(diǎn)贊
」「評論?
」
看完本文有收獲?請轉(zhuǎn)發(fā)分享給更多人
? 開發(fā)者全社區(qū)?
