關(guān)于接入頭條的應(yīng)用管理中心分包SDK,在看完說(shuō)明文檔后,下載SDK。 查看了代碼后,好家伙。用到的是美團(tuán)walle(因?yàn)槲乙灿惺褂?,所以哪怕有混淆也基本一眼看出?lái)了)。根據(jù)以下判斷得出的

但是問(wèn)題來(lái)了,美團(tuán)walle針對(duì)的是V2簽名的,頭條的分包SDK沒(méi)有限制說(shuō)明要用V2,繼續(xù)查看
這部分是跟walle差不多的

查找方法a(context)


不難看出,如果e是flase的話,再次執(zhí)行c(context), 然后判斷d[0],d[1]? 有值的話返回,否則返回b.d , b.d = ""
然后到a(a(context))外層的

代碼簡(jiǎn)單,不多解釋。
那么現(xiàn)在不難得出, 重點(diǎn)在c(context)這個(gè)方法里面了。
再次分析c(context)

查看跟美團(tuán)相似的

通過(guò)關(guān)鍵字UnsupportedEncodingException 在美團(tuán)walle代碼查找,比對(duì),不難發(fā)現(xiàn)代碼跟PayloadReader幾乎一模一樣

然后把目光移動(dòng)到walle拿不到數(shù)據(jù)的情況下,

JADX反編失敗,沒(méi)問(wèn)題。我們可以看smali,但是如果經(jīng)驗(yàn)豐富的話其實(shí)也不難得出,V2簽名拿不到值,那應(yīng)該是在V1簽名的情況下,V1簽名的情況下打包方式了解的話,不需要重簽名的話,也就只剩下?
1、往apk的meta-info目錄塞文件(寫(xiě)文件夾)
2、往apk 的zip file comment 區(qū)域?qū)懭霐?shù)據(jù)(寫(xiě)注釋?zhuān)?/p>
觀察smali代碼

看到這個(gè)基本能確定了使用的是往apk 的zip file comment 區(qū)域?qū)懭霐?shù)據(jù)
至此,基本分析完畢。??
剩下的就是修改之前使用到的美團(tuán)walle的寫(xiě)入方式,然后把之前自己使用的walle代碼刪除,引入humeSDK,
在讀取渠道參數(shù)的時(shí)候調(diào)用humeSDK

然后修改之前的寫(xiě)入

以及打包后的校驗(yàn)

至此基本完成.
PS:上面的基本都是總結(jié),過(guò)程中很多驗(yàn)證過(guò)程已經(jīng)省略了
2022年7月27更新
關(guān)于部分v1簽名,所使用zip注釋?zhuān)?/p>

僅供參考