微信Hook劫獲protobuf數據


    網上相關的微信Hook教程,講的基本都是相同的功能,比如獲取當前微信號,二維碼登錄,加群,獲取群信息,發消息。但是貌似protobuf方面的沒什么人講到,我自己百度,Google了下是沒找到,所以只能自食其力了。

    因為微信用的協議是mmtls,發送的數據呢是用的google的protobuf,知道這點后,咱可以自己去用protobuf練習寫個demo,怎么寫demo,咱就不贅述了,咱就說怎么來獲取微信發送的protobuf數據吧。

    1.首先咱都知道微信發請求都會調用req2buf相關的函數然后再post出去,接受數據呢會調用buf2resp相關的函數對protobuf數據進行反序列化,然后再進行接下來的邏輯處理。所以咱就隨便OD里面找個req2buf相關的函數頭進行斷點

   

 

    2.接下來咱可以推斷req2buf函數里面肯定調用了protobuf相關的序列化函數功能的。那咱就借助IDA,來找下關鍵字。首先打開IDA,載入WeChatWin.dll,按快捷鍵shift+f12,切到字符串搜索窗口。然后輸入關鍵詞“google"查找,結果如下圖:

 

   注意看截圖里面畫紅框的”message_lite.cc“,那為什么是它呢?是因為我自己在寫protobuf練習的demo過程中,發現protobuf序列化和protobuf反序列化過程中都會調用到這個文件里面的相關函數。

    那是不是只要把這個字符相關的函數給下個斷點,就可以獲取調用入口了呢。ok,接下來看有哪幾個函數引用了這個字符串,

    3.雙擊紅框的地方,跳過去,然后再按”X“鍵查看引用的地方,結果如圖:

 

    可以看到有3個函數引用到了,那咱就開OD,對3個函數下斷點,然后1步步進行調試了,就會找到調用的入口函數。因為我自己已經用OD調試過了,就不再演示怎么用OD找入口函數了,直接用IDA來找了。

-----------------------------------------

IDA快速查找protobuf序列化,反序列化入口函數。

  1. 隨便查找個req2buf相關的函數

     

    因為有了前面的推斷,及OD的調試經驗。所以可以知道這個函數里面肯定要有調用protobuf序列化的函數。咱就1個函數1個函數的點進去看。過程就不說了,目標函數就是畫紅框那個。它的2個參數呢,就是咱要的

第1個參數是放的序列化后的數據緩沖區,第2個參數是緩沖區大小。在OD調試的時候就可以把數據給拷出來,放到protobuf解析工具里面做解析。

1.序列化函數入口斷點:

 

2.繼續下一步,然后復制數據

 

3.處理空格,然后解析

 

    protobuf反序列化的入口函數過程是模一樣的,先找個buf2resp的函數頭斷點。再相關的message_lite.cc函數斷點,下面附一圖IDA里面的找buf2resp反序列化的函數入口點吧。

 

pb解析工具下載

IDARvaTool


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM