微信无痕清粉分析过程-附源码地址

 

一、环境

1、微信版本

图片

2、WeChatWin.dll基址

基址=0FD30000

大小=018A2000 (25829376.)

入口=10A0AA01 WeChatWi.

名称=WeChatWi

文件版本=2.8.0.121

路径=C:Program Files (x86)TencentWeChatWeChatWin.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文件

图片

界面文件名:mainVerifyDialog.xml

确认按钮:okbtn

图片

2、判断好友状态

堆栈往下翻 看到 class AddFriendHelper

图片

IDA看下AddFriendHelper

图片

接收服务器的响应是在:AddFriendHelper::eventProc

里面判断各种情况:好友,删除,拉黑

这里就找到了判读好友的状态了

A7:删除

A8:好友

AC:拉黑

图片

3、请求好友状态

点击确认按钮,发送的是opCode : 2,改为opCode : 1,就变成请求好友状态

搜索字符串下断点:opCode :

图片

添加好友,触发这里的断点,第一次先跳过,点击添加好友界面的确认按钮,再次断下

图片

堆栈往回找看到okbtn

图片

IDA对应的地方,可以看出这里就是对各种按钮的处理

图片

点击确认按钮:okbtn之后触发的代码

这里就找到了请求好友状态的Call

图片

四、最终效果图

图片

五、源码

https://github.com/KongKong20/WeChatPCHook

原文地址:https://www.cnblogs.com/wwgk/p/12610850.html