news 2026/9/27 10:16:50

Wand-Enhancer指南:三步把Wand(WeMod)变成手机可控的本地增强工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Wand-Enhancer指南:三步把Wand(WeMod)变成手机可控的本地增强工具

Wand-Enhancer指南:三步把Wand(WeMod)变成手机可控的本地增强工具

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

想让游戏内作弊器在离开工位时也能随手调整,电脑上的Wand(原WeMod)帮不上忙。Wand-Enhancer解决的就是这件事:一个开源的本地补丁工具,直接修改Wand的resources\app.asar,加入手机远程面板、自定义脚本注入、F12开发者工具等能力。一切都在你自己电脑上完成,不发起任何对外网络请求,与套壳类工具不同,它不碰服务端逻辑,只改客户端代码。

快速上手:三十分钟跑通Wand-Enhancer补丁器

环境清单

开始之前先确认:

  • ✅ Windows 10/11(补丁器是WPF桌面程序,系统自带的 .NET Framework 4.8 即可运行)
  • ✅ 已安装Wand或WeMod,默认位于%LOCALAPPDATA%\Wand或%LOCALAPPDATA%\WeMod
  • ✅ 需要手机远程面板时,电脑与手机连在同一个Wi-Fi

如果要从源码构建(参与开发才需要),额外准备:CMake、Node.js + pnpm、Visual Studio 2022 或 Build Tools(带MSBuild)及其"Desktop development with C++"工作负载、.NET Framework 4.8桌面目标包。

第一步:获取可执行文件(GitHub Actions自建)

官方Release只发release notes,不放.exe——因为预编译补丁工具被反复盗传、篡改并栽赃给项目。推荐路径是自己构建:

  1. Fork项目仓库。
  2. 进入你fork的Actions标签页,若GitHub询问则启用工作流。
  3. 选择Build executable工作流,点击Run workflow,保持默认分支。
  4. 运行结束后打开该次运行记录,下载artifact压缩包,解压得到WandEnhancer.exe。

做对了长什么样:你手里是一个来自自己fork工作流的WandEnhancer.exe,Actions构建日志无报错。

想从源码构建的话,克隆仓库后运行一键构建脚本:

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

这条命令会依次完成:安装web-panel依赖、构建前端、用CMake编译原生辅助库、还原NuGet包、构建WPF解决方案。做对了长什么样:解决方案编译通过,且生成了web-panel/dist/bridge.cjs与默认渲染脚本。

第二步:首次运行——定位Wand并完成补丁

  1. 启动WandEnhancer.exe。补丁器会在%LOCALAPPDATA%\Wand和%LOCALAPPDATA%\WeMod下扫描最新的app-*版本子目录(验证规则:目录内有同名.exe和resources\app.asar);找不到时,退回从正在运行的Wand/WeMod进程反查安装目录。
  2. 检测成功后勾选需要的增强项(远程Web面板、禁用更新、F12开发者工具等),点击Patch。
  3. 重启Wand验证。

Wand-Enhancer主界面:已自动检测到Wand安装目录,可勾选增强项后开始打补丁

做对了长什么样:日志区输出[ENHANCER] Done!;重启Wand后,鼠标悬停顶栏的Connect按钮会出现二维码,手机扫码即可打开远程面板。

原理揭秘:补丁如何写进app.asar又不弄坏它

