Skip to content

baiyajin/my-wx-4

Repository files navigation

Logo

项目介绍

my-wx-4 是一个多平台微信管理解决方案,通过 Hook 技术实现微信客户端的深度集成,提供数据同步、远程控制等功能。

技术架构

项目采用多端协同架构:

  • Windows 客户端 (.NET 9.0 + WPF / Rust + egui): Hook 微信客户端,同步数据到服务器,接收并执行命令
  • 移动端应用 (Flutter): 展示好友列表、朋友圈,发送操作命令
  • 后端服务 (Python FastAPI): 提供 RESTful API 和 WebSocket 服务,存储数据并转发命令

主要功能

  • ✅ Hook 微信客户端,实时同步数据
  • ✅ 好友列表、朋友圈、标签数据同步
  • ✅ 远程发送消息、点赞、评论朋友圈
  • ✅ 多端数据实时同步
  • ✅ 授权码管理系统
  • ✅ 版本更新管理

数据示例

关键特征

  • data 是数组([...]
  • 数组元素包含:wxid, nickname, account, avatar, city, country, province, remark, sex, source, labelid_list
  • 每个元素都有 wxidnickname 字段
  • 可能包含 accountavatar 字段(可能为空,但字段存在)

智能判断逻辑

  1. 检查 data 是否为数组(JArray 或字符串以 [ 开头)
  2. 检查数组元素是否包含 wxidnickname 字段
  3. 可选:检查是否包含 accountavatar 字段

真实日志数据示例

{
  "data": [
    {
      "account": "xi******91",
      "avatar": "https://wx.qlogo.cn/mmhead/ver_1/Kd*******vs/0",
      "city": "Kunming",
      "country": "CN",
      "labelid_list": "4",
      "nickname": "***",
      "province": "Yunnan",
      "remark": "D💋",
      "sex": 2,
      "source": 0,
      "wxid": "wxid_np*******e22"
    }
  ],
  "type": 11126
}

2. 11135 - 应用消息(公众号文章)

关键特征

  • data 是对象({...}
  • 包含 wx_type: 49(公众号消息类型)
  • 包含 wx_sub_type: 5(公众号文章子类型)
  • 包含 raw_msg 字段(XML格式,包含 <appmsg>, <title>, <des>, <url> 等标签)
  • 包含 from_wxid, to_wxid, msgid, timestamp 字段

智能判断逻辑

  1. 检查 data 是否为对象(JObject
  2. 检查是否包含 wx_type: 49wx_sub_type: 5
  3. 检查是否包含 raw_msg 字段(且包含 <appmsg><msg> 标签)

真实日志数据示例

{
  "data": {
    "from_wxid": "wxid_dg*******w12",
    "is_pc": 0,
    "msgid": "7116695054182577718",
    "raw_msg": "<?xml version=\"1.0\"?>\n<msg>\n\t<appmsg appid=\"\" sdkver=\"0\">\n\t\t<title>商品笔记有阅读,但商品没人点?我把种草笔记改了这3点,30天就卖了1000单!</title>\n\t\t<des>如何提高种草内容商品点击率的小技巧,都在这篇里了,写了3h,超级干货!</des>\n\t\t<type>5</type>\n\t\t<url>https://mp.weixin.qq.com/s?__biz=Mzk5MDIzMzg5OQ==&mid=2247483862&idx=1&sn=53795342aa64a2e9b85e68ada7a83e27&chksm=c498dc2f18730cd27c4d389b9a1fb41bd68f5da5bbbe62dfd6d677e5cac00467e37b51e119fe&mpshare=1&scene=1&srcid=1120AcltgflKvLMcy6CwlR2m&sharer_shareinfo=5480bb6d96082d1e6a671c34ff815cd6&sharer_shareinfo_first=5480bb6d96082d1e6a671c34ff815cd6#rd</url>\n\t\t<appattach>...</appattach>\n\t\t<sourceusername>gh_42*******fe</sourceusername>\n\t\t<sourcedisplayname>麦子的成长笔记</sourcedisplayname>\n\t</appmsg>\n\t<fromusername>wxid_dg*******w12</fromusername>\n\t<scene>0</scene>\n\t<appinfo>\n\t\t<version>1</version>\n\t\t<appname></appname>\n\t</appinfo>\n</msg>",
    "room_wxid": "",
    "timestamp": 1763635252,
    "to_wxid": "filehelper",
    "wx_sub_type": 5,
    "wx_type": 49
  },
  "type": 11135
}

3. 1112 - 账号信息消息

关键特征

  • data 是对象({...}
  • 必须同时包含所有特征键:wxid, nickname, phone, account, avatar
  • 不包含 wx_typeraw_msg 字段(区别于11135)

智能判断逻辑

  1. 检查 data 是否为对象(JObject
  2. 检查是否同时包含所有特征键:wxid, nickname, phone, account, avatar
  3. 排除包含 wx_typeraw_msg 的情况(避免与11135混淆)

真实日志数据示例

{
  "data": {
    "account": "dx***d",
    "avatar": "http://wx.qlogo.cn/mmhead/ver_1/kl*******PG/0",
    "nickname": "云*****务",
    "phone": "13*******37",
    "pid": 29120,
    "unread_msg_count": 0,
    "wx_user_dir": "C:\\Users\\Administrator\\xwechat_files\\wxid_dg*******w12_e24b",
    "wxid": "wxid_dg*******w12"
  },
  "type": 1112
}

4. 11132 - 文本消息

关键特征

  • data 是对象({...}
  • 包含 msg, from_wxid, to_wxid, timestamp 字段
  • 可能包含 room_wxid(群聊消息)和 msgid 字段
  • 不包含 wx_typeraw_msg 字段(区别于11135)

智能判断逻辑

  1. 检查 data 是否为对象(JObject
  2. 检查是否包含 msg, from_wxid, to_wxid, timestamp 字段
  3. 排除包含 wx_typeraw_msg 的情况(避免与11135混淆)

真实日志数据示例(基于代码推断):

{
  "data": {
    "msg": "消息内容",
    "from_wxid": "wxid_xxx",
    "to_wxid": "wxid_yyy",
    "timestamp": 1763635252,
    "room_wxid": "",
    "msgid": "7116695054182577718"
  },
  "type": 11132
}

注意:11132消息的实际日志数据较少,上述示例基于代码逻辑推断。实际数据格式可能包含更多字段。

5. 11144 - 语音消息

数据结构

{
  "data": {
    "voice": "...",
    "audio": "...",
    ...
  },
  "type": 11144
}

关键特征

  • data 是对象({...}
  • 包含 voiceaudio 字段

智能判断逻辑

  1. 检查 data 是否为对象(JObject
  2. 检查是否包含 voiceaudio 字段

真实日志数据示例(基于代码推断):

{
  "data": {
    "voice": "...",
    "audio": "...",
    "from_wxid": "wxid_xxx",
    "to_wxid": "wxid_yyy",
    "timestamp": 1763635252,
    "msgid": "7116695054182577718"
  },
  "type": 11144
}

注意:11144消息的实际日志数据较少,上述示例基于代码逻辑推断。实际数据格式可能包含更多字段。

消息类型判断优先级

type 字段不完整或缺失时,智能判断按以下优先级进行:

  1. 11135(应用消息) - 优先级最高,避免与其他类型混淆
  2. 11126(联系人列表) - 通过数组结构判断
  3. 1112(账号信息) - 通过所有特征键判断
  4. 11132(文本消息) - 通过消息字段判断
  5. 11144(语音消息) - 通过语音字段判断

注意事项

  • 所有判断逻辑都基于实际日志数据分析得出
  • 判断时需要考虑字段的存在性,而不是值的内容(值可能被截断)
  • 某些字段可能为空字符串,但只要字段存在即可用于判断
  • type 字段完整时,优先使用 type 字段,不进行智能判断

WebSocket消息格式

{
  "type": "command",
  "action": "send_message",
  "data": {
    "wxid": "xxx",
    "message": "hello"
  }
}

注意事项

  1. 法律合规:本工具仅供学习和研究使用,请遵守相关法律法规
  2. 数据安全:注意保护用户隐私和数据安全
  3. 生产环境:生产环境部署时请关闭调试模式,配置安全措施
  4. 版本兼容:确保三端版本兼容,建议使用相同版本
  5. 权限管理:Windows端需要管理员权限,请谨慎使用

最近更新

v1.0.0 (2025-12)

  • ✨ 完成多平台架构搭建
  • ✨ 实现 Windows 客户端 Hook 功能
  • ✨ 实现数据同步功能(好友、朋友圈、标签)
  • ✨ 实现远程命令执行功能
  • ✨ 完成 Flutter 移动端应用
  • ✨ 实现授权码管理系统
  • ✨ 实现版本更新管理
  • 🐛 修复账号信息检测逻辑(数据驱动策略)
  • 🐛 修复 WebSocket 连接稳定性问题
  • 📝 完善项目文档和启动脚本

Rust 客户端(开发中)

  • ✅ 完成项目基础设施
  • ✅ 完成基础模块(错误处理、日志、配置、加密)
  • ✅ 完成数据模型和状态管理
  • ✅ 完成进程管理和 DLL 管理
  • ✅ 完成 Hook 管理和连接管理
  • ✅ 完成网络模块和服务层
  • ✅ 完成 UI 模块(登录窗口、主窗口)

📖 启动和部署

详细的启动和部署指南请查看:启动部署.md

该文档包含:

  • 🏗️ 项目架构说明
  • 🔧 环境要求和配置
  • 🚀 快速启动指南
  • 📝 详细启动步骤(后端服务、Windows 客户端、Flutter 应用)
  • 🚢 部署说明(开发环境和生产环境)
  • ❓ 常见问题解答
  • 📚 相关资源和技术支持

快速启动

  1. 启动后端服务:cd server && start.bat
  2. 启动 Windows 客户端:cd windows && start-all.bat
  3. 启动 Flutter 应用:cd app && auto.bat

更多详细信息请参考 启动部署.md


微信赞助

如果这个项目对您有帮助,欢迎通过微信赞助支持项目发展:

微信赞赏

感谢您的支持!您的赞赏将用于项目的持续开发和维护。

QQ 付费技术群

加入我们的 QQ 付费技术群,获取技术支持、最新更新和项目交流:

QQ付费技术群

扫码加入 QQ 付费技术群,与开发者和其他用户交流技术问题,获取优先技术支持。


注意:本项目仅供学习研究使用,请遵守相关法律法规和微信使用条款。

About

我的微信我做主

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published