命令行 / 批处理

命令行用法说明

安装目录下的 WZProtector.exe 加 --nogui 即进入命令行模式,可用于脚本与 CI 批量加壳。

命令行模式同样需要登录且授权有效。首次使用可用 --email/--password 登录;新网络首次登录需加 --login-code。加 --remember 可记住登录,后续运行无需重复输入。

1. 命令格式

WZProtector.exe --nogui --input <input.exe|input.dll> --output <output.exe|output.dll>
                 --config <config.json> [--functions none|normal|all|selected]
                 [--report <file|->] [--progress]
                 [--email <account> --password <password> --login-code <code>] [--remember]

WZProtector.exe --nogui --batch-dir <输入目录> --batch-out <输出目录>
                 --config <config.json> [--functions none|normal]
                 [--report <file|->] [--progress]
                 [--email <account> --password <password> --login-code <code>] [--remember]

WZProtector.exe --nogui --logout [--server <url>]

配置文件可从图形界面「文件 → 保存配置 / 导出配置」生成,包含密钥与全部保护策略。

2. 参数说明

参数必填说明
--nogui是进入命令行模式(不加则启动图形界面)
--input是输入文件(x64 / x86 EXE、DLL 或 .NET 程序,以 x64 为主)
--output是输出文件路径,不能与输入相同
--config是保护配置 JSON 路径
--functions否函数选择:none 不虚拟化 / normal 正常用户函数 / all 全部可虚拟化 / selected 使用配置中的函数列表 / sdk 使用目标端 SDK 标记的函数(见 SDK 说明)(默认 none)
--report否报告 JSON 输出路径;- 表示输出到 stdout(默认 -)
--progress否向 stdout 输出进度行 WZPROGRESS <百分比> <阶段>
--email / --password条件必填登录账号;未登录时必须提供,需成对出现
--remember否登录后记住会话,后续运行免登录
--login-code条件必填新网络首次登录时的邮箱验证码(仅当服务器要求验证码时需要)
--logout否退出登录并清除本机会话(含记住登录状态)
--batch-dir / --batch-out并行方案目录批量处理,二者必须成对;输出目录不能与输入目录相同
--help / -h否显示用法

3. 常用示例

最小示例(使用配置内已保存的函数选择):

WZProtector.exe --nogui --input app.exe --output app.protected.exe --config app.json

自动虚拟化正常用户函数,并显示实时进度:

WZProtector.exe --nogui --input app.exe --output app.protected.exe --config app.json ^
  --functions normal --progress

首次登录并记住会话(后续运行不用再带账号密码):

WZProtector.exe --nogui --email you@example.com --password "your-password" --remember ^
  --input app.exe --output app.protected.exe --config app.json --functions normal

批量处理目录(只支持 none / normal,已处理过的文件命中 .wzc 缓存自动跳过):

WZProtector.exe --nogui --batch-dir "D:\in" --batch-out "D:\out" --config app.json ^
  --functions normal --progress --report "D:\batch-report.json"

退出登录:

WZProtector.exe --nogui --logout

4. 进度与报告

加 --progress 后,stdout 会按行输出进度,可用于脚本解析:

WZPROGRESS 12 reading
WZPROGRESS 28 analyzing
WZPROGRESS 54 virtualizing
WZPROGRESS 100 done

单文件报告(--report)成功时主要字段:

{
  "version": 1,
  "formatVersion": 2,
  "ok": true,
  "result": {
    "input": "...", "output": "...",
    "functions": 552
  }
}

失败时返回 ok: false,并带 error 对象:

{ "ok": false, "error": { "code": 5, "stage": "auth", "message": "请先登录后再使用。" } }

批处理报告结构:{ "ok": true, "batch": [ { "input": "...", "output": "...", "ok": true, "cached": false } ] }

5. 退出码

退出码含义
0成功(含 --help、--logout)
2参数错误、用法错误或批处理目录问题
3配置文件无法读取或解析失败
4函数扫描失败(--functions normal/all 时)
5未登录、登录失效、授权无效/到期或联网验证失败
6数字签名失败(配置启用自动签名时)

6. 注意事项

  • 运行前请确认账号已登录且授权在有效期内;授权到期只影响生成新产物,不影响已加壳文件。
  • 运行时需要联网校验授权状态;请保持网络可用,离线或校验失败将无法生成新产物。
  • 配置文件包含加密密钥,请妥善保管,不要提交到公开仓库。
  • 批处理仅处理输入目录根层的 *.exe 与 *.dll;输出目录会生成 <文件名>.wzc 缓存,命中缓存时报告中 cached 为 true。
  • 输出路径不能与输入、配置、报告路径冲突,否则将直接报错退出。
  • 目标端 SDK:在代码中用宏标记函数后,可用 --functions sdk 一键选中(详见 SDK 说明)。

还没有客户端?

下载并安装 WZProtector,登录账号即可开始使用。