☰
WeChatPlugin-macOS 实战指南:微信小助手的消息防撤回、自动回复与远程控制
2026/10/3 7:33:32 网站建设 项目流程
  • 即时通讯
  • 桌面应用
  • 逆向工程

【免费下载链接】WeChatPlugin-MacOS

微信小助手

项目地址:https://gitcode.com/gh_mirrors/we/WeChatPlugin-MacOS
点击查看免费下载

本文以 README_EN.md 为核心,系统讲解 WeChatPlugin-macOS(微信小助手)的功能全景、安装与卸载流程、菜单栏操作方式以及底层 Hook 注入原理。读完本文,你将掌握该插件在 macOS 微信上的完整部署方法,并能理解自动回复规则、远程控制指令体系与源码级实现机制。


一、项目概览:一个注入微信的“小助手”菜单

WeChatPlugin-macOS 是一个面向 macOS 微信客户端的插件项目,通过向微信进程注入动态库(WeChatPlugin.framework),在微信菜单栏中新增一个“微信小助手”菜单,从而提供消息防撤回、自动回复、远程控制、微信多开等一系列增强能力。

英文版 README 标注的版本为 v1.7(支持微信 2.3.10);仓库内中文版 README.md 已更新至 v2.0,并注明支持微信 3.7.0。安装成功并重启微信后,菜单栏出现“微信小助手”即代表注入完成:

二、功能全景

英文版 README 列出的完整功能清单如下:

  • 消息自动回复(Message auto reply)
  • 消息防撤回(Prevent message recall)
  • 远程控制,支持语音指令(Remote control, support voice control)
  • 微信多开(Multiple WeChat)
  • 自动认证登录(Auto Auth Login)
  • 会话置底(Session Sticky Bottom)
  • 微信窗口置顶(Windows Sticky Top)
  • 会话多选删除(Session multiple delete)
  • 自动登录开关(Auto Login Switch)
  • 通知中心快捷回复(Quick reply to notifications)
  • 表情包复制 / 导出(Copy or Export Sticker)
  • 插件更新(Update plugin)
  • Alfred 快捷回复 / 打开会话(需安装 wechat-alfred-workflow 依赖)
  • 全部会话一键已读(Make all session As Read)
  • 一键清除空会话(Clear all empty session)
  • 去除微信 url 转链(Remove url redirect)

远程控制指令能力

英文版 README 明确列出的远程控制能力包括:

分类支持指令
系统屏幕保护(Save Screen)、清空废纸篓(Empty Trash)
电源锁屏、休眠、关机、重启(Lock Screen & Sleep & Shut Down & Restart)
应用退出 QQ、WeChat、Chrome、Safari 等应用
网易云音乐播放、暂停、下一首、上一首、喜欢、取消喜欢
小助手自身获取全部指令、防撤回开关、自动回复开关、自动认证开关

权限提示(英文版原文):若想使用远程控制网易云音乐,请在「系统偏好设置 → 安全性与隐私 → 隐私 → 辅助功能」中允许微信(以及脚本编辑器)控制电脑。

三、安装与卸载

1. 方式一:Git 命令行安装(适合已安装 Git 的用户)

打开/Applications/Utilities/Terminal.app(终端),执行:

cd ~/Downloads && rm -rf WeChatPlugin-MacOS && git clone https://gitcode.com/gh_mirrors/we/WeChatPlugin-MacOS.git --depth=1 && ./WeChatPlugin-MacOS/Other/Install.sh

执行过程中会要求输入 macOS 密码(用于获取写入微信应用目录的权限)。

2. 方式二:普通安装(无需 Git)

  1. 点击仓库的clone or download按钮下载项目并解压;
  2. 打开终端;
  3. 将解压目录Other文件夹中的 Install.sh 文件直接拖入终端窗口并回车。

若提示Permission denied(无权限),可先执行sudo chmod -R 777 /Applications/WeChat.app解决。

3. 安装脚本内部逻辑(源码级解读)

Install.sh 的核心流程值得展开说明,它揭示了插件的注入原理:

  1. 定位微信:默认查找/Applications/WeChat.app;若不存在则尝试/Applications/微信.app,两者都找不到则提示检查微信是否被重命名或移动;
  2. 授权:若微信目录不可写,执行sudo chown -R $(whoami) "$wechat_path"获取写入权限;
  3. 备份可执行文件:将微信原始可执行文件WeChat复制为WeChat_backup(若已存在备份且未加--force参数,则交互询问是否覆盖安装);
  4. 复制插件框架:将Other/Products/Debug/WeChatPlugin.framework复制到/Applications/WeChat.app/Contents/MacOS/目录下;
  5. 注入动态库:调用Other/insert_dylib --all-yes,把WeChatPlugin.framework/WeChatPlugin写入微信主程序的可执行文件(基于备份文件生成新的可执行文件)。

安装完成后重启微信,菜单栏即出现“微信小助手”。

4. 卸载

