Sugo Protector(CUI)使用文档
本文档依据CUI的实际界面与逻辑整理,说明命令行版本的参数、授权管理与保护流程。
1. 基本用法
Windows 下将控制台编码设置为 UTF-8
1.1 基础用法
sgprotect_con <input_path> [options] [-o <output_path>]
sgprotect_con --help={native|dotnet|apk}
input_path:待保护文件路径-o <output_path>:输出文件路径(可相对/绝对)
1.2 查看帮助与版本
-h/--help:显示总帮助--help=native:显示 native 类型帮助--help=dotnet:显示 dotnet 类型帮助--help=apk/--help=aab:显示 apk/aab 类型帮助-v/--version:显示版本号
2. 输入文件与类型识别
如果文件已经被保护:
- 会返回错误并打印:
File is already protected
如果类型不支持:
- 会打印:
Unsupported file type
3. 输出路径规则(非常重要)
输出路径优先级由 resolveOutputPath() 决定:
- 优先级 1:命令行
-o <path> - 优先级 2:配置文件
<input_path>.sugo中的输出路径 - 优先级 3:默认命名:
<basename>.protected<ext>
随后:
- 若输出路径为相对路径,会以输入文件所在目录为基准拼成绝对路径。
示例:
- 输入:
D:\work\a.exe -o out\a.protected.exe
最终输出为:D:\work\out\a.protected.exe
4. 配置文件(.sugo)
程序会尝试加载配置文件:
- 路径:
<input_path>.sugo
加载成功会打印:
Config file: <input_path>.sugo
5. 认证与授权
5.1 登录参数
--phone=<phone>
--password=<password>
- 本机若已存在凭据/会话,则可能自动登录成功
- 若未自动登录成功:
- 当同时提供
--phone与--password时尝试登录
- 当同时提供
5.2 退出登录
--logout
- 执行
注销并清理凭据 - 该命令不要求先通过授权校验
5.3 授权列表/绑定/解绑
命令:
--license-list:列出授权缓存--license-refresh:与--license-list联用,先刷新再列出--license-bind=<num>:绑定授权到本机--license-unbind=<num>:解绑授权
示例:
sgprotect_con --phone=13200000000 --password=****** --license-list
sgprotect_con --phone=13200000000 --password=****** --license-list --license-refresh
sgprotect_con --phone=13200000000 --password=****** --license-bind=XXXX-XXXX-XXXX
sgprotect_con --phone=13200000000 --password=****** --license-unbind=XXXX-XXXX-XXXX
5.4 保护前的授权校验
在真正保护之前,程序会:
- 获取“已绑定”的授权列表
如果没有可用授权,会提示:
No valid license bound. Please bind a license first.
如果该文件类型的授权不可用,会提示:
Current file type license is not available. Please bind a valid license first.
6. 执行保护
6.1 Native(PE/ELF)保护
执行流程:
- 对 PE 尝试分析,加载符号文件:与输入文件同目录同名的
.pdb - 执行保护
6.2 .NET 保护
执行流程:
- 对 .NET 尝试分析
- 执行保护
6.3 APK 保护
执行流程:
- 对APK / AAB的文件类型进行复制处理
- 执行保护
7. 典型工作流(推荐)
7.1 首次使用:登录并查看授权
sgprotect_con --phone=13200000000 --password=****** --license-list --license-refresh
7.2 绑定授权到本机
sgprotect_con --phone=13200000000 --password=****** --license-bind=XXXX-XXXX-XXXX
7.3 保护一个文件
sgprotect_con D:\work\a.exe -o D:\work\a.protected.exe
或让程序从 <input>.sugo 读取输出路径:
sgprotect_con D:\work\a.exe
7.4 退出登录
sgprotect_con --logout
8. 返回码与错误输出
-
成功:返回
0,并打印:Protection completed!Output file: <path>
-
失败:返回非 0,并打印类似:
Error (0xXXXXXXXX): <status message>
9. FAQ
9.1 为什么执行保护提示没有授权?
需要满足:
- 至少存在一条
已激活且已绑定到本机的授权 - 授权类型要覆盖当前文件类型(试用版本 / Native / .NET / Android)
9.2 --license-refresh 为什么没效果?
当前实现中它只在 --license-list 流程内生效:
- 需要同时传
--license-list --license-refresh