WeChatFerry/README.MD
2024-04-19 19:06:30 +08:00

348 lines
8.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# WeChatFerry
一个玩微信的工具。更多介绍见:[WeChatFerry: 一个玩微信的工具](https://mp.weixin.qq.com/s/CGLfSaNDy8MyuyPWGjGJ7w)。
<details><summary><font color="red" size="12">免责声明【必读】</font></summary>
本工具仅供学习和技术研究使用,不得用于任何商业或非法行为,否则后果自负。
本工具的作者不对本工具的安全性、完整性、可靠性、有效性、正确性或适用性做任何明示或暗示的保证,也不对本工具的使用或滥用造成的任何直接或间接的损失、责任、索赔、要求或诉讼承担任何责任。
本工具的作者保留随时修改、更新、删除或终止本工具的权利,无需事先通知或承担任何义务。
本工具的使用者应遵守相关法律法规,尊重微信的版权和隐私,不得侵犯微信或其他第三方的合法权益,不得从事任何违法或不道德的行为。
本工具的使用者在下载、安装、运行或使用本工具时,即表示已阅读并同意本免责声明。如有异议,请立即停止使用本工具,并删除所有相关文件。
</details>
|![碲矿](assets/TEQuant.jpg)|![赞赏](assets/QR.jpeg)|
|:-:|:-:|
|后台回复 `WCF` 加群交流|如果你觉得有用|
## 一起开发
> 🚫 非开发用户不需要往下看。
### 安装开发环境
<details><summary>点击查看</summary>
#### 安装 vcpkg
* 安装,参考[Vcpkg: 总览](https://github.com/microsoft/vcpkg/blob/master/README_zh_CN.md)。
```sh
cd C:\Tools
git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat
```
* 添加全局配置:
环境变量增加 `vcpkg` 所在路径(本项目为:`C:\Tools\vcpkg`)。
#### 安装相关组件
```sh
vcpkg install protobuf[zlib]:x64-windows-static
vcpkg install spdlog:x64-windows-static
vcpkg install nng:x64-windows-static
vcpkg install magic-enum:x64-windows-static
vcpkg integrate install
```
安装完毕后,需要配置 protoc 的环境变量并确保在命令行下可用protoc 的路径在 `<vcpkg_install_path>\installed\x86-windows-static\tools\protobuf`
#### 安装 VS2019
#### 安装 Python3
通过微软商店或者 python.org 自行下载均可,注意配置好环境变量,确保 `python3` 在命令行下可用
</details>
### 编译
使用 VS2019 打开工程,编译即可。编译成功后,在 `WeChatFerry\WeChatFerry\Out` 目录中会看到相应的 DLL 文件。
**注**:如果遇到执行 `protoc` 时的 9009 错误,检查是否是 python3 环境有问题,或者 protoc 命令的环境变量配置不正确。
### 运行
```py
import ctypes
# 加载 sdk.dll (需要绝对路径)
sdk = ctypes.cdll.LoadLibrary("C:/Projs/WeChatFerry/WeChatFerry/Out/sdk.dll")
# 初始化
sdk.WxInitSDK(False, 10086)
# 退出 SDK
sdk.WxDestroySDK()
# 注意关闭 Python 进程
```
## 项目结构
```sh
WeChatFerry
├── LICENSE # LICENSE
├── README.MD # 说明
├── WeChatFerry
│   ├── WeChatFerry.sln # VS2019 工程文件
│   ├── com # 公共模块
│   ├── rpc # RPC 模块
│   ├── sdk # 注入及启动模块
│   ├── smc # Silk-Mp3 转换模块
│   └── spy # 核心功能实现模块
├── assets
│   ├── QR.jpeg # 二维码,测试用图
│   ├── TEQuant.jpg # 二维码,测试用图
│   └── demo.gif # 示例动图
├── clients
│   ├── go # Go 客户端
│   ├── gohttp # HTTP 客户端
│   ├── http # HTTP 客户端
│   ├── java # Java 客户端
│   ├── node # Node.js 客户端
│   ├── pyauto # 群友封装的客户端
│   ├── python # Python 客户端
│   └── rust # Rust 客户端
└── docs # 文档
```
## 版本更新
### v39.1.0 (2024.04.19)
* 适配 x64 环境
* 重构项目
* 开始适配 `3.9.10.19`
<details><summary>点击查看更多</summary>
客户端越来越多了,版本号开始混乱,所以重新定义了版本号:`w.x.y.z`。
其中:
* `w` 是微信的大版本号,如 `37` (3.7.a.a), `38` (3.8.a.a), `39` (3.9.a.a)
* `x` 是适配的微信的小版本号,从 0 开始
* `y``WeChatFerry` 的版本,从 0 开始
* `z` 是各客户端的版本,从 0 开始
### v39.0.14 (2024.02.18)
* 修复获取登录二维码问题
### v39.0.13 (2024.02.14)
* 修复若干问题
* 撤回消息
* 获取登录二维码
### v39.0.12 (2023.12.20)
* 修复一个问题
* 消息转发
### v39.0.11 (2023.12.16)
* 修复 PB 消息类型(可能会导致非 Python 客户端崩溃)
* 修复日志错误
* 移除非必要依赖
### v39.0.10 (2023.12.08)
* 代码优化
* 发送卡片消息
* 拍一拍群友
* 邀请群成员
* 图片 OCR
### v39.0.7 (2023.12.03)
* 保存语音
### v39.0.6 (2023.11.26)
* 修复下载图片退出问题
### v39.0.5 (2023.11.22)
* 修复收到某些文件崩溃问题
### v39.0.4 (2023.11.21)
* 下载图片、文件和视频
### v39.0.3 (2023.09.28)
* 修复登录账号昵称超长报错问题
### v39.0.2 (2023.07.16)
* 修复朋友圈消息 `is_group``True` 问题
### v39.0.1 (2023.07.16)
* 获取朋友圈消息
### v39.0.0 (2023.07.14)
升级到 `3.9.2.23`
### v37.1.25 (2023.05.07)
更新版本编码。
根据新版本编码规则:
* `WeChatFerry``v3.7.0.30.25` 应调整为:`v37.1.25`,因为此前曾适配过 `3.7.0.29`
* Python 客户端 `wcferry``v3.7.0.30.25` 应该调整为 `v37.1.25.0`
* HTTP 客户端 `wcfhttp``v3.7.0.30.25` 应该调整为 `v37.1.25.0`
### v3.7.0.30.25 (2023.05.05)
* 修复群消息判断错误
* 修复名片添加好友问题
* 修复获取数据库多余字符问题
* 添加 Python 文档
* Python 客户端发送图片支持网络路径
### v3.7.0.30.24 (2023.04.19)
实现了一个功能。
### v3.7.0.30.23 (2023.04.13)
* 解密图片
* 获取登录账号信息
* 获取联系人备注
### v3.7.0.30.222023.04.09
将监听端口调整为可配置。
### v3.7.0.30.212023.03.15
* 发送表情
### v3.7.0.30.202023.03.12
修复 wxid 获取问题。
### v3.7.0.30.192023.03.06
修复重复消息问题。
### v3.7.0.30.182023.03.05
修复添加好友问题。
### v3.7.0.30.172023.03.05
修复获取登录账号 wxid 问题。
### v3.7.0.30.162023.03.04
将错误码改成错误消息,方便调试。
### v3.7.0.30.152023.03.01
* 发送 xml
### v3.7.0.30.142023.02.28
* 添加群成员
### v3.7.0.30.132023.02.27
去除 gRPC 框架,自定义更轻量的 RPC 轮子 `nnprc`
### v3.7.0.30.122023.01.20
* 更新 Python 客户端
* 修改监听地址为 `0.0.0.0:10086`
* 增加 `Launcher`,直接注入 `spy`
### v3.7.0.30.112022.10.19
更新 Python 客户端。
### v3.7.0.30-gRPC-22022.10.18
增加 Java 客户端。
### v3.7.0.30-gRPC-12022.10.16
将 RPC 框架切换为 gRPC
### v3.7.0.30-82022.09.25
* 获取登录账号微信 ID
### v3.7.0.30-72022.09.24
修复群聊有系统消息时会崩溃 bug。后续考虑把消息来源交还给客户端自己区别。
### v3.7.0.30-62022.08.21
* 通过好友验证
### v3.7.0.30-52022.08.20
* 执行 SQL 语句
### v3.7.0.30-42022.08.20
修复群消息 @人 功能。有几点注意事项:
1. `vAtWxids` 是要 `@``wxid` 清单,以 `,` 分隔。
2. 只有群主才能 `@所有人`,非群主硬发 `@所有人` 会导致消息发不出去;`@所有人` 对应 `vAtWxids``"notify@all"`
3. 消息体里 `@` 的数量必须与 `vAtWxids` 里的数量一致,否则消息能发出但 `@` 功能失效。
### v3.7.0.30-32022.08.20
修复可重入 bug。
### v3.7.0.30-22022.08.14
优化 Hook 和 Inject 代码,实现可重入。
### v3.7.0.30-12022.08.12
适配微信 `3.7.0.30`
### v3.7.0.29-32022.08.7
* 查询数据库,获取库、表。
### v3.7.0.29-22022.08.7
优化 RPC。
### v3.7.0.29-12022.08.7
适配微信 `3.7.0.29`
### v3.3.0.115-32021.08.28
适配微信 `3.3.0.115`,新增功能:
* 获取所有联系人
### v3.3.0.115-22021.08.22
适配微信 `3.3.0.115`,新增功能:
* 发送图片消息
### v3.3.0.115-12021.08.22
适配微信 `3.3.0.115`
### v3.0.0.57-12021.02.12
适配微信 `3.0.0.57`,支持功能:
* 登录状态判断
* 接收文本消息
* 发送文本消息
</details>