Wand-Enhancer 完整上手:3 步构建免费的 WeMod 本地增强工具
【免费下载链接】Wand-EnhancerAdvanced UX and interoperability extension for Wand (WeMod) app项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer
Wand-Enhancer 是一款开源的 WeMod(Wand)桌面客户端增强工具,基于 C# WPF 实现,能把 Pro 激活、禁用更新、F12 开发者工具、手机远程控制 Web 面板这些功能直接打进本地客户端。全程本地运行、零网络请求,所有改动都发生在你的机器上。
项目速览:它做的是把 WeMod 客户端的本地配置和界面行为改得更顺手;服务对象是想摆脱 Pro 订阅限制、或者习惯用手机远程操作 trainer 的 WeMod 用户;核心差异点是改动全程本地化、代码完全开源可审计,官方不发布任何预编译二进制,你必须自己构建。
仓库结构速览:
Wand-Enhancer/ ├── AsarSharp/ # ASAR 解包与重新打包核心库 ├── WandEnhancer/ # WPF 主应用:补丁管线与界面 ├── web-panel/ # 远程 Web 面板前端(React + TypeScript)与 IPC 桥 ├── tools/asar-fuses-bypass/ # ASAR fuses 校验绕过(CMake 原生组件) ├── scripts/ # 发布辅助脚本 └── build.cmd # 一键构建入口从零搭建——环境准备与构建
构建环境要求:
- CMake 3.20+
- Node.js 18+(前端构建)
- pnpm(前端包管理器)
- Visual Studio 2022 或 Build Tools,带"使用 C++ 的桌面开发"工作负载和 MSBuild
- .NET Framework 4.8 桌面开发组件
最简构建路径,Windows 下三条命令:
git clone https://gitcode.com/GitHub_Trending/we/Wand-Enhancer cd Wand-Enhancer build.cmdbuild.cmd会按顺序安装前端依赖、构建 web-panel、用 CMake 编译原生组件、还原 NuGet 包,最后 MSBuild 编译 Wand-Enhancer.sln。产物WandEnhancer.exe在输出目录里。注意:官方 Release 只有发布说明、没有 exe,网上任何带 exe 的"官方包"都不是这个项目发布的。
功能全景与配置实操
补丁应用主流程:运行 exe 后工具自动定位 WeMod 安装目录(默认路径之外装的话,还能从正在运行的 Wand 进程反查),找不到就手动填C:\Users\<用户名>\AppData\Local\WeMod\app-<版本号>。点 Apply 后它会先备份,再打补丁、重新打包,任何一步正则匹配不上就整体中止,不会留下半改状态。
四个基础补丁:在补丁对话框里按需求勾选,互不依赖、可任意组合:
| 补丁 | 作用 | 启用方式 | 注意事项 |
|---|---|---|---|
| Activate Pro | 客户端按 Pro 账号运行 | 勾选后打补丁 | 本地改账号数据,不绕过服务端验证 |
| Disable Updates | 关掉自动更新 | 勾选后打补丁 | 客户端大版本更新后需重跑补丁 |
| Disable Telemetry | 关闭遥测上报 | 勾选后打补丁 | 无额外依赖 |
| DevToolsOnF12 | F12 打开开发者工具 | 勾选后打补丁 | 挂在 Electron 主进程事件上,跨版本稳定 |
补丁管线的实现定义在 EnhancerConfig.cs,界面和路径检测逻辑在 WandEnhancer/ 里。
远程 Web 面板:勾选Remote Web Panel补丁后,面板前端会被打进客户端。PC 和手机连同一 Wi-Fi,鼠标悬停在 WandEnhancer 顶栏 Connect 按钮上,用手机扫二维码即可打开。面板里能看"我的游戏"列表、远程启动/停止 trainer、调 cheat 数值,还支持按游戏固定常用项和保存预设。注意两点:面板走 WebSocket,端口是 PC 的 3223,跨网段要用 Tailscale 这类组网工具;该补丁会顺带禁用 Wand 自带"手机配对"激活流程,否则会触发服务端登出、把桌面端踢下线。
核心机制拆解(给想懂原理的人)
Wand 是 Electron 应用,全部 JS 代码打在一个叫app.asar的归档文件里(ASAR 可以理解成带文件清单头的压缩包)。打补丁的完整链路是:把app.asar备份成app.asar.backup(未打包的app.asar.unpacked目录同样备份)→ 用 AsarSharp 解包 → 对解出的压缩 JS bundle 逐条应用"正则补丁" → 重新打包写回。
每条补丁就是一个PatchEntry:Target正则负责定位,SearchHints是一组特征片段,先确认文件包含它们才允许尝试匹配,防止版本不对时误改;命中后做替换,并在文件里留下[ENHANCER]标记方便回滚排查。核心逻辑大概长这样:
if (!ContainsSearchHint(js, patch.SearchHints)) return js; var match = patch.Target.Match(js); if (!match.Success) return js; if (patch.SingleMatch && match.NextMatch().Success) throw new Exception("Multiple targets: version not supported"); // 用 patch.Patch(或 PatchFactory 动态生成)替换命中片段以 Pro 激活为例,思路很直白:客户端每次拿到账号数据时会检查subscription字段,补丁就在返回链路里把"年度订阅、状态有效"的字段注入进去——桌面端本地认为你是 Pro,功能自然解锁。这也是为什么 Wand 升级后偶尔要重新打:压缩后的函数名变了,正则得对着新版本重新对齐,项目靠SearchHints+ 动态解析内部标识名来尽量扛住这种变化。
自定义与二次开发
除了内置补丁,Wand-Enhancer 提供脚本注入通道:打补丁时把你的 JavaScript 文件一并打进客户端,在 Wand 的渲染进程里执行,有完整 DOM 访问权限和 Node 的require。前提是启用远程 Web 面板补丁,脚本复用的是同一套注入通道。
放脚本有两个位置:补丁对话框里逐个添加.js文件(只接受已存在的.js),或放进 exe 同级的renderer-scripts/目录自动带入。每个脚本都被 try/catch 包裹,报错只记日志、不会弄崩 Wand;但同一次启动脚本可能执行不止一次,所以一次性初始化要加全局标志。最小示例:
// 放到 exe 同级 renderer-scripts/ 目录 if (!globalThis.__myScript) { globalThis.__myScript = true; WandEnhancer.log("my script loaded", WandEnhancer.remoteUrl); new MutationObserver(() => { const d = document.querySelector("ux-dialog:not([data-seen])"); if (d) { d.setAttribute("data-seen", "1"); WandEnhancer.log("dialog opened"); } }).observe(document.documentElement, { childList: true, subtree: true }); }内置默认脚本在 web-panel/bridge/scripts/default/,构建时会被压缩进产物,可以对着它们理解脚本能拿到什么上下文。
踩坑指南——高频问题速查
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 手机打不开面板页面 | PC 和手机不在同一局域网,或路由器开了 AP 隔离 | 确认同网段;关闭 AP 隔离;仍不行则允许 3223 端口入站 |
| 面板一直连不上 | Windows 防火墙拦截 3223 端口 | 防火墙规则允许 TCP 3223 入站 |
| 补丁报"version not supported" | Wand 升级后 JS 结构变化,正则失配 | 更新 Wand-Enhancer 到最新版重新打补丁 |
| 提示"WeMod directory not found" | WeMod 装在非默认路径 | 手动填AppData\Local\WeMod\app-<版本号>路径 |
| Defender/SmartScreen 警告自构建产物 | 自编译 exe 未签名、少见 | 正常现象;核验构建日志,只运行自己构建的二进制 |
| 打补丁后 Wand 启动异常 | 补丁未成功或中途失败 | 用app.asar.backup/app.asar.unpacked.backup恢复原样 |
两条预防建议:每次打补丁前确认日志里所有条目都显示 "Patch applied" 再启动客户端;Wand 每次大版本更新后先升级 Wand-Enhancer 再应用补丁,顺序反了更容易遇到正则失配。
安全边界与使用提醒
数据流向:补丁管线本身零网络请求,全部操作发生在本地文件上;唯一的"网络"是远程 Web 面板,它只在你局域网内由 PC 提供 HTTP/WebSocket 服务,不经过任何第三方。权限范围:改动仅限于客户端本地配置与界面行为,项目不绕过服务端验证、不分发他人专有代码。备份回滚:app.asar和app.asar.unpacked都会在改动前自动备份,出问题直接恢复备份文件即可。
- 自定义脚本权限等同客户端本身,只运行你信任并能读懂的脚本
- 不要从任何第三方渠道下载 exe,官方仓库不发布可执行文件
- 每次 Wand 更新后检查 更新日志 确认当前版本是否已适配
Wand-Enhancer 的价值在于把 WeMod 客户端的本地增强做成了一条可审计、可回滚的补丁管线,理解PatchEntry之后,你甚至可以针对新客户端版本自己扩展补丁。社区资源:开发文档见 AGENTS.md,参与贡献看 CONTRIBUTING.md,远程面板协议定义在 web-panel/protocol/,许可为 Apache-2.0,见 LICENSE.md。
【免费下载链接】Wand-EnhancerAdvanced UX and interoperability extension for Wand (WeMod) app项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考