news 2026/9/19 17:12:03

Wand-Enhancer 完整指南:WeMod 本地补丁的原理、构建流程与失效回退

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Wand-Enhancer 完整指南:WeMod 本地补丁的原理、构建流程与失效回退

Wand-Enhancer 完整指南:WeMod 本地补丁的原理、构建流程与失效回退

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

Wand-Enhancer 是一个开源的 WeMod 增强工具,做法是对 WeMod 安装目录内的app.asar做正则替换,属于典型的 WeMod 本地补丁:实现 WeMod 禁用自动更新、本地解锁 Pro 显示、F12 打开 DevTools、WeMod 远程面板等能力。全部改动只发生在你本机的 WeMod 安装目录里,代码可审计;运行过程不发起任何外网请求,唯一的例外是远程面板,它只在局域网内监听。

工作原理:静态改文件,外加三道护栏

改一个 Electron 客户端大致有两条路:直接改磁盘上的包(静态),或者在进程跑起来之后注入代码(运行时)。Wand-Enhancer 选了前者,并配了一个小垫片。两者取舍如下:

  • 生效时机:静态方式在每次启动前就已就位;运行时方式需要挂到已运行的进程上。
  • 可恢复性:静态方式删掉备份即可还原;运行时方式依赖卸载注入器。
  • 版本稳定性:静态方式的正则锚点会随 WeMod 更新漂移,但 patcher 能明确报告失配;运行时注入点相对固定,一旦打偏则风险更高。

"敢改"的底气来自三道护栏:

  1. 自动备份。首次打补丁前把原始包复制为app.asar.backup;之后每次重打都先从这个备份恢复出干净状态再动手,补丁因此不会层层叠加。
  2. 失配即报错。正则锚点全部从压缩后的代码里动态解析,对不上时直接抛出The version may not be supported并中止,不会悄悄写坏原文件。核心逻辑在 WandEnhancer/Core/Enhancer.cs。
  3. 垫片职责单一。tools/asar-fuses-bypass/里编译出的 DLL 只做一件事:放在 WeMod 可执行文件旁、命名为version.dll,让 Electron 的 asar 完整性 fuse 检查放行改过的包。它不是代码注入器。

完整管线可以归纳为四步:

  1. 用 AsarSharp 把resources/app.asar解包到app.asar.unpacked/
  2. 对解出的app-*.bundle.jsindex.js做正则替换,并写入 remote-panel 目录;
  3. 重新打包,覆盖原位置的app.asar
  4. version.dll写到 WeMod 根目录。

动手流程:从克隆到补丁生效

目前拿不到官方预编译的 exe,稳妥路径是 fork 仓库后跑 CI。只想在 Windows 上本地构建的话:

构建依赖与编译步骤

git clone https://gitcode.com/GitHub_Trending/we/Wand-Enhancer cd Wand-Enhancer build.cmd # 依赖:CMake、Node.js + pnpm、VS2022、.NET Framework 4.8

脚本按顺序完成:装 web-panel 依赖、打前端、用 CMake 编译原生 DLL、还原 NuGet 包、编译 WPF 解决方案。

首次运行:定位安装目录

第一次运行 WandEnhancer.exe,它会尝试自动找到 WeMod 安装目录:查注册表、扫常见路径,甚至从正在运行的进程反查;只要目录里存在app-x.x.x\resources结构即可通过校验。没找到的话,手动粘贴路径。

勾选开关并确认日志

在补丁弹窗里勾选需要的项(可多选),然后盯日志区:依次出现Extracting app.asar、每条补丁的Patch applied,最后一行是Done!。重启 WeMod 生效,顺利的话全程不到一分钟。

五个补丁开关速查

开关做了什么适合谁注意
ActivatePro把账号接口的本地返回值改成period: "yearly", state: "active",并堵住改语言、后台刷新账号时抹掉订阅的几条路径想在本地界面解锁 Pro 显示的人保持 patcher 版本最新,防止状态回退
DisableUpdatesACTION_CHECK_FOR_UPDATE处理器直接返回空,客户端停止检查新版本,版本钉在当前补丁版本不想让更新冲掉补丁的人补丁失效时靠备份回退
DisableTelemetry目前仅在枚举中占位,无对应实现尚未实现,勾选可能直接报错
DevToolsOnF12在 Electron 主进程挂before-input-event钩子,按 F12 以 detach 模式开/关独立窗口 DevTools想给 WeMod 打开 DevTools 调试 DOM 或验证脚本的人
RemoteWebPanelPreview把内置 web 面板、bridge 与渲染脚本写进 app.asar,PC 上起 3223 端口的 HTTP/WS 服务想把手机当遥控器的人自定义脚本运行的前提

两项需要单独说明:

RemoteWebPanelPreview:这是其余功能的地基。它把整个内置面板打进 asar,手机扫码即用;同时,你的自定义脚本只有勾了它才会被打包进客户端。

DisableTelemetry:这个开关在枚举里留着位置(WandEnhancer/Models/PatchConfig.cs),但补丁实现还没落地,现在勾它可能直接抛错。是否落地,盯 CHANGELOG.md 即可。

