一、目標(biāo)
這個(gè)樣本和之前的小視頻App的套路有點(diǎn)類似。簽名的名稱和算法估計(jì)都是一樣的卧檐。所以搞明白這個(gè),估計(jì)也能搞明白最新版的小視頻App幢炸。
那看小說(shuō)和看小視頻的區(qū)別在哪泄隔?
小說(shuō)越看越困,小視頻越看越清醒宛徊。足以證明AI比你還要了解你自己佛嬉。
今天我們的目標(biāo)就是某小說(shuō)App v1.0.0.2
二逻澳、步驟
搜索 __sig3
才5個(gè)結(jié)果,仔細(xì)找找暖呕,發(fā)現(xiàn)了這個(gè) atlasSign 函數(shù)斜做,
再搜索下 atlasSign 函數(shù),雖然這次調(diào)用的地方很對(duì)湾揽,但是我們一眼就發(fā)現(xiàn)了一個(gè)老朋友
com.kxxxxxou.android.security.KSecurity
首先它的名字起的太有個(gè)性了瓤逼,其次是上次在分析小視頻App的時(shí)候也是他做的簽名。
Hook atlasSign
var KSecurityCls = Java.use("com.kxxxxxou.android.security.KSecurity");
KSecurityCls.atlasSign.implementation = function(a){
var rc = this.atlasSign(a);
console.log(TAG + "atlasSign a = " + a);
console.log(TAG + "atlasSign >>> rc = " + rc);
return rc;
}
跑一下库物,結(jié)果是有了霸旗,但是hook輸出的是48位的數(shù)據(jù),并不是我們抓包到的70多個(gè)字節(jié)的亂七八糟的數(shù)據(jù)戚揭。
下面有兩個(gè)方案:
1诱告、堅(jiān)信我們是對(duì)的,做__sig3簽名一定調(diào)用了atlasSign民晒,只是可能把這個(gè)48位的簽名再做了某種變化精居。這樣的話,我們打印下堆棧就行了潜必;
2靴姿、看抓包的結(jié)果還是很像Base64,雖然沒(méi)有== 之類的Base64必須特征磁滚,但是憑這么多期的經(jīng)驗(yàn)佛吓,還是可以hook一把Base64試試。
打堆棧
fenfeixs: java.lang.Thread.getStackTrace(Thread.java:1720)
fenfeixs: com.kxxxxxou.android.security.KSecurity.atlasSign(Native Method)
fenfeixs: k.w.e.a1.t.a(SourceFile:34)
fenfeixs: k.w.e.a1.t.a(Native Method)
fenfeixs: k.h.d.h.d.intercept(SourceFile:111)
狐貍尾巴漏出來(lái)了恨旱,這個(gè) k.w.e.a1.t.a 應(yīng)該就是我們的目標(biāo)了
var ffSignCls = Java.use("k.w.e.a1.t");
ffSignCls.a.overload('java.lang.String', 'java.lang.String', 'java.util.Map').implementation = function(a,b,c){
var rc = this.a(a,b,c);
console.log(TAG + "a = " + a);
console.log(TAG + "b = " + b);
console.log(TAG + "c = " + c.entrySet().toArray());
console.log(TAG + ">>> rc = " + rc);
return rc;
}
再跑一下辈毯,結(jié)果出來(lái)了,果然就是 __sig3
fenfeiksxs: >>> rc = VVftYQGnh_1jN2Q2ODU4NTVjN2U0NmU1ZGM4ZjhjOGQwYjA0MDA5OGMyNDhkN2Y2OTM5ZTkwODY
大概分析了一下搜贤,他就是把 atlasSign 的結(jié)果做了一個(gè)Base64,然后把明顯的 + / = 都替換掉。
入?yún)⒗锩孢€有個(gè) dpbs 是加密的钝凶,不過(guò)這個(gè)就比較好解決了仪芒,都在 k.w.e.a1.t.a 類里面。
三耕陷、總結(jié)
剛拿到這個(gè)樣本的時(shí)候我也疑惑了一下掂名,雖然他繞了好幾個(gè)圈子,但是很方便的可以定位到atlasSign哟沫。
正以為大功告成的時(shí)候饺蔑,才發(fā)現(xiàn)atlasSign的結(jié)果是48位,和抓包結(jié)果不符嗜诀。
這時(shí)候就得相信自己了猾警,首先atlasSign被觸發(fā)了孔祸,說(shuō)明大概率做 __sig3 的時(shí)候被調(diào)用了。那么打印堆棧就是最好的解決方案了发皿。
營(yíng)己良有極 過(guò)足非所欽