- 即时通讯
- 桌面应用
- 逆向工程
【免费下载链接】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)
- 点击仓库的
clone or download按钮下载项目并解压; - 打开终端;
- 将解压目录
Other文件夹中的 Install.sh 文件直接拖入终端窗口并回车。
若提示
Permission denied(无权限),可先执行sudo chmod -R 777 /Applications/WeChat.app解决。
3. 安装脚本内部逻辑(源码级解读)
Install.sh 的核心流程值得展开说明,它揭示了插件的注入原理:
- 定位微信:默认查找
/Applications/WeChat.app;若不存在则尝试/Applications/微信.app,两者都找不到则提示检查微信是否被重命名或移动; - 授权:若微信目录不可写,执行
sudo chown -R $(whoami) "$wechat_path"获取写入权限; - 备份可执行文件:将微信原始可执行文件
WeChat复制为WeChat_backup(若已存在备份且未加--force参数,则交互询问是否覆盖安装); - 复制插件框架:将
Other/Products/Debug/WeChatPlugin.framework复制到/Applications/WeChat.app/Contents/MacOS/目录下; - 注入动态库:调用
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 提供了完整指引:
- 先更改微信的 owner 以获取写入权限:
sudo chown -R $(whoami) /Applications/WeChat.app; - 下载项目后执行
Pod install; - 用 Xcode 打开工程,编辑 Scheme,在Debug 模式下启动 WeChat;
- 按
command + R运行,此时插件随微信启动注入完成; - 若报错提示找不到 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\|y | x 和 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 |
| fishhook | Mach-O 符号重绑定,实现 C 函数级 Hook | WeChatPlugin/Sources/Vendor/fishhook.h |
| GCDWebServer | 本地 HTTP 服务(为 Alfred 集成提供查询接口) | 通过 Podfile 引入 |
六、注意事项
- 仅限 macOS 微信客户端,安装前请确认微信位于
/Applications目录; - 远程控制指令只对自己账号发送的消息生效,请勿向他人发送指令;
- 网易云音乐远程控制需要在「系统偏好设置 → 安全性与隐私 → 隐私 → 辅助功能」中授权微信与脚本编辑器;
- 使用插件存在一定风险(涉及修改微信可执行文件),请自行评估后使用;本项目定位为提升日常使用体验,请勿用于商业及其他不当用途。
- 即时通讯
- 桌面应用
- 逆向工程
【免费下载链接】WeChatPlugin-MacOS
微信小助手
相关推荐
RevokeMsgPatcher微信防撤回实战指南:轻松拦截所有撤回消息
RevokeMsgPatcher微信防撤回实战指南:轻松拦截所有撤回消息 还在为错过重要信息而烦恼吗?RevokeMsgPatcher防撤回工具为你提供完美解决
桌面应用即时通讯微信小助手消息处理机制详解:从接收到防撤回的完整指南
微信小助手消息处理机制详解:从接收到防撤回的完整指南 微信小助手(WeChatPlugin MacOS)是一款功能强大的微信插件,专注于消息处理机制的优化与增强
即时通讯桌面应用逆向工程CANN/ops-nn量化更新散射算子
QuantUpdateScatter 产品支持情况 | 产品 | 是否支持 | | : | : : | | <term Ascend 950PR/Ascend
人工智能算子库深度学习CANNAscend
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考