Windows逆向分析入門(七)——實戰篇(刷新二維碼)


前言

  這一篇,用到找偏移的第二個方法:界面;第四個方法:字符串;第六個方法:第三方庫。目標是刷新二維碼。

 

Duilib

  WX的界面模塊是第三方庫:Duilib。

  關於Duilib的介紹和分析,已經分享了《Dump微信PC端的界面Duilib文件》。

 

這里梳理一下Duilib的主要流程:

  1、Duilib加載配置文件,生成界面。

  2、用戶點擊界面的的按鈕,會產生click事件。

  3、Duilib接收到事件,會判斷是點個哪個按鈕,然后觸發對應的函數。

  4、比如發送按鈕,配置文件里面是"send_btn",判斷代碼就是 if(xxx== "send_btn")。

  5、通過攔截按鈕的名字"send_btn",就可以定位到按鈕的對應的函數是哪一個。

 

分析思路

  1、找到登陸界面的配置文件

  2、確定刷新二維碼的按鈕名字

  3、在軟件中對按鈕的名字進行下斷點

  4、看是否觸發斷點,如果觸發,進一步確認對應函數

 

找偏移

  1、看下登陸界面

    

  2、對應的登陸界面的配置文件

    

 

  3、刷新二維碼的按鈕的名字

    qrcodeBackBtn

 

  4、用OD下斷點

    1、雙擊WeChatWin.dll模塊

       

    2、查看所有字符串

       

    3、右鍵搜索字符串

      

      

    4、得到搜索結果

       

    5、雙擊,然后右鍵看下用到這個字符串的地方

       

    6、對用到這個字符串的地方下斷點

       

  5、重新打開微信

    第一個斷點斷下來,這里是生成界面,不是我們想要的,跳過。

       

  6、點擊登陸界面的切換賬號,觸發刷新二維碼

       

    這里可以看到,會有各個按鈕的名字,也有je的匯編

    對應的就是C++的if(xxx== "xxxBtn")

    OD看比較清晰

       

 

    這樣就可以定位到,刷新二維碼的函數,是je之后這一塊

       

    具體是哪一個,可以用排除法,把函數注釋掉,如果沒有刷新,那個這個函數就是目標函數。

       

       

  7、繼續執行,確實沒有刷新二維碼,這個函數是目標函數,看下參數

     傳遞的參數ecx,ecx是個指針,並且指向的是一個虛表,意味着這是一個類的對象,構造對象麻煩。F7進入函數跟蹤進行,看下有沒有不需要自己構建參數的函數。

     

     這里把ecx傳給esi,然后有很多[esi+ 0xxxx],意味着還是在用這個對象,跳過。  

    

  8、往下翻,到了這里,就沒用到esi的數據了。

    參數ecx沒指向虛表,不是上面的對象。試試注釋掉,結果還是有刷新二維碼,排除掉。

    5C00FA79    8D4D E0         lea ecx,dword ptr ss:[ebp-0x20]

    5C00FA7C    C745 FC FFFFFFF>mov dword ptr ss:[ebp-0x4],-0x1

    5C00FA83    E8 F8DEE1FF     call WeChatWi.5BE2D980

     

 

  9、而接下來,是兩個函數,第一個函數運算,結果返回到eax,接下來又傳給ecx,給第二個函數用,可以看出這兩個函數是一起的,兩個都注釋掉之后,沒刷新二維碼,因此這兩個函數就是我們要的刷新二維碼的函數。

    5C00FA88    E8 83C5FFFF     call WeChatWi.5C00C010

    5C00FA8D    8BC8            mov ecx,eax

    5C00FA8F    E8 DC461100     call WeChatWi.5C124170

 

算偏移

  基址:5BDE0000

    Executable modules, 條目 7

    基址=5BDE0000

    大小=01946000 (26501120.)

    入口=5CB34A63 WeChatWi.<ModuleEntryPoint>

    名稱=WeChatWi

    文件版本=2.9.0.123

    路徑=C:\Program Files (x86)\Tencent\WeChat\WeChatWin.dll

  

  偏移 =  內存地址 - 基址

    第一個call   5C00C010 - 5BDE0000 = 22C010

    第二個call   5C124170 - 5BDE0000 =  344170

 

寫代碼

  

 

工具和教程,放群里(163419350),方便交流。

實戰代碼也會放在github:https://github.com/KongKong20/WeChatPCHook


免責聲明!

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



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