PC端微信逆向分析(強制輸出微信調式信息)源碼及工具,由吾愛大神原創制作的一個微信逆向分析PC端工具,并提供程序和源碼資源下載,這款PC端微信逆向分析工具由JieKeH的一篇文章《PC微信逆向---分析獲取登錄二維碼的數據》啟發,修改了一些功能項目,可以查看微信調試程序信息,本次帶來PC端微信逆向分析源碼和程序資源下載,感興趣的朋友們不妨看看吧!
PC端微信逆向分析說明
更簡單的方式
編寫DLL,所涉及到的知識較多,涉及到編碼、編譯、注入等一系列操作,不但操作復雜而且修改也不容易。近日,最新正式版的微信2.8.0.106推出,我在此新版本上進程了相關的嘗試,其實只是在CE中進行簡單的一些設置,即可滿足需求,就算是新手也不難掌握。由于剪輯視頻太耗時間,而且相比于上一個視頻也沒多少新意,因此僅整理成文檔分享給大家。部分內容,之前的視頻中有講解,這里就不再贅述,直接進入本文主題。
定位“是否啟用調試”的地址
在OD中附加微信后,查詢二進制代碼“74 14 FF B5 EC FE FF”(為何是這個二進制代碼,請參考之前的視頻講解),定位到如下代碼片段,并在接下來的CALL(WeChatWi.79164604)上下一個斷點:
ds:[0x79A6CA01],這個地址,就是是否啟動調試的開關。計算出偏移地址:0x160CA01。在微信中,這個地址中的數據被設置成0,因此調試信息將不會輸出。只要將這個地址中的數據更改為1,那么輸出調試信息的開關就被打開了。但是,調試信息還有其他開關,那就是調試級別。
定位“調試級別”的地址
查詢二進制代碼“56 89 9D F0 FB FF FF”(為何是這個二進制代碼,請參考之前的視頻講解),定位到如下代碼片段:
進入 WeChatWi.79154DB0這個CALL后,到達如下代碼片段:
ds:[0x79A1CD54],這個地址,就是調試級別的設置。計算出偏移地址:0x15BCD54。在微信中,這個地址中的數據被設置成2,也就是高于“kLevelDebug”的信息才會被輸出。只要將這個地址中的數據更改為0,也就是“kLevelAll”或“kLevelVerbose”,也就是輸出全部調試信息。
定位調試數據的代碼段
在JieKeH的文章中,完成這兩步設置后,調試信息即可輸出,在DebugView中課捕獲微信自身的調試信息。正如前文所述,隨著微信版本的升級,此方法很快失效。于是,基于此設置,我再用HOOK的方式,重新讓微信具備了調試信息的輸出的功能。到目前最新的2.8.0.106版本,HOOK方法依然有效。當然,無論怎么做,定位調試數據這個步驟還是不能少的。
用鼠標動一動微信,OD中程序將暫停在調用“WeChatWi.79164604”處(之前下的斷點處),按F7進入該函數。注意觀察堆棧窗口,持續按F8,單步執行,直到堆棧頂部出現如下類似的信息。這些信息,就是原本要輸出的調試信息。接下來,在HOOK中,同樣把這個數據提取出來,從調試信息中輸出,然后在DebugView中捕獲。
這時候,觀察程序運行的代碼部分,計算出該代碼片段中“add esp,0x4c“所在匯編代碼的偏移地址:0x‭CE7853‬。其代碼片段如下:‬
在上一個HOOK的視頻中,我在這里進行了HOOK。在本文中,我使用CE來進行一小段“代碼注入”即可代替編寫DLL這種難度高、而且手續繁雜的工作。
定位堆棧中數據的地址
雖然數據在堆棧頂部,但是由于下來要對堆棧進行操作,如果使用ESP來取數據,還需一些手動的計算,稍顯麻煩。由于EBP在堆棧操作過程中會保持不變,因此我們使用EBP加上一定的偏移量來取數據,這樣就不需要額外的手動計算。
在OD堆棧窗口中,點右鍵選擇“轉到EBP“,在該行的地址上雙擊,變成”$==>“
然后,在OD堆棧窗口中,點右鍵選擇“轉到ESP“,記錄該行相對于EBP的偏移:$-40E0。也就是說,當前的數據位于[ebp-0x40E0]這個地方,也就是ESP所指向的地方。因此,我們取到了數據存儲的地址:ebp-0x40E0。
PC端微信逆向分析測試
輸出調試信息:1
設置調試級別:0
OutPutDebug:啟用(那個方框中間畫一個叉)
以管理管身份啟動“DebugView”軟件,用鼠標動一動微信,即可觀察到微信輸出的調試信息。