打开终端,将解压目录Other文件夹中的 Uninstall.sh 拖入终端并回车即可。

卸载脚本的恢复逻辑为:若检测到WeChat_backup备份文件,则删除被注入的WeChat可执行文件与WeChatPlugin.framework,再将WeChat_backup重命名为WeChat,从而完整还原微信原貌。若卸载失败,脚本会提示手动到/Applications/WeChat.app/Contents/MacOS目录处理这三个文件。

5. 源码修改与重编译(面向开发者)

若想修改源码重新编译,仓库内 Install.md 提供了完整指引:

  1. 先更改微信的 owner 以获取写入权限:sudo chown -R $(whoami) /Applications/WeChat.app;
  2. 下载项目后执行Pod install;
  3. 用 Xcode 打开工程,编辑 Scheme,在Debug 模式下启动 WeChat;
  4. 按command + R运行,此时插件随微信启动注入完成;
  5. 若报错提示找不到 Framework,先执行 Build。

四、使用指南:菜单栏与快捷键

所有开关功能均集中在菜单栏「微信小助手」菜单中,由 TKAssistantMenuManager.m 统一构建。从源码可以确认各菜单项与快捷键的对应关系(keyEquivalent大写字母表示需同时按下 Shift):

1. 消息防撤回

  • 操作:点击菜单「开启消息防撤回」,或使用快捷键command + t切换开关;
  • 开启后,菜单下还会出现「防撤回自己」子项,用于决定是否同时拦截自己撤回的消息;
  • 底层实现位于 WeChat+hook.m,通过tk_hookMethod拦截微信FFProcessReqsvrZZ的收消息方法(FFToNameFavChatZZ:sessionMsgList:与syncBatchAddMsgs对应的hook_OnSyncBatchAddMsgs:isFirstSync:),在被撤回消息到达前缓存并拦截。

2. 消息自动回复

  • 操作:点击「开启自动回复」或使用快捷键command + k,弹出自动回复设置窗口;
  • 配置规则(英文版未展开,来自仓库中文版 README 的详细说明,均可视化配置):
规则说明
关键字*任何消息都会回复
关键字x\|yx 和 y 都触发回复
关键字或回复内容为空该条自动回复不生效
延迟回复可设置延迟秒数后回复
正则匹配开启后按正则表达式匹配,需保证正则书写正确
特定联系人开启后仅对指定联系人回复,原群聊 / 私聊回复不再生效
  • 从数据模型 TKAutoReplyModel.h 可看到自动回复条目的完整字段:enable(是否开启)、keyword(关键字)、replyContent(回复内容)、enableGroupReply(群聊回复)、enableSingleReply(私聊回复)、enableRegex(正则匹配)、enableDelay/delayTime(延迟回复与延迟秒数)、enableSpecificReply/specificContacts(特定联系人回复)。

3. 微信多开与自动认证

  • 微信多开:点击「登录新微信」即可再开一个微信实例(根据中文版 README,快捷键为command + shift + n);
  • 自动认证(Auto Auth):第二次登录免认证,配合多开使用体验最佳;
  • 自动认证开关状态由配置中心TKWeChatPluginConfig的autoAuthEnable字段持久化,并通过通知NOTIFY_AUTO_AUTH_CHANGE与菜单栏状态联动(见 TKAssistantMenuManager.m 的addObserverWeChatConfig方法)。

4. 远程控制

  • 操作:点击「远程控制 Mac OS」或使用快捷键command + shift + c,打开远程控制设置窗口;
  • 重要限制(英文版原文提示):远程控制指令仅对向自己账号发送的消息生效。

指令匹配逻辑见 TKRemoteControlManager.m:文本消息采用完全相等匹配(isEqualToString),语音消息采用包含匹配(containsString,语音指令在 iOS 端转文字后发回)。指令命中后按类型分发执行:

类型(TKRemoteControlType)执行方式
Shell(type=1)通过NSTask执行/bin/bash -c命令,如屏幕保护、锁屏
AppleScript(type=2)调用osascript .../TKRemoteControlScript.scpt脚本,如休眠、退出应用、网易云音乐控制
Plugin(type=3)插件内部逻辑,如获取指令列表、切换防撤回 / 自动回复 / 自动认证开关

远程控制的完整指令清单定义在 TKRemoteControlCommands.plist(仓库还提供了 UpdateRemoteControlCommandsPlist.py 辅助维护该 plist)。按分组整理如下:

① Mac 系统控制

关键字功能
ScreenSave开启屏幕保护
LockScreen锁屏
Sleep休眠
Shutdown关机
Restart重启
EmptyTrash清空废纸篓
Mute静音

② 退出应用

关键字功能
KillQQ退出 QQ
killWeChat退出微信
KillChrome退出 Chrome
KillSafari退出 Safari
killFirefox退出 Firefox
KillAll退出所有程序

③ 网易云音乐

关键字功能
Toggle播放 / 暂停
Next下一首
Previous上一首
VolumeUp音量加
VolumeDown音量减
LikeChange喜欢 / 取消喜欢