先说它解决的问题:Wand的整个前端打成一个resources\app.asar压缩包,里面的JS被压缩混淆(函数名全是a、b、#Xyz)。想"加功能",必须能在混淆代码里定位到稳定位置、只替换该处,并且保证随时可回滚。Wand-Enhancer把这拆成五步流水线:

  1. 备份优先:首次打补丁把app.asar复制为app.asar.backup;再次打补丁时先还原干净文件再改,保证重打补丁永远从原始状态开始。app.asar.unpacked同样处理。
  2. 解包:把asar解到app.asar.unpacked。
  3. 正则补丁:对index.js和app-*.bundle.js按正则逐个匹配、替换。
  4. 注入资产:远程面板功能会把构建好的remote-panel/(含bridge.cjs)和你选的自定义.js写进包里。
  5. 重打包:用AsarSharp写回asar,static\unpacked路径的文件保持解包状态。

流水线核心在Enhancer.Patch(),下面从源码摘出了"备份→解包→补丁→重打包"的顺序逻辑:

public void Patch() { Common.TryKillProcess(_weModConfig.BrandName); // 确保Wand已关闭 if (!File.Exists(_backupPath)) File.Copy(_asarPath, _backupPath); // 首次:备份原始asar else File.Copy(_backupPath, _asarPath, true); // 重打:先还原干净文件 AsarExtractor.ExtractAll(_asarPath, _unpackedPath); // 解包 PatchAsar(); // 正则补丁 InjectRemotePanelFiles(); // 注入远程面板与自定义脚本 new AsarCreator(_unpackedPath, _asarPath, new CreateOptions { Unpack = new Regex(@"^static\\unpacked.*$") }) .CreatePackageWithOptions(); // 重打包 }

为什么Wand一更新、变量名全变了,补丁还能工作?EnhancerConfig里每个补丁项由三部分组成:SearchHints字符串快速判断文件是否相关、Target正则定位函数、Resolver从匹配片段中动态提取该版本的私有字段名(例如把正则捕获的#service_name填回占位符)。锚点盯住的是函数的"形状"(参数结构、/v3/account这类端点字符串)而非变量名本身——1.0.9.3 正是靠把远程桥补丁改成动态名称解析,修好了新版Wand上"unsupported version"的问题。

功能矩阵与自定义脚本注入

补丁器在源码EPatchType中定义了这些可选项:

功能作用适用场景
远程Web面板向Wand嵌入网页面板,局域网内扫码即连手机操作作弊项、远程开始/结束游戏
自定义脚本注入把你的.js注入Wand渲染进程(完整DOM + Noderequire)UI微调、小自动化、修bug
F12开发者工具在Electron主进程挂before-input-event钩子,F12直接开DevTools调试和分析应用行为
禁用自动更新替换ACTION_CHECK_FOR_UPDATE处理器,不再检查更新源固定当前版本,防止补丁被自动更新覆盖
Pro激活改写返回账号数据的服务方法,本地保持Pro订阅状态本地更新后Pro状态不回退
布局/主题定制客户端侧界面与主题调整(README功能列表)个性化外观

注意:自定义脚本复用远程面板的渲染进程注入通道,所以必须同时启用Remote Web Panel补丁。

写一个注入脚本

每个脚本运行在Wand渲染进程里,被包了一层保护:抛错只记录日志、不会崩掉Wand。但同一次启动可能执行不止一次(加载时一次、稍后又一次),所以一次性逻辑要放在全局标志后面。项目提供了小助手:WandEnhancer.log(...)、WandEnhancer.remoteUrl、WandEnhancer.apiVersion。

下面是官方README里的最小示例hello.js,用MutationObserver监听对话框出现:

// Injected scripts can run multiple times — guard one-time setup. 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 }); }

存放位置二选一:在补丁对话框里选择一个或多个.js文件(只接受真实存在的.js);或者把.js丢进WandEnhancer.exe同级的renderer-scripts/文件夹。两个脚本重名时,补丁器会自动给后来的改成.custom1、.custom2后缀。重新打一次补丁即可生效。

避坑手册:补丁失败与手机连不上怎么排查

症状一:手机扫了码,面板页面加载不出来

  • 排查:确认电脑和手机在同一个Wi-Fi → 检查路由器/访客网络是否开了"客户端隔离"(同SSID设备互相不可达)→ 检查Windows防火墙 → 检查网络类型是否为"公用"。
  • 解决方案:放行入站TCP3223(远程面板固定默认端口):
# 管理员PowerShell执行:放行远程面板端口的入站流量 New-NetFirewallRule -DisplayName "WandEnhancer Remote" -Direction Inbound -LocalPort 3223 -Protocol TCP -Action Allow -Profile Private
  • 若Windows把当前连接标记为"公用",改成"专用"也有帮助。确要用移动数据或其他网络,就上Tailscale之类的虚拟局域网工具;面板本就不该暴露在公网。

症状二:打补丁报"The version may not be supported"

  • 排查:说明正则没找到目标代码。先确认Wand进程已彻底退出(补丁器会自动尝试结束它,但建议先在任务管理器手动关闭)→ 确认补丁器是最新版(1.0.9.3 专门修复了新版Wand上远程桥补丁失效)→ 从界面导出日志,看具体哪条补丁项失败。
  • 解决方案:更新补丁器后重打。流水线会先还原app.asar.backup再重打,反复打补丁是安全的;若确认当前Wand版本暂不受支持,等新版补丁器发布。

症状三:SmartScreen/Defender 拦截WandEnhancer.exe

  • 排查:GitHub Actions产出的二进制没有签名,Windows对未签名且不常见的程序一律警告,即使它就是你自己构建的。
  • 解决方案:审查源码、核对那次Actions运行的构建日志,只运行自己构建的二进制。不要从YouTube视频描述、随机镜像站或Discord下载"官方版"——官方不提供任何预编译可执行文件和教程视频,已有骗子用项目名义制作假教程并在描述里藏恶意软件。

症状四:用Wand自带"手机配对"后Pro消失、随机掉线

  • 排查:Wand原生配对(/v3/auth/remote_code)会触发服务端设备交接,把本地会话踢下线。
  • 解决方案:1.0.9.3 起补丁器已禁用该配对流程,改用Wand-Enhancer内置的远程Web面板(走本地IPC桥,不碰服务端)。

症状五:启动时提示找不到WeMod/Wand目录

  • 排查:默认只扫%LOCALAPPDATA%\Wand、%LOCALAPPDATA%\WeMod下的app-*子目录,装在非常规位置就扫不到。
  • 解决方案:先启动一次Wand,让补丁器从运行中进程反查安装目录;或确认你指向的目录里同时有<品牌名>.exe和resources\app.asar,这是补丁器的校验规则。

安全实践:跑自建补丁器之前要注意的事

几个配置要点:

  • 远程面板端口固定为3223,是桥接端与前端共享的常量,不是可配置项,排查网络问题时就认这个端口。
  • 自定义脚本只接受.js,且以与Wand客户端相同的权限运行——只注入你信任并完全理解的脚本。
  • 主界面日志窗口支持导出/复制,向社区反馈问题前把完整日志存下来。

安全最佳实践:

  • 只运行自己构建的二进制:官方Release只有release notes,任何"一键下载exe"的渠道都不可信。
  • 核对构建链:artifact必须来自你自己fork的Build executable运行,抽查Actions日志,确认构建过程无人篡改。
  • 远程面板留在局域网:3223 仅供本地网络使用,别把它做端口映射暴露到公网;跨网络需求交给Tailscale。
  • 保留备份:app.asar.backup和app.asar.unpacked.backup是你的回滚点,打完补丁不要手改resources\目录,重打补丁交给补丁器自己处理。
  • 跟上版本节奏:Wand每次更新都可能改内部实现,补丁器的changelog按版本记录兼容修复(如1.0.9.3),打补丁前先对照release notes确认支持当前Wand构建。

参与Wand-Enhancer开发:本地开发环境与贡献方向

从仓库说明看,适合新手的贡献方向有四个:

  1. 兼容性维护:Wand更新后,对照最新app-*.bundle.js重新推导正则锚点(仓库明确要求不要依赖旧的解包产物),这是最常出现的维护需求。
  2. 远程面板功能:按游戏固定作弊项、快捷预设等能力都在web-panel/src/下,沿用现有的storage与协议约定即可扩展。
  3. 本地化:Web面板语言在web-panel/src/locales/,目前覆盖德/英/西/法/俄/简中。
  4. 性能优化:移动端抽屉滚动对backdrop-filter很敏感,列表里不要随手加毛玻璃效果。

本地开发环境在Windows上一条命令起步:

# 全链路构建:安装依赖、构建前端、CMake原生辅助库、WPF解决方案 build.cmd # web-panel单独构建并校验桥接产物语法 cd web-panel pnpm run build node --check web-panel/dist/bridge.cjs

改完补丁流水线后,至少完整走一遍"打补丁→验证→重打"循环,确认备份与还原逻辑没有破坏。一个完全透明、可审计的本地增强工具,价值会随着Wand的每一次版本迭代和社区的每一份提交而持续增长。

【免费下载链接】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/27 10:15:03

ESP32编译优化-O2导致崩溃的原因与排查指南

把ESP32的编译优化等级从默认的调试模式改成-O2&#xff0c;原本运行得好好的程序突然重启、死机、串口刷乱码——这几乎是每个嵌入式开发者都会撞上的经典场面。我第一次遇到时也以为是工具链出了问题&#xff0c;翻遍了启动日志,查了半天硬件连接&#xff0c;最后才发现问题根…

作者头像 李华
网站建设 2026/9/27 10:11:03

QQ 飞车 Agentic 研发转型过程中的 Loop Engineering

&#x1f44b; Hi&#xff0c;带娃的我热爱 AI 大模型应用落地、意识解码与 AI 开发工具链 。 &#x1f4a1; 创业路上&#xff0c;用技术换时间&#xff0c;一起把 AI 变成生产力 &#x1f680; >QQ 飞车 Agentic 研发转型过程中的 Loop Engineering 背景与痛点 当一个研发…

作者头像 李华
网站建设 2026/9/27 10:00:23

华为欧拉系统以及jailhouse虚拟化技术介绍

前言8月份开始接触到了华为的欧拉系统和可以在欧拉系统使用的虚拟化技术jailhouse。使用后不仅感叹虚拟化技术的精妙与国产开源系统的强大。因此想要介绍下欧拉系统和系统中经常使用的jailhouse技术一.欧拉系统介绍1.简单介绍openEuler 是由开放原子开源基金会孵化的全场景开源…

作者头像 李华