news 2026/9/10 16:15:52

Wand-Enhancer 技术拆解:本地增强 Wand 客户端的 4 种实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Wand-Enhancer 技术拆解:本地增强 Wand 客户端的 4 种实战

Wand-Enhancer 技术拆解:本地增强 Wand 客户端的 4 种实战

【免费下载链接】Wand-EnhancerAdvanced UX and interoperability extension for Wand (WeMod) app项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer

Wand-Enhancer 是一款完全离线的桌面补丁器,通过改写 Wand(WeMod)客户端内部的应用包,解锁 Pro 状态、禁用更新、F12 调试、手机远程面板 4 类能力。适合想看懂并掌控自己客户端的开发者与进阶用户。

补丁流水线四步跑通:备份、解包、正则替换、回包

读完这一节你带走什么:补丁到底改了哪些文件、为什么工具能随时还原到原样。

入口在WandEnhancer/Core/Enhancer.csPatch()的主流程可以读作四步流水线:

// 简化版主流程(真实代码见 WandEnhancer/Core/Enhancer.cs) public void Patch() { Common.TryKillProcess(weModConfig.BrandName); // 关闭客户端,释放文件锁 File.Copy(_asarPath, _backupPath); // 首次运行生成 app.asar.backup AsarExtractor.ExtractAll(_asarPath, _unpackedPath); // 解包 asar PatchAsar(); // 正则匹配压缩 JS,替换目标函数 InjectRemotePanelFiles(); // 写入远程面板资产 new AsarCreator(_unpackedPath, _asarPath, opts).CreatePackageWithOptions(); // 回包 AttachProxyDll(); // 在安装目录放置 version.dll 代理 }

Asar 打包格式(Electron 把应用 JS 资源装进单个二进制包的格式)是关键:Wand 的前端全部位于resources/app.asar里的压缩 bundle。Wand-Enhancer 用自研的AsarSharp/AsarExtractor.csAsarSharp/AsarCreator.cs完成解包和回包,不依赖第三方命令行工具。

正则替换的核心在WandEnhancer/Core/EnhancerConfig.cs,每个补丁条目由四部分组成:

  • SearchHints:快速标记,先用子串命中文件,避免全文扫描
  • Target:正则,定位压缩 JS 中的精确函数
  • PatchFactory:按匹配结果动态生成替换代码
  • Resolver:处理压缩后this.#xxxx私有字段改名,从匹配里取出真实字段名

SingleMatch还承担哨兵职责:同一正则命中多处就立刻报"版本不支持",而不是硬改。目录定位逻辑在WandEnhancer/Utils/Extensions.cs:先扫%LOCALAPPDATA%下的 Wand / WeMod 品牌目录,按修改时间取app-*里最新的有效安装;找不到再从正在运行的进程反查 exe 路径。定位成功后主界面会显示路径与就绪状态,点 Patch 即执行上述流水线:

运行时关键:version.dll 代理 DLL 关闭 ASAR 完整性校验

读完这一节你带走什么:改过的 asar 为什么不会让 Wand 启动失败,以及全工具唯一的"运行时"修改发生在哪。

Electron 有一套叫Fuse(烧录在可执行文件里的安全开关数组)的机制,Wand 开启了 asar 完整性校验的 Fuse:一旦检测到app.asar被动过就拒绝正常工作。

Wand-Enhancer 的答案是tools/asar-fuses-bypass/这个 C 小工程:编译出一个叫version.dll的代理 DLL 放进安装根目录,让 Windows 优先加载它。它在library.c里把 16 个版本查询 API(如GetFileVersionInfoAVerQueryValueW)原样转发给系统真实的C:\Windows\System32\version.dll,同时在DllMain里做一件正事——在fuses.c中扫描主模块内存里的 32 字节 Fuse 哨兵,找到索引 4 的校验字节并翻转:

// tools/asar-fuses-bypass/fuses.c(节选) unsigned char* fuse = &wire->fuses[FUSE_ASAR_INTEGRITY_VALIDATION]; // 索引 4 VirtualProtect(fuse, 1, PAGE_READWRITE, &prot); *fuse = FUSE_STATE_REMOVED; // '1' -> 'r'(REMOVED) VirtualProtect(fuse, 1, prot, &prot);

这是纯内存修改,每次进程启动都会执行,不落盘、不改可执行文件本体,所以磁盘上的签名检查不受影响。主界面的恢复备份操作会同时删掉version.dll,让客户端彻底回到初始状态。

场景实战:F12 打开 DevTools,手机接入远程面板

读完这一节你带走什么:两条可复现的操作路径,分别对应调试客户端和手机远控两种诉求。

开发者:构建源码并用 F12 检查客户端

你是修改器工具开发者,想直接检查 Wand 的 DOM 与网络请求来验证接口假设。整个过程完全本地:

git clone https://gitcode.com/GitHub_Trending/we/Wand-Enhancer cd Wand-Enhancer build.cmd

🔧 前置依赖:CMake、Node.js + pnpm、Visual Studio 2022(含 MSBuild 与 C++ 工作负载)、.NET Framework 4.8 构建工具;按README.md说明,build.cmd会按顺序装依赖并构建整个解决方案。

