前言:確實(shí)好久沒有更新文章了,最近有些懶了,逆向確實(shí)水特別深啊, 這次發(fā)個(gè)庫(kù)存吧, 不過大家注意不要用作非法用途,僅供參考學(xué)習(xí),所以不發(fā)成品。 還諒解。
分析某Q版本:8.0.7.4085
這里只說明以一系列的分析思路和技巧,想直接看結(jié)果可以去文章末尾直接看。
? 用另一個(gè)聊天賬號(hào)撤回一條消息,然后用模擬器上的qq觀察。 Ddms工具捕捉時(shí)間段內(nèi)的棧心思,猜測(cè)捕捉msg關(guān)鍵詞
? 找到mqq.app. MSFServlet. onReceive() 方法
,
這里發(fā)現(xiàn)了remove關(guān)鍵詞,猜測(cè)為刪除這條信息,那我們不讓這條信息發(fā)出去
? 然后把這個(gè)方法直接重寫
? 測(cè)試之后不行,發(fā)現(xiàn)這個(gè)方法是處理消息的最上層。 這里的remove是處理一個(gè)Map的、
那這個(gè)response是什么,我hook到把它打印了出來。

? 繼續(xù)向下走。。


那些亂七八糟的類,都在這個(gè)包下
追到這個(gè)類,我的眼睛已經(jīng)快不行了。 不過我想繼續(xù)向下找

WupBuffer 這個(gè)字段很敏感

繼續(xù)往后,看哪里還有處理這個(gè)的。

這里處理了一下,然后重新put了一次。像個(gè)解密的地方。
看看怎么解密的
減去了4個(gè)長(zhǎng)度,并且調(diào)用了這個(gè)方法

然后回到 atca看到,又把這個(gè)對(duì)象給發(fā)走了

點(diǎn)過去一看還是個(gè)抽象方法,那就去看他的實(shí)現(xiàn)類。實(shí)現(xiàn)類也看不到。在Hook里已經(jīng)拿到了 wupBuffer的數(shù)組,我們按照他的處理完之后,重新轉(zhuǎn)String看看能不能得到更多的信息。

線索中斷,更換思路
線索中斷,jadx內(nèi)存吃不消了,用killer找撤回的關(guān)鍵詞,找到撤回的部分

name_APKTOOL_DUPLICATENAME_0x7f0c2a24
全局搜

繼續(xù)搜 0x7f0c2a24
三處

Killer卡死了。。。 換jadx看代碼吧(手動(dòng)哭泣) 上戰(zhàn)場(chǎng),槍很重要?。。?!
從上到先先記錄一下這些類中使用的方法
Aidx—aj(ToServiceMsg,F(xiàn)romServiceMsg,Object) --沒用
Aiji—a(ArrayList)
Aiji—b(ArrayList)---在這里有個(gè)意外收獲,發(fā)現(xiàn)了D方法,就是當(dāng)自己撤回的時(shí)候??聪旅?br>
Atdx—a(QQAppInterface,Submsgtype0x8a$ReqBody,JZ) ---信息量太大,看看上面的先(但是這里是最有可能的暫時(shí)看來)
Aiji—b

熱門都走了這個(gè)東西。 然后我們?nèi)タ纯?andk.a
我決定hook這個(gè) andk.a 方法,我不管。我看的頭大了。。。 先試試再說!
然后,沒走。。。
然后hook atdx的a方法,一直報(bào)錯(cuò)找不到那個(gè)方法,然后

然后我決定打印他的所有a方法,并且拿到他的所有a方法的參數(shù)類型


我們需要找一個(gè)

類似這樣的列表看看

應(yīng)該是這個(gè)了,跟我們的核對(duì)一下看看哪里有問題
com.tencent.mobileqq.app.QQAppInterface、tencent.im.msgsync.cmd0x100.Submsgtype0x8a$ReqBody、(暫時(shí)看來是這里錯(cuò)了)
long、
boolean、
先把上面的方法日志注釋掉,然后看下面的hook能不能拿到參數(shù)

這里打出來的就是 ReqBody的內(nèi)容。 (記錄重啟了無數(shù)次。。。。。。模擬器。。要崩潰)
然后,hook不報(bào)錯(cuò)了,但是方法好像并沒有走到這里!??!
我…. 接近崩潰,我要上AndroidStudio調(diào)試了?。。?!
機(jī)器屬實(shí)吃不消了,,畢竟這個(gè)內(nèi)存不是無限大啊,i58代cpu也該退休了
? 項(xiàng)目導(dǎo)入AndroidStudio




我選擇8700你隨意
? 然后,看下qq的

2301
? 輸入adb命令 adb forward tcp:8700 jdwp:2301

? 我要在每個(gè)有撤回文字的地方打上斷點(diǎn)! 分別為:


.



(AndroidStudio一點(diǎn)好處就是不用滾輪,光標(biāo)放到目錄里,直接輸入類名即可)

? 開始打斷點(diǎn)
? 好了,調(diào)試失敗

我沒了。。。
? 解決各種問題卡頓之后, 斷點(diǎn)走到了 aiji.b 方法
? 來hook這個(gè)方法
? 最后。。。我成功了!
分析不易,一鍵三連。