运行环境
Windows PowerShell 5.1、.NET Framework 4.8；使用根目录的 BAT 即可，不需要 Python 或 Java 编译器。

目录
LauncherPatch.ps1：识别、备份、写入与恢复
source/LauncherPatch.cs：PCL-CE 的托管 PE/单文件容器处理、HMCL 的 ZIP/Java 类处理
source/RestoreDownload.cs：官方 PCL 的方法回填
lib/Mono.Cecil.dll：0.11.6，NuGet 包中的 lib/net40 版本
lib/PCL.Methods.gz、PCL.Methods.json：PCL 方法数据及逐方法特征，不是版本白名单

Mono.Cecil 原包
https://api.nuget.org/v3-flatcontainer/mono.cecil/0.11.6/mono.cecil.0.11.6.nupkg

重新生成 PCL 方法数据
从以下两个提交的 最新正式版.zip 提取 EXE，分别作为 donor.exe 和 restricted.exe。
参考实现：https://github.com/Meloong-Git/PCL/tree/5ef81e4
限制样本：https://github.com/Meloong-Git/PCL/tree/6b9a50df911c9d68b69b24c979efba477fb14b67
powershell.exe -NoProfile -ExecutionPolicy Bypass -File source/BuildMethods.ps1 -DonorExe donor.exe -RestrictedExe restricted.exe
生成器移除供体资源和无关方法体，递归保留回填方法引用的回调、闭包及初始化方法。运行时为这些依赖创建独立名称，避免复用目标中同名但行为不同的编译器生成方法；依赖已被裁剪时拒绝回填。不加载执行供体。

命令行
powershell.exe -NoProfile -ExecutionPolicy Bypass -File LauncherPatch.ps1 -TargetPath launcher.exe -CheckOnly
powershell.exe -NoProfile -ExecutionPolicy Bypass -File LauncherPatch.ps1 -TargetPath launcher.exe
powershell.exe -NoProfile -ExecutionPolicy Bypass -File LauncherPatch.ps1 -TargetPath launcher.exe -Restore
可使用 -OutputPath 输出到新的文件，输出位置已有不同文件时拒绝覆盖。

集成测试（仅开发时需要 Python 3）
python source/TestPatch.py --pcl restricted.exe --ce PCL-CE.exe --hmcl HMCL.exe --unrestricted-hmcl old-HMCL.exe --work-dir D:/Data/Game/RegionTest
测试只复制指定样本，验证试运行、修补、幂等、原样恢复、损坏备份及外部修改保护，并验证 JAR 和压缩单文件容器。
--pcl-version 可额外提供仅修改程序集版本的 PCL 样本，验证无版本白名单。
source/TestRestore.ps1 验证回调实际执行、闭包初始化和同名冲突，并验证裁剪依赖被拒绝。
source/MakeTestVariants.ps1 生成版本变化、方法结构变化和旧补丁空回调样本；--legacy-pcl 验证保留原版备份的升级修补。

自动发布
.github/workflows/release.yml：提交和 PR 自动验证，推送 v* 标签后发布经过验证的 ZIP 和 SHA256 文件。
本地打包：powershell.exe -NoProfile -ExecutionPolicy Bypass -File source/BuildRelease.ps1

边界
官方 PCL 被编译掉的方法需要匹配现有方法特征；识别到限制但结构变化时拒绝回填。
PCL-CE 支持托管 PE 和 .NET 单文件容器；修改 IL 后禁用旧 ReadyToRun 映像，防止旧本机代码覆盖修改。
HMCL 修改 RegionUtils.isIsChinaMainlandNetwork()Z，保留其他地区判断；缺少该入口的旧版原样保留。
暂不处理带 JAR 条目签名的 HMCL 构建。原始签名不会在修改二进制后继续有效。