构建完成后运行 Wand-Enhancer 产出的WandEnhancer.exe,路径未自动识别就手动浏览到安装目录,补丁弹窗里只勾选DevToolsOnF12。这个向量的锚点是 Electron 主进程的<app>.whenReady().then(调用处,给每个窗口挂before-input-event钩子;代码注释明确解释为什么不改渲染进程的按键监听——那个分发点的压缩标识符每次发版都变,主进程锚点则稳定。补丁完成后在 Wand 窗口按 F12 即可弹出 DevTools,之后客户端更新也不影响这个钩子。

进阶用户:用 Remote Web Panel 把修改器装进手机

你直播时想躺着调游戏参数。在补丁弹窗勾选RemoteWebPanelPreview并应用,工具会完成三件事:把web-panel/dist构建产物以remote-panel/写进包内、注入bridge.cjs桥接主进程启动链、把你的脚本拷入渲染进程。启动 Wand 后悬停顶栏 Connect 按钮,用手机扫 QR,浏览器里就是完整的修改器界面,端口固定3223

# 若自行修改了 web-panel 源码,先重新构建(桥接与默认脚本都出自这里) cd web-panel pnpm run build

想注入自己的 JS 时,把.js放进可执行文件旁的renderer-scripts/文件夹(也支持在补丁弹窗里直接选择文件)。脚本在 Wand 渲染进程内运行,拥有完整 DOM 访问权,且可能被加载多次,一次性初始化要用全局标志位包住,README.md里有完整的 hello.js 示例。

方案对比:4 个补丁向量该怎么勾

读完这一节你带走什么:按目标选向量组合,以及每个向量的维护代价差异。

补丁向量作用实现方式开启后状态版本更新成本
ActivatePro标记订阅为年付有效改写 4 个账户相关 JS 函数客户端显示 Pro高:新版需重推正则
DisableUpdates关闭更新检查替换ACTION_CHECK_FOR_UPDATE处理器不再提示更新
DevToolsOnF12F12 打开开发者工具主进程before-input-event钩子按 F12 即开低:主进程锚点稳定
RemoteWebPanelPreview注入手机远程面板 + 桥ASAR 改写 + 文件注入 +bridge.cjs手机可远控高:5 个补丁条目

怎么选:只想用干净客户端就勾 DisableUpdates;要研究内部就加 DevToolsOnF12;要手机远控必须开 RemoteWebPanelPreview(自定义脚本也依赖它)。

踩坑速查:补丁失败、文件被锁、面板打不开

读完这一节你带走什么:三个最高频报错的自诊路径。

⚠️报错 "Failed to apply patches: ... The version may not be supported"现象:日志列出某个向量名并提示版本不支持。根因:Wand 更新后压缩 JS 变了,EnhancerConfig.cs里的Target正则失配。解法:查看安装目录下版本号(形如app-10.x.0),等新版本适配;Wand-Enhancer 有意不做部分补丁——任一向量失配就整体报错,避免留下半改状态。AGENTS.md明确要求对着新版 bundle 重推正则,不要信任旧解包目录。

💡"Backup file is locked. Please close the WeMod and try again"现象:恢复备份点不动。根因:app.asar.backup被仍在运行的 Wand 进程占用。解法:彻底关闭 Wand 后再点一次;恢复操作会同步删除version.dll,客户端回到出厂状态。

⚠️手机扫了 QR 但页面打不开现象:浏览器一直转圈或超时。根因:不在同一局域网、路由器开启了客户端隔离,或 Windows 防火墙拦了3223。解法:确认同 Wi-Fi;在防火墙放行 TCP3223入站;若网络类型被标记为Public,改为Private

💡 附加提醒:不要手动删除app.asar.backup,主界面靠它判断"已补丁"并禁用补丁按钮,手动删掉后界面状态会错乱。

延伸阅读

  • WandEnhancer/Core/EnhancerConfig.cs — 全部补丁向量的正则与替换模板,理解"每个版本要改哪些函数"的入口
  • WandEnhancer/Core/Enhancer.cs — 备份、解包、打补丁、回包的完整实现,整个工具最好的一张地图
  • tools/asar-fuses-bypass/fuses.c — 如何在内存里定位 Electron Fuse 并翻转单个字节
  • web-panel/protocol/web-contract.json — 远程面板端口与协议版本的共享契约,动桥接代码前先读它
  • AGENTS.md — 项目的"流水线不变量"清单,写清了哪些改动被禁止、为什么

【免费下载链接】Wand-EnhancerAdvanced UX and interoperability extension for Wand (WeMod) app项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 16:13:16

CVAT 入门指南:LiDAR 点云标注与 3D 框怎么打

CVAT 入门指南&#xff1a;LiDAR 点云标注与 3D 框怎么打 【免费下载链接】cvat Computer Vision Annotation Tool (CVAT) is a leading platform for building high-quality visual datasets for vision AI. It offers open-source, cloud, and enterprise products, as well …

作者头像 李华
网站建设 2026/9/10 16:13:13

北京点众科技公司客服最新推出扣款热线服务退款指南!

在数字经济与游戏产业深度融合的浪潮中&#xff0c;游戏企业既是数字娱乐体验的创造者&#xff0c;更是合规运营与用户权益的守护者。游科技”&#xff09;自2020年9月成立以来&#xff0c;依托腾讯集团的资源优势&#xff0c;以游戏运营与服务为核心赛道&#xff0c;在多元产品…

作者头像 李华
网站建设 2026/9/10 16:12:59

VTK坐标系统与Picker机制深度解析

1. VTK Picker与坐标系统核心解析 在三维可视化开发中&#xff0c;精准的交互操作离不开坐标系统的精确定位。VTK作为经典的可视化工具库&#xff0c;其Picker机制和坐标转换体系构成了交互功能的基础设施。我曾在医疗影像导航系统开发中&#xff0c;花了整整两周时间解决一个由…

作者头像 李华