上節(jié)課 我們詳細(xì)解析的二維碼圖片的找法,這節(jié)課我們繼續(xù)來實(shí)現(xiàn)遠(yuǎn)程hook二維碼圖片地址, 語言的話用易語言大法
我們上節(jié)課有找到一個(gè)地址 他存放著二維碼圖片地址
這里我們說怎么實(shí)現(xiàn)hook 也就是說二維碼刷新 我們可以直接Hook到二維碼
我事先把上節(jié)課說道的地址找到 04CF4A90
image.png
04FC9E30 就是二維碼圖片地址
我們要借助OD 通過斷點(diǎn)來跟蹤他是怎么變化的
image.png
在輸入命令的地方 輸入 dd 04CF4A90 然后回車
就可以看到 內(nèi)存數(shù)據(jù)
image.png
我們對04CF4A90這個(gè)地址 下一個(gè)硬件寫入斷點(diǎn)
因?yàn)楫?dāng)二維碼變化的時(shí)候 存放的二維碼地址 也就變了
下斷點(diǎn)之后
我們用手機(jī)掃一下二維碼 然后再退回到 二維碼界面 實(shí)現(xiàn)二維碼的刷新
image.png
斷在了這里,我們先把硬件斷點(diǎn)取消掉
image.png
image.png
然后刪除我們剛剛下的斷點(diǎn) 就行了
image.png
我們要看斷下的上一行 才是我們要找的地方 也就是esi
大家仔細(xì)看 他和我們下斷的地址是一樣的 而我們知道 這個(gè)地址里面是存放著二維碼地址的
這時(shí)候 其實(shí)二維碼圖片 并沒有寫入進(jìn)來
image.png
我們按F8單步走
image.png
走完這個(gè)子程序 也就是執(zhí)行完ret
image.png
這幾個(gè)地方 其實(shí)都存放著二維碼圖片的真實(shí)地址
我們hook 53758DF7這個(gè)地址 因?yàn)檫@里二維碼數(shù)據(jù) 才真正被填充完畢
大家可以嘗試 在這之前斷下 然后讀取 看看是不是能讀取到完整的二維碼 就知道了
image.png
當(dāng)我手動刷新二維碼之后 這是hook出來的寄存器的值
- “esi” | 80692704 4CF45E0
- “eax” | 83664432 4FC9E30
- “edi” | 3761 EB1
匯編里面有這樣一句代碼
53758DEC |. FFB6 B0040000 push dword ptr ds:[esi+0x4B0]
esi+0x4B0=4CF45E0+4b0=04CF4A90 這個(gè)地址 其實(shí)就存放著二維碼的地址 大家如果記得的畫
image.png
而 eax直接就是二維碼的圖片地址了
edi 其實(shí)也很明顯了 圖片大小
這些東西都有了之后 我們就可以 自由讀取二維碼了 也可以應(yīng)對刷新
每次二維碼刷新的時(shí)候 我們都能hook到
image.png
image.png
我們再來看下掃碼之后的內(nèi)容 也就是二維碼圖片里的實(shí)際內(nèi)容是什么
image.png
我們通過二維碼解碼平臺 解析微信二維碼 得到里面的實(shí)際內(nèi)容
http://weixin.qq.com/x/Yd6B206B7TWQJZ7xHo2A 發(fā)現(xiàn)是這么一串內(nèi)容
我們嘗試在內(nèi)存中尋找他
image.png
我們先嘗試 整串搜索 發(fā)現(xiàn)0個(gè)結(jié)果 搜索不到
我們就不搜完整的串 我們只搜索Yd6B206B7TWQJZ7xHo2A 這一串特征數(shù)據(jù) 每次刷新都只是這一串變化 前面的網(wǎng)址是固定的
我這里二維碼自動刷新 了 http://weixin.qq.com/x/oezZfJIcLrUKkmqLlLot
image.png
我們再次手動掃描二維碼 實(shí)現(xiàn)刷新
image.png
發(fā)現(xiàn) 只有06206C68地址 跟著變化了
也就是說 這個(gè)地址應(yīng)該就是我們要找的
和上面的方法一樣
我們對06206C68這個(gè)地址下硬件訪問斷點(diǎn) 來觀察他的變化過程
image.png
我們發(fā)現(xiàn) esi里面存放了我們二維碼內(nèi)容的地址
我們可以看到旁邊的注釋
這個(gè)地址來自 wechatwin模塊
我們就來計(jì)算下他的地址 首先我們得到wechatwin模塊基址
image.png
我們把 549a7f30-模塊基址53600000=13A7F30
因此我們可以計(jì)算出 二維碼存放基址等于 模塊基址+13A7F30
然后我們開始用易語言大法 開始碼代碼
image.png
這樣就完成了 即使我們關(guān)閉微信客戶端 重新打開 代碼依舊能用
如果要應(yīng)對更新 或者兼容其他版本 可能需要進(jìn)行特征碼定位
今天的內(nèi)容就到這了