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