README.md 5.3 KB
Newer Older
L
ljc545w 已提交
1
# 描述
L
ljc545w 已提交
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
PC微信机器人,实现以下功能:
1. 获取通讯录  
2. 发送文本、图片、文件、xml文章、名片、群艾特消息  
3. 根据wxid查询好友信息  
4. 根据群ID获取所有群成员wxid  
5. 检测好友状态(是否好友、被删除、被拉黑)  
6. 接收各类消息,可写回调函数进行处理  
7. 封装COM接口,方便使用自己喜欢的语言进行调用  

# 用途
1. 淘客发单  
2. 无痕清粉  
3. 微信公众号采集  
4. 聊天记录备份  
5. 其他你能想到的用途  

L
ljc545w 已提交
18
# 可用版本
L
ljc545w 已提交
19
微信电脑版**3.5.0.46**  
L
ljc545w 已提交
20
微信电脑版**3.6.0.18**  
L
ljc545w 已提交
21 22 23
微信电脑版**3.7.0.26**
微信电脑版**3.7.0.30**  
主分支对应微信3.7.0.30版本,其他版本请查看对应分支。  
L
ljc545w 已提交
24

L
ljc545w 已提交
25
# 编译环境
L
ljc545w 已提交
26
**Visual Studio 2019**(平台配置:win32(x86))
L
ljc545w 已提交
27
# 原理
L
ljc545w 已提交
28 29
通过逆向PC微信,定位到关键CALL,dll内联汇编调用  
注册32位COM组件,供64位/32位进程外部调用  
L
ljc545w 已提交
30 31
# 目录说明
`./CWeChatRobot`:COM组件的实现代码  
L
ljc545w 已提交
32
`./DWeChatRobot`:注入的DLL实现代码,根据平台配置可编译出socket版和COM版  
L
ljc545w 已提交
33
`./wxRobot`:  包含C#的调用示例  
J
Jack Li 已提交
34
`./Python`:python示例和接口测试文件  
L
ljc545w 已提交
35
`./wxDriver`:driver的实现代码,有些函数具有一定的学习意义  
L
ljc545w 已提交
36
`./Release/CWeChatRobot.exe`:编译的COM组件  
L
ljc545w 已提交
37
`./Release/DWeChatRobot.dll`:编译的DLL文件  
L
ljc545w 已提交
38
`./Release/socket`:包含wxDriver.dll和socket接口的DLL  
L
ljc545w 已提交
39
`./Release/WeChatTools.exe`:用于调试时注入或卸载DLL程序,具体参阅相关代码  
L
ljc545w 已提交
40
# 注册COM
L
ljc545w 已提交
41
以管理员权限执行以下命令:  
L
ljc545w 已提交
42 43 44 45 46 47 48
```shell
# 安装
CWeChatRobot.exe /regserver
# 卸载
CWeChatRobot.exe /unregserver
```
# 调用
L
ljc545w 已提交
49
**Python:**  
J
Jack Li 已提交
50
参考[wxRobot.py](/Python/wxRobot.py)  
L
ljc545w 已提交
51
**C#:**  
L
ljc545w 已提交
52
参考[ComWechatRobotCsharp](https://github.com/RingoStudio/ComWechatRobotCsharp),感谢@RingoStudio 的贡献  
L
ljc545w 已提交
53
**易语言:**  
L
ljc545w 已提交
54
参考[ESDK](/ESDK),感谢@lovezm 的贡献  
L
ljc545w 已提交
55
# 更多功能 
L
ljc545w 已提交
56
后续计划功能:  
L
ljc545w 已提交
57
1. 修改好友备注  
L
ljc545w 已提交
58

L
ljc545w 已提交
59
有空的时候会按照上述顺序进行开发,不过嘛,计划只是计划,如果未实现也请见谅    
L
ljc545w 已提交
60
**也欢迎您提交PR**  
L
ljc545w 已提交
61 62
# 更新记录
## 2022.04.01
L
ljc545w 已提交
63 64
1. 使用SAFEARRAY返回通讯录列表,可正确显示好友昵称中的特殊符号  
2. README中添加目录说明  
L
ljc545w 已提交
65 66 67 68
3. 更新C#示例代码,添加好友列表的遍历示例  
## 2022.04.11  
1. 修改获取个人信息接口和发送文章接口,兼容老版wxid(未经测试,如有问题请提ISSUE)  
2. 添加接收消息的接口,可以写回调对消息进行处理(参考Python示例文件)  
L
ljc545w 已提交
69
## 2022.04.12
L
ljc545w 已提交
70 71 72
1. 添加发送群艾特消息的接口  
## 2022.04.12
1. 添加通过群ID获取所有群成员wxid接口  
L
ljc545w 已提交
73 74
## 2022.04.13
1. 更新群艾特接口,可同时艾特多人  
L
ljc545w 已提交
75 76 77 78
## 2022.04.18
1. 添加获取数据库句柄接口(部分句柄,获取全量句柄需Hook)  
2. 添加执行SQL命令接口  
3. 添加在线数据库备份接口  
L
ljc545w 已提交
79 80
## 2022.06.01  
1. 适配微信**3.7.0.26**版本,部分功能未经测试,如有问题请报issue  
L
ljc545w 已提交
81 82 83 84
## 2022.06.02  
1. 添加通过好友申请接口(配合接收消息接口可自动通过好友)  
2. 添加获取聊天记录数据库句柄(好友申请消息类型为0x25)  
3. 优化了StartService接口,重复注入时不再关闭远程进程  
L
ljc545w 已提交
85 86 87 88
## 2022.06.04  
1. 完成通过wxid和v3数据加好友的COM接口(后续添加通过微信号、手机号、QQ号查询V3数据接口)  
2. 优化接收消息逻辑,添加消息时间;新增Hook发送消息,返回数据中以一个BOOL值区分发送和接收  
3. 修复了一个BUG,该BUG可能导致Release配置下,COM接口无法正常加载DWeChatRobot.dll计算偏移  
L
ljc545w 已提交
89 90 91
## 2022.06.07  
1. 添加获取当前微信版本(读注册表)和启动微信的接口  
2. 优化数据库查询接口,现在可以正常查询BLOB类型  
L
ljc545w 已提交
92 93 94
## 2022.06.10  
1. 新增关注公众号、网络查询用户信息、Hook语音、未加密图片、自定义微信版本号接口  
2. Hook语音和图片的接口暂时还有瑕疵,图片收到后有可能不会自动下载;语音消息的文件名暂时是时间戳,计划替换为该条消息id。有空再做优化。  
L
ljc545w 已提交
95 96 97 98 99
## 2022.06.13  
1. 优化发送艾特消息接口,新增一个参数,指示是否自动填充被艾特人昵称  
2. 优化发送文章消息接口,新增一个参数,用于展示消息卡片缩略图  
3. 新增删除好友接口  
4. 新增发送小程序接口  
L
ljc545w 已提交
100 101 102
## 2022.06.18  
1. 修复了多个BUG  
2. 整理代码结构,方便后续开发基于websocket的接口  
L
ljc545w 已提交
103 104 105 106
3. 添加64位程序注入DLL到32位程序的driver  
## 2022.06.24  
1. 解决Python脚本中,socket接收数据可能不完整的问题  
2. 解决心跳时如果同步了同一个人的多条消息,只会返回一条的问题  
L
ljc545w 已提交
107 108 109
3. 感谢@shangdev 提供的思路,现在开启hook图片的时会修改自动下载图片时段为全天  
## 2022.06.30  
1. 已适配3.7.0.30版本  
L
ljc545w 已提交
110 111 112
## 2022.07.19  
1. 新增修改备注接口  
1. 新增群管理功能,包括添加成员、删除成员、设置公告、修改群名称、设置群内个人昵称、获取群成员昵称  
L
ljc545w 已提交
113
# 打赏作者
L
ljc545w 已提交
114
请给作者一个star,感谢感谢  
L
ljc545w 已提交
115
# 免责声明
L
ljc545w 已提交
116
代码仅供交流学习使用,请勿用于非法用途和商业用途!如因此产生任何法律纠纷,均与作者无关!