一、環境
1、微信版本
2、WeChatWin.dll基址
基址=0FD30000
大小=018A2000 (25829376.)
入口=10A0AA01 WeChatWi.
名稱=WeChatWi
文件版本=2.8.0.121
路徑=C:\Program Files (x86)\Tencent\WeChat\WeChatWin.dll
二、觀察添加好友過程
1、發起添加好友
日志
調試字串: AddFriend wxid_xxxxx
調試字串: new NetSceneVerifyUser (id:330),name:wxid_xxxxx
調試字串: opCode : 1, fromScene : 6 verifyContent: chatroomName :
調試字串: VerifyUser doSceneImpl(seqid:330)
調試字串: in send NetSceneVerifyUser(id:330)
界面
2、點擊確認
日志
調試字串: new NetSceneVerifyUser (id:332),name:wxid_xxxxx
調試字串: opCode : 2, fromScene : 6 verifyContent: 我是Kong chatroomName :
調試字串: VerifyUser doSceneImpl(seqid:332)
調試字串: in send NetSceneVerifyUser(id:332)
界面
3、添加好友流程
1、請求服務器判斷是不是好友:opCode : 1
2、收到服務器的回復,判斷是不是好友
2、如果不是好友,彈出添加好友界面
3、最后發起好友請求:opCode : 2
4、清粉思路
1、模擬添加好友,請求好友狀態
2、攔截彈出好友界面,判斷好友狀態
3、配合通訊錄,刪除好友,就能實現無痕清粉功能
三、找Call過程
1、添加好友的界面
微信界面是用Duilib,參考Duilib的微信分支,Hook創建界面,得到界面的XML文件
界面文件名:main\VerifyDialog.xml
確認按鈕:okbtn
2、判斷好友狀態
堆棧往下翻 看到 class AddFriendHelper
IDA看下AddFriendHelper
接收服務器的響應是在:AddFriendHelper::eventProc
里面判斷各種情況:好友,刪除,拉黑
這里就找到了判讀好友的狀態了
A7:刪除
A8:好友
AC:拉黑
3、請求好友狀態
點擊確認按鈕,發送的是opCode : 2,改為opCode : 1,就變成請求好友狀態
搜索字符串下斷點:opCode :
添加好友,觸發這里的斷點,第一次先跳過,點擊添加好友界面的確認按鈕,再次斷下
堆棧往回找看到okbtn
IDA對應的地方,可以看出這里就是對各種按鈕的處理
點擊確認按鈕:okbtn之后觸發的代碼
這里就找到了請求好友狀態的Call