④ 小助手自身

关键字功能
getDirective获取全部指令列表
PreventRevokeSwitch切换防撤回开关
AutoReplySwitch切换自动回复开关
AutoAuthSwitch切换免认证登录开关

指令执行成功后,小助手会通过 TKMessageManager 向自己发送一条回执消息,并清除未读数。

5. 会话管理

  • 会话置底:将指定会话固定在聊天列表底部(类似“置顶”的反向操作);
  • 窗口置顶:点击「微信窗口置顶」或快捷键command + shift + d,将微信窗口层级提升到NSNormalWindowLevel + 2(见onWechatOnTopControl:实现);
  • 会话多选删除:在会话列表右键/鼠标按下多选批量删除(Hook 位于 MMChatsTableCellView+hook.m,拦截tableView:rowGotMouseDown:等系统方法);
  • 一键已读:全部会话标记为已读;
  • 一键清除空会话:批量删除无内容的空会话。

6. 表情包复制与导出

在聊天窗口表情消息上右键,可复制表情或存储到本地;表情选择器中也可右键执行「存储 / 复制」。Hook 位于 MMStickerMessageCellView+hook.m 与 MMStickerPickerCell+hook.m,通过拦截系统菜单(contextMenu、rightMouseDown:)注入自定义菜单项。

7. Alfred 集成

小助手支持通过 Alfred workflow 快捷回复消息、打开聊天窗口与查看聊天记录,但必须先安装 wechat-alfred-workflow 依赖(英文版原文特别注明)。在「微信小助手 → 其他」子菜单中可打开/关闭「Alfred」开关;从源码看,开启开关会启动TKWebServerManager的本地 Web 服务(startServer),为 Alfred workflow 提供查询接口,关闭时停止服务(endServer)。

英文版 README 备注:若未使用 alfred,则不必打开 alfred 开关。

8. 其他开关与细节

  • 更新小助手:菜单内直接触发版本检测,有新版本时弹出提示并可一键下载更新;
  • 使用自带浏览器:快捷键command + shift + b,控制是否用系统默认浏览器打开链接;
  • 禁止微信检测更新:针对非 App Store 版本,可关闭微信启动时的版本检测;
  • 退群监控:监控群成员退群事件并记录;
  • 去除 url 转链:去掉微信对链接的跳转拦截,实现直接打开抖音等外部链接;
  • 多语言支持:仓库内置英文、简体中文、繁体中文三套Localizable.strings。

五、技术原理:Hook 注入与依赖体系

1. 注入链路

插件采用经典的动态库注入(dylib injection)方案:Install.sh将WeChatPlugin.framework放入微信的Contents/MacOS目录,再用Other/insert_dylib把插件动态库写入微信可执行文件的加载列表。微信每次启动即自动加载插件,插件在main.mm入口完成初始化。

2. 方法 Hook 机制

插件运行时使用fishhook(Facebook 开源的 Mach-O 符号重绑定库,源码位于 WeChatPlugin/Sources/Vendor/fishhook.h 与 fishhook.c)以及 OC 运行时方法交换(tk_hookMethod),对微信内部类进行挂钩:

  • WeChat+hook.m:防撤回、自动回复、自动认证、多开、URL 直链等核心能力;
  • MMChatsTableCellView+hook.m:会话列表右键菜单、多选、置底、删除;
  • MMStickerMessageCellView+hook.m 与 MMStickerPickerCell+hook.m:表情复制与导出。

3. 配置持久化

所有开关状态与用户数据(自动回复列表、远程控制指令列表、置底会话等)由单例 TKWeChatPluginConfig 统一管理,并提供saveAutoReplyModels:、saveRemoteControlModels:、saveIgnoreSessionModels:等方法持久化到本地。

4. 依赖清单

英文版 README 列出的第三方依赖为:

依赖用途仓库内对应资源
insert_dylib将动态库注入 Mach-O 可执行文件Other/insert_dylib
fishhookMach-O 符号重绑定,实现 C 函数级 HookWeChatPlugin/Sources/Vendor/fishhook.h
GCDWebServer本地 HTTP 服务(为 Alfred 集成提供查询接口)通过 Podfile 引入

六、注意事项

  • 仅限 macOS 微信客户端,安装前请确认微信位于/Applications目录;
  • 远程控制指令只对自己账号发送的消息生效,请勿向他人发送指令;
  • 网易云音乐远程控制需要在「系统偏好设置 → 安全性与隐私 → 隐私 → 辅助功能」中授权微信与脚本编辑器;
  • 使用插件存在一定风险(涉及修改微信可执行文件),请自行评估后使用;本项目定位为提升日常使用体验,请勿用于商业及其他不当用途。
  • 即时通讯
  • 桌面应用
  • 逆向工程

【免费下载链接】WeChatPlugin-MacOS

微信小助手

项目地址:https://gitcode.com/gh_mirrors/we/WeChatPlugin-MacOS
点击查看免费下载

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询