进阶:自定义脚本 + 手机远程面板

自定义脚本注入

脚本进入客户端只有一条路:在补丁弹窗里添加.js文件,或把它们放进 patcher 可执行文件同级的renderer-scripts/目录。打包时脚本会被塞进客户端渲染进程执行,前提是勾了远程面板开关。注意脚本可能跑多次,一次性工作要挂全局标志:

// 防重复执行 if (!globalThis.__myScriptInstalled) { globalThis.__myScriptInstalled = true; WandEnhancer.log("脚本已运行,apiVersion:", WandEnhancer.apiVersion); // 这里可以访问完整 DOM,甚至 Node 的 require }

脚本抛错只会被记进日志,不会拖垮 WeMod。

远程面板拓扑与协议

整条链路都在局域网内:手机浏览器(同一 Wi-Fi)经 HTTP/WS(TCP 3223)连到跑在 PC 上的面板服务;服务通过 Electron IPC 进入bridge.cjs(注入 WeMod 主进程),再触达 Wand 渲染进程的 trainer API 与游戏状态。桥接层源码在web-panel/bridge/,生产构建会打成一个bridge.cjs塞进 asar。端口、路径这类协议常量统一收在 web-panel/protocol/web-contract.json,动协议前先改它。面板能力覆盖:游戏列表、远程启停 trainer、按分类勾选 cheat、置顶常用项、保存预设。

WeMod 补丁失败排查:四组症状对照

症状原因处理
打完补丁 WeMod 起不来当前版本的代码锚点与正则对不上,属版本未适配停用它,按下面"回退方法"恢复
Windows / SmartScreen 报警告CI 产物未签名正常现象,核对自建 workflow 日志即可;对来路不明的"预编译 exe"一律不可信——同名假教程里放过木马,官方从不在 release 发二进制
手机扫码后页面打不开不同网段 / 防火墙拦截 / 网络被标为"公用"确认 PC 与手机同一 Wi-Fi 且路由器未开 AP 隔离;放行 Windows 防火墙 TCP 3223 入站;网络类型改"专用";跨网络就配 Tailscale
Pro 过一两天变回 Free早期版本在后台刷新账号数据时丢订阅状态1.0.9.1 与 1.0.9.3 已修复;把 patcher 升到最新版重打一遍

补丁失效的回退方法

任何 WeMod 补丁回退都依赖那份app.asar.backup

  1. 停用它,删掉resources下的app.asar
  2. app.asar.backup改回app.asar的原名;
  3. 若备份也丢了,直接重装 WeMod,等 patcher 适配新版本再来。

收尾:它适合谁

适合:

  • 能自己跑 CI 或在本地完成编译的人;
  • 想把 WeMod 版本钉住、又需要手机远程操作的人;
  • 愿意读一眼源码、核对补丁行为再下手的人。

不适合:

  • 只想"一键下载 exe"图省事的人;
  • 对本地文件备份毫无概念的人;
  • 把账号安全放在第一优先级的人。

从备份机制到锚点校验,Wand-Enhancer 用一份可审计的开源实现,演示了一个 Electron 客户端本地修改的完整边界。

【免费下载链接】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/19 17:12:03

Win11下Dev-C++环境搭建:编译器适配与C++11完整支持

1. 这不是“装个软件”那么简单:为什么Win10/Win11用户还在为Dev-C反复折腾?你搜“Dev-C下载安装”,页面上铺天盖地是“一键安装”“绿色免装”“破解版下载”,点进去却卡在“找不到g.exe”“编译失败:无法定位程序输入…

作者头像 李华
网站建设 2026/9/19 17:11:56

BrewUI:给Homebrew套上图形化外壳,macOS包管理不再靠记忆

第一次见到BrewUI这个项目名,我差点以为是哪个精酿啤酒爱好者的作品——毕竟“brew”这个词太容易让人联想到酿酒罐和麦芽香气。接触之后才反应过来,它真正对接的是Homebrew,那个在macOS和Linux上帮我们管理软件的包管理器,而Brew…

作者头像 李华
网站建设 2026/9/19 17:11:39

Kimi APIKey申请与CLI配置:智能体开发实战指南

自打大模型API陆续开放以来,我一直在把各种各样的工作流往智能体上搬。Kimi这套APIKey申请与使用流程,我前前后后踩了不少坑,也总结出一套比较顺手的玩法。这篇文章就围绕Kimi大模型的APIKey申请、Kimi CLI命令行工具、智能体开发以及模型调用…

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

Vivado IP核仿真:Export Simulation与VCS/Verdi高效集成指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/19 17:08:34

x64dbg 插件开发指南:GuiCloseQWidgetTab 关闭插件 QWidget 标签页

x64dbg 插件开发指南:GuiCloseQWidgetTab 关闭插件 QWidget 标签页 【免费下载链接】x64dbg An open-source user mode debugger for Windows. Optimized for reverse engineering and malware analysis. 项目地址: https://gitcode.com/gh_mirrors/x6/x64dbg …

作者头像 李华