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