ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

macOS微信多开完整指南:WeChatTweak 一条命令上手

macOS微信多开完整指南:WeChatTweak 一条命令上手

macOS微信多开完整指南:WeChatTweak 一条命令上手

【免费下载链接】WeChatTweakA command-line tool for tweaking WeChat - 首款微信 macOS 客户端撤回拦截与多开 🔨项目地址: https://gitcode.com/gh_mirrors/we/WeChatTweak

工作和生活两个微信来回切换,太折腾?WeChatTweak 是一个 macOS 命令行工具,给微信客户端打补丁,实现多开,还顺带拦截消息撤回、关闭自动更新。

环境准备:4 项要求检查一遍

先确认四件事,缺一个后面都会卡住:

  • macOS 12 及以上(项目 Package.swift 里声明的平台下限)
  • 已安装 Homebrew
  • 微信 macOS 客户端在默认位置/Applications/WeChat.app
  • 能输入本机管理员密码,patch 需要写入/Applications

安装步骤:Homebrew 一条命令装好

推荐走 Homebrew tap,装好后升级也方便:

# 安装 brew install sunnyyoung/tap/wechattweak # 后续升级 brew upgrade wechattweak

备选方式是从源码编译:克隆https://gitcode.com/gh_mirrors/we/WeChatTweak仓库后执行make build,它会编译出 arm64 与 x86_64 双架构的wechattweak可执行文件,放进 PATH 即可使用。

方式一:wechattweak patch 给微信打补丁

patch子命令默认处理/Applications/WeChat.app,流程是读版本号、匹配补丁配置、写入字节、重新签名,中途会弹一次管理员密码框:

# 查看当前版本和所有支持的版本 wechattweak versions # 对默认路径的微信打补丁 wechattweak patch # 微信不在默认路径时,用 -a 指定实际位置 wechattweak patch -a ~/Downloads/WeChat.app

输出走到Done!就是成功了。

方式二:启动第二个微信实例

补丁打完,微信不再阻止第二个实例,这是 macOS 微信多开最直接的落地方式:

# -n 表示允许打开应用的新副本 open -n /Applications/WeChat.app

图形界面党也可以按住 Option 点 Dock 里的微信图标。两个实例各自独立登录,窗口和会话互不干扰。

典型使用场景:双号、客服与撤回拦截

  1. 工作/生活双号:主实例登工作号,再开一个登生活号,重要消息不再漏。
  2. 多客服账号:几个客户号并行跑,各窗口独立,不用来回登出登录。
  3. 撤回拦截:同一次 patch 会把消息撤回的处理函数一并短路,被撤回的内容你还能看到。

一句话讲清楚它做了什么

它不注入任何动态库,而是直接改写 WeChat 可执行文件里的几条指令:把"判断是否已有实例在运行"的检查函数短路成固定答案,撤回、自动更新入口同样处理,然后重新签名。微信启动后执行到的,就是打过补丁的代码。

关键代码走读:补丁是怎么写进去的

核心逻辑在 Patcher.swift。微信主程序是 Mach-O 二进制,工具先按 fat 头遍历各架构切片,再沿 load command 找到目标虚拟地址落在哪个 segment,换算出文件偏移后覆盖字节:

// 判断目标虚拟地址是否落在当前 segment 内 if vmaddr <= targetVA && targetVA < vmaddr + vmsize { // 虚拟地址 → 文件偏移 let fileOffset = sliceOffset + fileoff + (targetVA - vmaddr) try fh.seek(toOffset: fileOffset) try fh.write(contentsOf: patch) // 覆盖原指令 return }

具体打哪里、写什么字节,全由 config.json 驱动。以 34371 版本的多开项为例:

{ "version": "34371", "targets": [ { "identifier": "multiInstance", "entries": [ { "arch": "arm64", "addr": "1001b82c4", "asm": "20008052C0035FD6" } ] } ] }

这 8 字节是一条"条件跳转 + 返回"。对比同文件里 revoke 项,两者只差首字节20与00——条件位一翻转,实例检查从此总是得到"没有实例在运行"。

执行流程图:从 patch 到 Done

个性化配置:自定义微信路径与补丁清单

两个参数值得记住:-a指定微信路径,-c指定补丁清单,支持本地文件或远程地址,默认为项目仓库的 config.json。清单按版本组织,每条记录包含version和targets,target 里是identifier(功能名)加各架构的addr/asm。微信出了新版本,只要分析出新偏移,加一段配置就能支持,不用改代码。

快捷键集成:把多开变成一键操作

open -n这条命令非常适合封装成一键动作:Alfred 里新建 workflow,设个关键词触发open -n /Applications/WeChat.app;Raycast 里加一条自定义命令,效果一样。之后敲个快捷键就能拉起新实例,比翻 Dock 快得多。

与第三方工具联动

工具用法适合谁
Alfredworkflow 封装 open -n关键词党
Raycast自定义命令执行 open -n快捷键党
LaunchBar快捷动作指向 open -nDock 重度用户

高频问题速查 ⚠️

现象原因解法
Unsupported WeChat version版本不在支持列表跑 wechattweak versions 查看
微信更新后多开失效二进制被新版覆盖重新执行 wechattweak patch
patch 时弹密码框写 /Applications 需授权输入管理员密码即可
打完补丁打不开微信签名或隔离属性异常重跑 patch,会自动重签并清 xattr

性能与稳定性建议

  1. 每个实例都是完整进程,内存占用成倍增长,日常两三个实例比较舒服。
  2. 微信每次更新后必须重新 patch,否则增强功能会失效。
  3. patch 直接改写二进制,介意的话先备份一份WeChat.app再动手。

安全与合规须知

  1. 改写客户端二进制可能违反软件服务条款,重要账号和企业环境请谨慎。
  2. 只从官方 Homebrew tap 或项目仓库获取工具,别用来路不明的"修改版"。
  3. 项目采用 AGPL-3.0 协议开源,补丁内容和逻辑全部公开可审计。

WeChatTweak 用二进制补丁代替动态库注入,一条命令拿下 macOS 微信多开,轻且透明。项目源码和补丁清单都在仓库里,遇到版本不兼容欢迎去提 issue。下期聊聊微信 macOS 的消息导出与自动化。

仅供技术交流与学习,请遵守相关软件使用协议和法律法规。

【免费下载链接】WeChatTweakA command-line tool for tweaking WeChat - 首款微信 macOS 客户端撤回拦截与多开 🔨项目地址: https://gitcode.com/gh_mirrors/we/WeChatTweak

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进