尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

WeChatPlugin-MacOS 微信小助手完全指南:功能清单、安装使用与插件注入原理

WeChatPlugin-MacOS 微信小助手完全指南:功能清单、安装使用与插件注入原理 即时通讯桌面应用逆向工程【免费下载链接】WeChatPlugin-MacOS微信小助手项目地址https://gitcode.com/gh_mirrors/we/WeChatPlugin-MacOS点击查看免费下载微信小助手WeChatPlugin-MacOS是一款面向 macOS 微信客户端的增强插件通过动态注入 framework 与 Objective-C runtime 方法交换为微信补上消息防撤回、自动回复、远程控制、多开、免认证登录等大量实用能力。本文以仓库 README.md 为主线结合 Install.md、CHANGELOG.md 以及插件源码系统梳理功能全景、快捷键与配置规则、远程控制指令表、安装/卸载/源码重编译流程并深入讲解插件注入与 Hook 的底层实现帮助你既会“用”也看得懂“原理”。一、项目定位与功能全景微信小助手当前版本 v2.0运行于 macOS 平台最新适配微信3.7.0对应 v2.02023-03-12 发布历史版本 v1.7.5 适配微信2.3.22。插件安装后以“微信小助手”菜单栏形式存在于微信顶部菜单中所有功能均可通过菜单或快捷键开关控制。仓库同时提供英文说明 README_EN.md并支持国际化简体中文 / 繁体中文 / English。1.1 完整功能清单根据 README.md 的功能章节插件涵盖以下能力消息自动回复支持关键字匹配、正则、延迟回复、指定联系人回复消息防撤回拦截撤回消息并提示撤回者昵称与消息类型远程控制已支持语音通过给自己账号发指令控制 Mac微信多开同时登录多个微信账号第二次登录免认证autoAuth相关逻辑被 Hook简化重复登录聊天置底功能类似置顶的逆向操作微信窗口置顶会话多选删除自动登录开关通知中心快捷回复聊天窗口表情包复制 存储小助手检测更新提醒会话一键已读一键清除空会话一键更新、关于小助手去除微信 URL 转链可直接打开抖音等链接菜单栏新增 alfred 开关、是否使用微信自带浏览器开关、禁止微信检测更新开关非 App Store 版本退群监控、撤回消息定位v2.0 新增Alfred / LaunchBar 快捷扩展需额外安装 alfred workflow若无使用 alfred则不必打开 alfred 开关。1.2 远程控制能力屏幕保护清空废纸篓锁屏、休眠、关机、重启退出 QQ、WeChat、Chrome、Safari、所有程序网易云音乐播放、暂停、下一首、上一首、喜欢、取消喜欢小助手获取指令、防撤回开关、自动回复开关、免认证登录开关使用远程控制网易云音乐前需要在“系统偏好设置 → 安全性与隐私 → 隐私 → 辅助功能”中添加微信与脚本编辑器。二、核心功能使用详解README 的使用章节给出了每项核心功能的开关方式与快捷键汇总如下功能触发方式消息防撤回菜单点击“开启消息防撤回”或快捷键command t自动回复菜单点击“开启自动回复”或快捷键command k微信多开菜单点击“登录新微信”或快捷键command shift n远程控制 Mac OS菜单点击“远程控制 Mac OS”或快捷键command shift c2.1 消息防撤回点击“开启消息防撤回”或按command t即可开启/关闭。底层实现上插件 Hook 了微信消息服务类FFProcessReqsvrZZ的撤回消息处理方法与消息同步方法拦截撤回事件后把被撤回内容重新展示出来并附带撤回人昵称与消息类型提醒见 WeChathook.m 与 CHANGELOG 中 v1.5.1 “优化防撤回提醒显示撤回人昵称 消息类型”的记录。2.2 自动回复关键字规则详解点击“开启自动回复”或按command k会弹出自动回复设置窗口通过开关按钮控制每条回复规则是否生效。自动回复的关键字匹配规则README 原文语义务必完整掌握若关键字为*则任何信息都会回复若关键字为x|y则关键字为 x或y 的消息都会回复若关键字或者自动回复内容为空则不开启该条自动回复可设置延迟回复单位为秒若开启正则请确认正则表达式书写正确若开启特定联系人回复则原先的群聊 私聊回复无效。这些规则与数据模型一一对应。查看 TKAutoReplyModel.h每条自动回复包含enable开关、keyword关键字、replyContent回复内容、enableGroupReply群聊回复开关、enableSingleReply私聊回复开关、enableRegex正则开关、enableDelay延迟开关、delayTime延迟秒数、enableSpecificReply指定联系人回复开关、specificContacts指定联系人列表并提供hasEmptyKeywordOrReplyContent方法用于判定“关键字或回复内容为空则规则不生效”。v1.7 版本还支持不同账号分别设置不同的自动回复配置。2.3 微信多开点击“登录新微信”或按command shift n即可开启第二个微信实例。实现上插件 Hook 了CUtility类的HasWechatInstance2.3.22 之后方法名有所变化源码中通过LargerOrEqualVersion做了版本兼容解除“只能运行一个微信实例”的限制见 WeChathook.m。2.4 远程控制 Mac OS点击“远程控制 Mac OS”或按command shift c打开远程控制窗口即可查看与配置全部指令。注意仅向自己账号发送指令有效。指令支持文本与语音两种触发方式语音控制需配合麦克风转写下一节给出完整指令表。2.5 其他高频功能通知中心快捷回复微信收到消息后可直接在通知中心进行快捷回复演示见 notification_quick_reply.gif聊天窗口表情包复制 存储可在聊天窗口复制/导出表情见 emotion_copy_export.png一键已读 一键清除空会话演示见 session_empty_and_clean.gifAlfred 扩展支持快捷发送消息、打开窗口、搜索最近聊天列表、查看聊天记录演示见 alfred_search.gif 与 alfred_chat_log.gif需配合 wechat-alfred-workflow 使用语音远程控制演示见 voice_remote_control.gif。三、远程控制指令表源码级远程控制指令并非硬编码在逻辑里而是集中存放在 plist 配置 TKRemoteControlCommands.plist 中每条指令包含keyword触发关键字、executeCommand执行内容、function功能标识用于本地化回执、enable开关、type执行类型。根据 TKRemoteControlModel.h类型枚举为1 Shell 直接执行命令、2 AppleScript 脚本通过osascript调用 TKRemoteControlScript.scpt、3 插件内部直接执行。3.1 系统控制组关键字功能type执行内容ScreenSave开启屏幕保护1 (Shell)open ScreenSaverEngine.appLockScreen锁屏1 (Shell)CGSession -suspendSleep休眠2 (AppleScript)sleepShutdown关机2 (AppleScript)shutdownRestart重启2 (AppleScript)restartEmptyTrash清空废纸篓2 (AppleScript)emptyMute静音2 (AppleScript)mute3.2 退出应用组关键字功能type执行内容KillQQ退出 QQ2killQQkillWeChat退出微信2killWeChatKillChrome退出 Chrome2killChromeKillSafari退出 Safari2killSafarikillFirefox退出 Firefox2killFirefoxKillAll退出所有程序2killAll3.3 网易云音乐组关键字功能type执行内容Toggle播放/暂停2musicToggleNext下一首2musicNextPrevious上一首2musicPreviousVolumeUp音量加2musicVolumeUpVolumeDown音量减2musicVolumeDownLikeChange喜欢/取消喜欢2musicLike3.4 小助手开关组type 3插件内直接执行关键字功能typegetDirective获取指令列表3PreventRevokeSwitch切换防撤回开关3AutoReplySwitch切换自动回复开关3AutoAuthSwitch切换免认证登录开关33.5 匹配规则在 TKRemoteControlManager.m 中可以看到触发逻辑文本指令要求消息与keyword完全相等语音指令只要转写文本包含关键字或对应功能名本地化字符串即触发。v2.0 移除的“标记未读”等官方已支持功能不再列入指令表。四、安装与卸载4.1 快速安装命令行一键前提需要已安装 Git。打开“应用程序 → 实用工具 → Terminal终端”执行cd ~/Downloads rm -rf WeChatPlugin-MacOS git clone https://gitcode.com/gh_mirrors/we/WeChatPlugin-MacOS.git --depth1 ./WeChatPlugin-MacOS/Other/Install.sh若提示无权限Permission denied先执行sudo chmod -R 777 /Applications/WeChat.app后再安装。4.2 普通安装点击clone or download按钮下载 WeChatPlugin 并解压打开 Terminal终端将解压后Other文件夹中的 Install.sh 文件直接拖入终端回车即可。4.3 安装完成验证重启微信在菜单栏中看到“微信小助手”即安装成功见本文首图。仓库内 Install.md 还提供“懒癌版安装升级”方案使用 Oh My WeChat 工具运行omw即可以及基于截图的分步图文流程。4.4 从源码重新编译需要 CocoaPods若想修改源码并重新编译例如适配新版微信按 Install.md 的步骤操作先更改微信的 owner 以获取写入微信文件夹的权限否则会出现Permission denied类错误sudo chown -R $(whoami) /Applications/WeChat.app下载 WeChatPlugin 源码执行Pod install项目根目录包含 Podfile编译源码版需要 CocoaPods 拉取第三方依赖用 Xcode 打开工程编辑 Scheme在Debug 模式下启动 WeChat之后 Runcommand R即可启动微信此时插件注入完成若报错找不到 Framework先执行 Build若仍需配置环境可参考作者博客中的 macOS 逆向环境搭建文章。4.5 卸载打开 Terminal终端将解压后 Uninstall.sh 文件拖入终端回车即可。脚本会校验微信安装路径兼容WeChat.app与微信.app两种命名删除被注入的可执行文件与WeChatPlugin.framework并将备份的WeChat_backup还原为WeChat。4.6 安装脚本原理源码级查看 Install.sh其核心流程如下定位微信默认/Applications/WeChat.app不存在则尝试/Applications/微信.app授权若微信目录不可写则通过sudo chown -R $(whoami)获取写入权限首次安装会提示输入密码备份将原始可执行文件WeChat备份为WeChat_backup若已存在备份且未加--force参数则交互询问是否覆盖注入复制Other/Products/Debug/WeChatPlugin.framework到微信Contents/MacOS目录并使用仓库自带工具 insert_dylib 以--all-yes参数将动态库注入微信可执行文件。卸载脚本则执行逆操作删除注入后的WeChat与WeChatPlugin.framework把WeChat_backup改名还原实现“可逆安装”。五、插件注入与运行原理源码级5.1 入口与注入时机插件的动态库入口是 main.mm 中定义的__attribute__((constructor))函数。得益于constructor属性动态库被insert_dylib注入微信进程后、main执行之前initialize()即被自动调用随后依次执行四个 Hook 安装方法static void __attribute__((constructor)) initialize(void) { NSLog( WeChatPlugin loaded ); [NSObject hookWeChat]; [NSObject hookMMChatsTableCellView]; [NSObject hookMMStickerMessageCellView]; [NSObject hookMMStickerPickerCell]; }其中hookWeChat是核心hookMMChatsTableCellView会话列表多选删除、hookMMStickerMessageCellView/hookMMStickerPickerCell表情包复制与存储分别负责各自的 UI 增强。5.2 Hook 机制Runtime 方法交换 fishhook在 WeChathook.m 的hookWeChat中可以看到两类底层手段Objective-C Runtime 方法交换tk_hookMethod/tk_hookClassMethod对微信内部类的方法进行 swizzling例如FFProcessReqsvrZZ撤回消息、消息同步OnSyncBatchAddMsgs:2.3.22 后方法名变化源码用LargerOrEqualVersion做版本适配CUtility微信多开HasWechatInstanceNSWindow窗口置顶makeKeyAndOrderFront:AccountService登录逻辑/免认证onAuthOKOfUser:...MMURLHandler是否使用系统浏览器打开链接、去除 URL 转链UserDefaultsService禁止微信检测更新MMVoiceTranslateMgr语音转写回调用于语音远程控制GroupStorageMMSystemMessageCellView退群监控、撤回消息定位MMChatMessageViewController/MMSessionMgr标记未读与未读数更新。C 函数符号重绑定fishhook插件引用了仓库内置的 fishhook.c通过rebind_symbols重绑定NSSearchPathForDirectoriesInDomains与NSHomeDirectory两个 C 函数把沙盒路径重定向到插件自己的目录从而避免微信把临时数据如 MMappedKV、JietuSDKStat.plist写入~/Documents——这与 CHANGELOG v1.2.0“修复聊天记录消失 ~/Documents生成 MMappedKV、JietuSDKStat.plist 文件”的修复记录吻合。5.3 配置存储与数据模型所有功能开关统一由单例 TKWeChatPluginConfig.h 管理包括防撤回、自动回复、免认证、自动登录、窗口置顶、多选、禁止检测版本、alfred、系统浏览器、退群监控等布尔开关以及自动回复模型数组、远程控制模型数组、置底会话数组等并通过saveAutoReplyModels/saveRemoteControlModels等方法持久化到本地保证“更新后保留相关设置”对应 TODO 中已完成的优化项。自动回复与远程控制的配置模型分别见 TKAutoReplyModel.h 与 TKRemoteControlModel.h。5.4 远程控制的执行链路远程控制的完整链路位于 TKRemoteControlManager.m收到自己的消息文本或语音转写结果后遍历remoteControlModels匹配关键字命中后按type分发Shell 命令通过NSTask启动/bin/bash -c cmd执行并读取 stderr 管道返回结果AppleScript拼装osascript /Applications/WeChat.app/Contents/MacOS/WeChatPlugin.framework/Resources/TKRemoteControlScript.scpt 指令执行脚本 TKRemoteControlScript.scpt 随 framework 一起打包进 Resources 目录KillAll类指令因部分程序首次无法关闭会在 1 秒后再次执行插件指令直接在进程内切换防撤回、自动回复、免认证等配置开关执行完毕后通过TKMessageManager向自己账号发送本地化回执如“已锁屏”并清除未读标记。六、版本演进与更新日志仓库根目录的 CHANGELOG.md 记录了完整版本脉络代表性里程碑如下版本时间要点v2.02023-03-12适配微信 3.7.0新增撤回消息定位、群聊监控移除官方已支持的功能自动登录、移除会话、标为未读等v1.7.52019-01-13适配微信 2.3.22新增禁止微信检测更新开关优化 XML 解析v1.7.32018-10-23适配 2.3.19菜单栏新增 alfred 开关自带浏览器浏览开关v1.72018-05-12不同账号独立配置自动回复总开关与指定联系人远程控制小助手配置一键已读、清除空会话国际化一键更新去除微信 URL 转链v1.5.x2018-02/03语音远程控制通知中心快捷回复表情包复制存储自动回复延迟防撤回提醒优化v1.1.02017-08-23重构自动回复支持多回复七、已知边界、依赖与使用注意7.1 规划中的能力TODOREADME 的 TODO 章节展示了项目的演进方向其中已完成的有 Alfred 搜索、指定好友回复、防撤回显示昵称、语音远程控制、中英文支持、设置保留与更新提醒等尚未完成/已标注的包括查看单向好友、增加 brew 安装方式、支持深色模式清除微信缓存因官方已支持而标记为完成。7.2 依赖清单insert_dylib用于把动态库注入微信可执行文件安装脚本直接调用fishhook.c / fishhook.hFacebook 的 C 函数符号重绑定库内置在仓库 Vendor 目录GCDWebServerHTTP 服务依赖源码编译版通过 Podfile 引入。7.3 免责声明与使用注意README 明确提示使用插件有风险使用需谨慎本项目旨在提升生活幸福感使用不可用于商业和个人其他意图若使用不当请使用者自行承担。插件的能力受微信版本影响较大适配范围以 README 标注的微信版本当前 v2.0 对应 3.7.0为准若后续微信升级导致 Hook 失效可通过“从源码重新编译”的方式自行适配。赞分享即时通讯桌面应用逆向工程【免费下载链接】WeChatPlugin-MacOS微信小助手项目地址https://gitcode.com/gh_mirrors/we/WeChatPlugin-MacOS点击查看免费下载相关推荐WeChatPlugin-MacOS微信小助手完整使用指南WeChatPlugin MacOS是一款功能强大的macOS微信插件为微信客户端提供了众多实用功能扩展。本指南将详细介绍该插件的安装、配置和使用方法帮助用即时通讯桌面应用逆向工程WeChatPlugin-MacOS微信小助手完整使用指南WeChatPlugin MacOS微信小助手完整使用指南 WeChatPlugin MacOS是一款专为macOS平台设计的微信增强插件通过集成多种实用功能即时通讯桌面应用逆向工程WeChatPlugin-MacOS 微信插件安装与使用指南WeChatPlugin MacOS 微信插件安装与使用指南 项目概述 WeChatPlugin MacOS 是一款针对 macOS 平台微信客户端的增强插件即时通讯桌面应用逆向工程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表