ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Wand-Enhancer:WeMod客户端本地增强深度实战手册

2026/9/5 16:01:15 拓冰建站 浏览量
Wand-Enhancer:WeMod客户端本地增强深度实战手册 Wand-EnhancerWeMod客户端本地增强深度实战手册【免费下载链接】Wand-EnhancerAdvanced UX and interoperability extension for Wand (WeMod) app项目地址: https://gitcode.com/GitHub_Trending/we/Wand-EnhancerWand-Enhancer 是一个完全开源的 WeMod现已更名 WandElectron 客户端本地增强工具。它解决的是客户端本地能力不可控的痛点Pro 功能、自动更新、开发者工具、手机远程面板全部在你自己的机器上配置完成。核心技术路径是 ASAR 解包 正则锚点补丁 渲染进程注入整个流程只做本地客户端配置增强全程零网络请求。主界面路径检测与补丁选项技术底座项目由什么构成模块速览模块一句话职责技术栈源码路径AsarSharpASAR 解包/重打包与完整性校验C# .NET Framework 4.8AsarSharp/WandEnhancer 主程序WPF 界面、路径检测、补丁编排C# WPFWandEnhancer/web-panel 桥接客户端内 WebSocket 服务端与状态同步TypeScript打包为单文件bridge.cjsweb-panel/bridge/web-panel 前端手机/平板上的远程面板界面React TS Vite Tailwindweb-panel/src/协议契约版本号、端口、消息结构的单一事实来源JSON TypeScriptweb-panel/protocol/技术栈分层桌面层WPF.NET Framework 4.8负责交互与流程编排直接复用 Windows 生态文件操作层自研 AsarSharp解析 ASAR 头部结构并处理app.asar.unpacked条目避免依赖外部 asar 工具注入层正则锚点替换 渲染进程脚本注入前者改写主进程启动与 trainer 回调后者承载用户自定义逻辑桥接层TypeScript 源码经构建产出压缩后的bridge.cjs嵌入 asar 后跑在 Electron 主进程里远程面板层生产构建中 React 导入被解析为 Preact 别名刻意压小体积因为它会被整体打进app.asar构建工具链CMake原生辅助库 MSBuildWPF 工程 pnpmWeb 面板build.cmd一键串起Wand-Enhancer/ ├── AsarSharp/ # ASAR 解包/打包/完整性校验 │ └── AsarFileSystem/ # 文件头部解析与读写 ├── WandEnhancer/ # WPF 主程序 │ ├── Core/ # 补丁编排 Enhancer / EnhancerConfig │ ├── Models/ # EPatchType 枚举与 PatchConfig │ └── View/ # 主窗口与补丁对话框 ├── web-panel/ # 远程 Web 面板 │ ├── bridge/ # 客户端内桥接TS 源码 │ ├── protocol/ # 共享协议契约 │ └── src/ # 面板 UIReact/TS └── tools/ └── asar-fuses-bypass/ # CMake 原生辅助库核心机制它到底怎么跑起来的ASAR 补丁流水线WeMod 客户端的核心资源打在一个叫app.asar的归档里可以理解为带目录头的压缩包。这个工具的思路很直接先整包备份再把 asar 解开成普通文件夹找到里面的压缩minify过的 JS 文件做文本级修改最后重新打包回去。难点在于客户端更新频繁压缩代码里的变量名每版都会变。因此补丁从不硬编码变量名而是先用一段稳定的锚点文本比如whenReady().then(定位函数体再用正则命名组从匹配结果里把真实的私有字段名抠出来填回补丁模板。WandEnhancer/Core/EnhancerConfig.cs 里每一条补丁都由「正则 替换文本 可选的动态解析器」三部分组成。// 补丁应用主干Enhancer.PatchAsar 简化 foreach (var file in candidateBundles) // 只扫 index.js 与 app-*.bundle.js { var data File.ReadAllText(file); // 读入压缩 JS foreach (var entry in pendingPatches) { var match entry.Target.Match(data); // 正则锚点未命中则跳过 if (!match.Success) continue; var patch entry.PatchFactory ! null ? entry.PatchFactory(match) // 用捕获组生成替换文本 : entry.Patch; data entry.Target.Replace(data, patch); // 原位替换 entry.Applied true; } if (changed) File.WriteAllText(file, data); // 只回写发生变化的文件 } if (pendingPatches.Count 0) throw new Exception(version may not be supported);执行链路备份app.asar与 unpacked 目录为.backup解包 ASAR跳过锁定与缺失的条目按文件名过滤出候选 bundle逐条正则匹配、原位替换重打包失败项汇总为明确报错远程面板如何植入客户端补丁器往客户端里放了两类东西一份是bridge.cjs挂在 Electron 主进程的启动钩子上负责起一个监听 TCP 3223 的 WebSocket 服务另一份是若干默认渲染脚本通过改写的setCurrentTrainer等方法把 trainer 的状态变化游戏版本、作弊器取值、启动/退出事件转发给桥接层。手机端的浏览器只是消费这个本地服务的普通网页。注入主进程的那段补丁本质是在原始启动调用前插入一次模块加载// 注入到 Electron 主进程 index.js简化 app.whenReady().then(() { try { const p require(node:path); require(p.join(__dirname, remote-panel, bridge.cjs)) .installWandRuntime(require(electron)); // 启动面板服务端口 3223 } catch (e) { // 启动失败时把堆栈追加写入临时目录日志 } return run(); // 继续原始启动流程 });执行链路把web-panel/dist以remote-panel/写入 asar改写主进程启动钩子加载bridge.cjs在渲染进程绑定 trainer 状态回调3223 端口起 WebSocket 服务手机扫二维码访问本机地址两种扩展方式的取舍方案原理一句话适合谁代价内置正则锚点补丁用稳定锚点在压缩代码里定位函数并整体替换只想要现成功能的人客户端改版可能失配需跟进补丁器更新自定义渲染脚本注入你的.js直接跑在客户端渲染进程拥有完整 DOM想自己魔改界面/行为的人需自查质量且要处理重复执行的幂等性5分钟上手从零到跑通前置检查依赖最低版本用途CMake3.x编译原生辅助库asar-fuses-bypassNode.js pnpm18构建 Web 面板与桥接VS 2022 Build ToolsMSBuild2022编译 WPF 解决方案.NET Framework 4.8 目标包4.8主程序编译与运行Windows 10/11—WPF 运行环境且需已安装 WeMod/Wand构建与安装项目官方不发布预编译 exe标准做法是从自己的 fork 触发 CI 构建本地构建则一条命令串完所有环节# 克隆仓库 git clone https://gitcode.com/GitHub_Trending/we/Wand-Enhancer cd Wand-Enhancer # 一键构建装面板依赖、编译前端、CMake 原生库、NuGet 还原、MSBuild 编译 build.cmd # 单独验证 Web 面板构建是否健康 cd web-panel pnpm install pnpm run build成功标志build.cmd结束且无报错web-panel/dist/下出现bridge.cjs和renderer-scripts/目录node --check web-panel/dist/bridge.cjs无语法错误。首次配置运行WandEnhancer.exe工具自动探测 WeMod 安装路径 → 界面显示app-x.x.x路径探测失败时先启动一次 WeMod 再重试或手动指定AppData\Local\WeMod下的版本目录 → 校验通过打开补丁对话框勾选需要的功能项 → 补丁清单刷新点击应用补丁 → 生成.backup备份日志逐条打印Patch applied功能启用功能开关对应 WandEnhancer/Models/PatchConfig.cs 中的[Flags]枚举EPatchType全部默认关闭按需勾选补丁项作用默认ActivatePro在本地账户响应中注入「年付、激活中」订阅状态关DisableUpdates让「检查更新」处理器返回空客户端不再自动升级关DevToolsOnF12F12 从主进程直接开关 DevTools关RemoteWebPanelPreview嵌入远程面板与桥接启用后脚本注入才可用关DisableTelemetry枚举中保留的历史值补丁选项已随版本移除关进阶玩法扩展与二次开发自定义脚本注入复用远程面板的渲染进程注入通道把自己的.js打进客户端。添加方式二选一在补丁对话框中直接选择文件或把脚本放进与WandEnhancer.exe同级的renderer-scripts/目录。⚠️ 依赖RemoteWebPanelPreview补丁处于启用状态。最小可运行示例hello.js12 行// hello.js —— 放入 renderer-scripts/ 或在补丁对话框中选择 if (!globalThis.__helloScriptInstalled) { // 每次启动可能执行多次必须幂等 globalThis.__helloScriptInstalled true; WandEnhancer.log(Hello from my custom script!, WandEnhancer.remoteUrl); new MutationObserver(() { const dialog document.querySelector(ux-dialog:not([data-seen])); if (dialog) { dialog.setAttribute(data-seen, 1); WandEnhancer.log(A dialog opened.); // 预期输出弹窗打开时记录一条日志 } }).observe(document.documentElement, { childList: true, subtree: true }); }触发方式照常打补丁并重启客户端。预期输出启动时打印欢迎日志之后任何ux-dialog弹窗打开都会记录一条。脚本拥有与客户端相同的权限且每段代码都被包了错误捕获——抛错只记日志、不会带崩客户端。工具还提供WandEnhancer.log、WandEnhancer.remoteUrl、WandEnhancer.apiVersion三个助手。远程面板通信链路面板跑在 PC 本机手机通过局域网访问「IPC」是 Electron 内置的进程间调用机制ipcRenderer.invoke用于渲染进程与主进程传话手机浏览器 ── WebSocketTCP 3223──▶ 本机面板服务 │ ▼ bridge.cjs主进程端口常駐 │ IPCwand-remote-sync / wand-remote-set-value ▼ 客户端渲染进程trainer 状态与取值数据流是双向的状态快照游戏、trainer、作弊器取值自下而上推给手机手机端的 Play/Stop 与滑杆改动经remote_command等消息自上而下落到 trainer 服务。踩坑实录高频问题与排障现象最可能原因30秒解决法长期预防报「WeMod directory not found」非默认安装路径或品牌目录改名先启动一次 WeMod 再让工具从进程反查路径保持默认目录勿手动挪动补丁失败version may not be supported客户端改版压缩代码变量名变化导致锚点失配升级补丁器到最新版重新打补丁WeMod 更新后立即同步补丁器更新Pro 状态隔几天回退成 Free客户端后台刷新账户数据覆盖了补丁结果重新打补丁使用含 reducer 守卫的新版补丁手机页面加载不出来路由器开启 AP 隔离或防火墙拦 3223防火墙放行局域网 TCP 3223网络类型设为专用换网络前先检查隔离开关打完补丁客户端无法启动早期版本禁用更新补丁曾引入语法错误已修复用app.asar.backup还原保留备份文件并定期核对体积版本兼容方面项目紧跟最新 Wand 发布节奏锚点设计为「从匹配结果动态解析内部名称」多数小版本升级无需改代码即可打上遇到未知大版本打补丁会给出明确失败项而非静默跳过——此时还原备份、等一条 changelog 确认再打比反复试错更稳。社区资源CONTRIBUTING.md、CHANGELOG.md、AGENTS.md生产注意事项性能与安全性能搜索提示词预筛ApplyJsPatch先用SearchHints字符串判断文件是否值得读省掉对无关 bundle 做正则全扫只回写变化文件以fileChanged标记门控磁盘写入避免无效 IO 与文件锁争用面板零冗余打包生产构建禁止 sourcemap、本地字体、mock 数据面板每重 1MBasar 重打包就慢一分移动端禁用列表内模糊抽屉与行级backdrop-filter被刻意关闭减少滚动时的 GPU 负担与重渲染安全代码完全开源可审计补丁与注入过程零网络请求打补丁前自动备份 asar 及 unpacked 目录官方不提供 exe防第三方换包建议建议你始终从自己的 fork 构建可执行文件第三方来源的 exe 已有投毒先例建议你打补丁前确认备份文件完整WeMod 大版本更新后优先还原再重打建议你远程面板连不上时先核对 3223 端口与网络类型再怀疑软件本身项目动态与参与路径锚点补丁持续跟随客户端版本漂移远程面板新增多语言与预设/置顶作弊发布构建已引入代码签名面板内部按功能能力域重构如果你想研究「如何在压缩过的 Electron 应用里做可维护的文本级修改」这个项目的正则锚点 渲染注入方案是一个能完整读到底的样本。【免费下载链接】Wand-EnhancerAdvanced UX and interoperability extension for Wand (WeMod) app项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考