PC微信逆向:分析发送xml名片call
文章目錄
- 微信版本
- 定位發(fā)送xml名片call
- 發(fā)送xml名片call的切入點(diǎn)
- 定位選擇聯(lián)系人的call
- 定位發(fā)送xml名片的call
- 定位接收者的微信ID
- 定位發(fā)送xml名片的call
- 驗(yàn)證發(fā)送xml名片的call
- 方法擴(kuò)展
微信版本
定位發(fā)送xml名片call
發(fā)送xml名片call的切入點(diǎn)
在發(fā)送xml名片時(shí),需要先選擇一個(gè)對(duì)象,我們首先要找的是選擇的call。找到了選擇的call,就能確定要發(fā)送的對(duì)象的微信ID的地址了。有了要發(fā)送對(duì)象的微信ID的地址之后就能下一個(gè)內(nèi)存訪問(wèn)斷點(diǎn),通過(guò)棧回溯找到發(fā)送xml名片的call
定位選擇聯(lián)系人的call
那么如何定位到選擇聯(lián)系人的call呢?
可以通過(guò)上面的字符串的區(qū)別從而定位到字符串的位置,然后下內(nèi)存寫(xiě)入斷點(diǎn),再定位到選擇的call
在CE中搜索已選擇了1個(gè)聯(lián)系人,找到存放字符串的地址
變化選擇的聯(lián)系人,最終確定字符串的地址,接著在OD中對(duì)這個(gè)地址下內(nèi)存寫(xiě)入斷點(diǎn)
然后在微信選擇一個(gè)聯(lián)系人,程序斷下。此時(shí)刪除斷點(diǎn)。既然要找選擇聯(lián)系人的call,那么這個(gè)call里面必定有一個(gè)參數(shù)是當(dāng)前選中的微信ID,根據(jù)這個(gè)線索,我們?cè)诙褩V姓乙粋€(gè)帶有微信ID的返回地址
反匯編窗口跟隨,這個(gè)call就是選擇聯(lián)系人的call
定位發(fā)送xml名片的call
定位接收者的微信ID
接著我們?cè)谶x擇聯(lián)系人的call下斷,在微信中選擇文件助手,讓程序斷下
此時(shí)堆棧的參數(shù)中有選中的微信ID,我們只要通過(guò)對(duì)這個(gè)微信ID下內(nèi)存訪問(wèn)斷點(diǎn),棧回溯分析,就能找到發(fā)送xml名片的call。
但是,這個(gè)ID我們是不能用的,因?yàn)樗划?dāng)作一個(gè)參數(shù)傳入函數(shù)中,這個(gè)微信ID是個(gè)局部變量,只要函數(shù)一結(jié)束,微信ID會(huì)自動(dòng)銷(xiāo)毀。所以我們需要找到函數(shù)調(diào)用后被賦值為微信ID的變量地址,然后對(duì)這個(gè)微信ID的地址下內(nèi)存訪問(wèn)斷點(diǎn)
我們首先在CE中添加這個(gè)地址
接著將這個(gè)微信ID修改為一個(gè)比較獨(dú)特的值,然后F8步過(guò)這個(gè)函數(shù)
搜索修改之后的微信ID,此時(shí)多了1個(gè)地址。這個(gè)多出來(lái)的1個(gè)地址就是我們所需要的。如果多出來(lái)兩個(gè)地址,可以直接按F9讓程序運(yùn)行,此時(shí)地址只剩下一個(gè)。
定位發(fā)送xml名片的call
對(duì)找到的微信ID的地址下內(nèi)存訪問(wèn)斷點(diǎn),F9運(yùn)行程序
點(diǎn)擊發(fā)送,此時(shí)程序斷下,分析附近堆棧
在堆棧的地址中找到一個(gè)參數(shù),里面有微信ID,那么這個(gè)很有可能就是我們需要的call。在這個(gè)地方下斷點(diǎn)
程序斷下,此時(shí)eax為微信ID,ecx為空。那么這個(gè)不是我們需要的call,繼續(xù)F8單步往下走
此時(shí)我們看到這個(gè)call將ForwardShareCard這個(gè)字符串傳入了堆棧,這個(gè)英文的意思是轉(zhuǎn)發(fā)分享名片,那么可以猜測(cè)這個(gè)函數(shù)應(yīng)該和發(fā)送xml名片的call有關(guān)系。繼續(xù)往下單步
這里有個(gè)call eax,此時(shí)ecx指向我們分享的名片的微信ID,那么這個(gè)函數(shù)應(yīng)該和發(fā)送xml名片是有關(guān)系的,我們F7進(jìn)入函數(shù)。
一直單步到這里我們找到了一個(gè)call,此時(shí)eax指向一個(gè)xml的數(shù)據(jù)
edx指向接收者的微信ID,那么這個(gè)call就非常有可能是我們要找的發(fā)送名片的call
驗(yàn)證發(fā)送xml名片的call
那么怎么驗(yàn)證呢?我們修改接收者的微信ID,讓原本發(fā)送給文件助手的xml名片發(fā)給好友,如果xml名片發(fā)給了微信好友,那么可以證明這個(gè)就是我們要的發(fā)送xml名片的call
方法擴(kuò)展
依次類(lèi)推,這種方法可以定位大多數(shù)的微信功能的call,只要是帶有這種選擇框的call,都可以通過(guò)這種方法,先找到選擇的函數(shù),然后再通過(guò)微信接收者的ID,下內(nèi)存訪問(wèn)斷點(diǎn),棧回溯分析附近代碼找到所需要的call
目前微信機(jī)器人的成品已經(jīng)發(fā)布,需要代碼請(qǐng)移步Github。還請(qǐng)親們幫忙點(diǎn)個(gè)star
https://github.com/TonyChen56/WeChatRobot
總結(jié)
以上是生活随笔為你收集整理的PC微信逆向:分析发送xml名片call的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: PC微信逆向:分析@群成员call
- 下一篇: PC微信逆向:分析微信发送文件call