命令行 / 批处理
命令行用法说明
安装目录下的 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 说明)。