GUI 完整使用文档
按界面逐项说明登录、授权、应用保护、日志、设置与配置文件,含错误提示与批次操作细节。
1. 术语与概念
1.1 输入文件(待保护文件)
在“应用保护”页面选择或拖入的目标文件。工具会自动识别类型:
- PE32 / PE64(Windows 原生程序)
- .NET(x86 / x64 / AnyCPU)
- ELF32 / ELF64(Linux 原生程序)
- Android APK / AAB
1.2 输出文件(保护后文件)
保护完成后生成的新文件:
- 默认命名:
<原文件名>.protected.<原后缀> - 输出路径支持相对路径和绝对路径
- 相对路径以输入文件所在目录为基准解析
1.3 配置文件(.sugo)
每个输入文件对应一份旁路配置:
- 路径:
<输入文件完整路径>.sugo - 用途:保存输出路径、保护选项开关、函数保护规则
- 保存时机:
- 当前已加载文件且配置存在时,按
Ctrl+S保存 - 点击“开始保护”前自动保存一次
- 当前已加载文件且配置存在时,按
配置中的输出路径按 UI 逻辑保存为字符串。输入相对路径时,执行保护会以“输入文件所在目录”为基准转换为绝对路径。
2. 界面总览
左侧侧边栏包含 5 个页面:
| 页面 | 作用 |
|---|---|
| 首页 | 公告与更新日志;无数据时显示“暂无公告 / 暂无更新日志” |
| 应用保护 | 选择文件、配置保护选项、配置函数保护、执行保护 |
| 日志 | 查看、筛选、复制、导出操作日志 |
| 设置 | 设置运行环境(如 JRE 路径) |
| 关于 | 官网、版权信息、创建错误转储 |
侧边栏顶部为用户区域:
- 未登录:显示“未登录”,提供“点击登录”
- 已登录:显示用户名,提供“授权管理”与“注销”
3. 登录
入口:侧边栏顶部 “点击登录”。
登录弹窗使用手机号 + 密码模式。
3.1 手机号登录
字段:
- 手机号:提示“请输入手机号”
- 密码:提示“请输入密码”
- 保存密码:勾选后在本地保存账号密码,用于下次自动填充
按钮:
- 登录:开始登录
快捷键:
- 在手机号登录页按
Enter触发登录
提示:
- 手机号为空:提示“请输入手机号”
- 密码为空:提示“请输入密码”
- 登录中按钮显示“登录中...”
- 登录失败:弹窗“登录失败: <原因>”
安全提示:启用“保存密码”会把密码保存到本地配置。建议只在受信任的个人设备使用。
4. 授权管理
入口:侧边栏顶部 “授权管理”。
窗口标题为“授权管理”,核心区域是“授权列表”表格。
4.1 刷新授权
按钮:刷新授权
- 异步请求并更新当前账号可用授权
4.2 单个授权绑定 / 解绑
每一行授权在“操作”列提供:
- 绑定:把授权绑定到本机
- 解绑:把授权从本机解绑(二次确认)
解绑确认文案:
确定要解绑该授权吗?
解绑后将无法在此设备上使用该授权。
授权不可绑定时会给出原因,例如:
- 许可证状态不正常,无法绑定
- 已绑定到本机,无需重复绑定
- 已绑定到其他设备且无可用激活次数
- 此许可证不可绑定到本机
- 无可用激活次数
授权不可解绑时提示:
- 只能解绑已绑定到本机的许可证
4.3 批量绑定 / 批量解绑
授权列表左侧有复选框列,表头提供“全选 / 取消全选”。
按钮:
- 批量绑定:当所选授权中存在可绑定项时可用,显示数量
批量绑定(n) - 批量解绑:当所选授权中存在可解绑项时可用,显示数量
批量解绑(n)
5. 应用保护(核心功能)
入口:侧边栏 “应用保护”。
页面从上到下:
- 标题“应用保护”
- 文件拖拽加载区
- 文件信息卡片(加载后显示)
- 保护功能:“保护选项”与“函数保护”
- “开始保护”按钮
- 右侧时间线(加载、解析、执行策略等进度)
5.1 选择文件
支持拖拽文件到页面。
加载过程:
- 页面显示“正在解析中...”,时间线显示加载步骤
- 加载失败:提示“无法加载文件: <文件名>”
- 检测到文件已被保护:提示“该文件已经被保护过”,并中止
加载成功后显示:
- 文件名
- 大小(B / KB / MB)
- 类型,例如
.NET (x64)、PE64 (x64)、Android APK
5.2 移除已选择文件
文件信息卡片右侧有移除按钮(X)。点击后:
- 清空当前文件
- 清空函数保护列表
- 卸载配置
5.3 输出路径
位置:保护选项标签页顶部,标签为“输出路径:”。
- 可直接输入
- 点击 浏览 选择保存路径
- 如果选择的保存路径与输入文件在同一目录,会自动写入相对路径
默认值:<输入文件名>.protected.<后缀>
5.4 保护选项(按文件类型动态变化)
保护选项以“标题 + 描述 + 开关”呈现,并保存到 .sugo 配置。
5.4.1 Android APK
| 选项 | 说明 | 默认 |
|---|---|---|
| Dex 加密 | 加密 classes.dex 文件 | 开 |
| 反调试 | 检测并阻止调试器附加 | 关 |
| 反注入 | 检测并阻止注入 | 关 |
| Root 检测 | 检测设备是否已 Root | 关 |
| 模拟器检测 | 检测是否运行在模拟器中 | 关 |
| 反截屏 | 检测并阻止截屏 | 关 |
5.4.2 Native - Windows PE(PE32 / PE64)
| 选项 | 说明 | 默认 |
|---|---|---|
| 压缩保护 | 压缩可执行文件,减小体积 | 开 |
| 导入表保护 | 保护导入函数表 | 关 |
| 反调试 | 检测并阻止调试器附加 | 关 |
| 虚拟机检测 | 检测是否运行在虚拟机中 | 关 |
| 内存校验 | 检测内存修改 | 关 |
5.4.3 .NET(x86 / x64 / AnyCPU)
| 选项 | 说明 | 默认 |
|---|---|---|
| 压缩保护 | 压缩程序集 | 开 |
| JIT 加密 | 加密方法体,运行时解密后 JIT 编译 | 关 |
| 反调试 | 检测并阻止调试器附加 | 关 |
| 内存校验 | 检测内存修改 | 关 |
5.4.4 Native - Linux ELF(ELF32 / ELF64)
| 选项 | 说明 | 默认 |
|---|---|---|
| 压缩保护 | 压缩 ELF 文件 | 开 |
| 移除符号 | 移除调试符号信息 | 关 |
| 导入保护 | 保护动态链接符号 | 关 |
| 反调试 | 检测并阻止调试器附加 | 关 |
| 内存校验 | 检测内存修改 | 关 |
5.5 函数保护(按函数 / 方法粒度)
位置:“函数保护”标签页。
该页提供函数列表与三类保护类型的逐项勾选。
5.5.1 搜索
输入框提示:搜索函数/方法名...
- 按显示名称模糊过滤,不区分大小写
5.5.2 表格列
表头:
| 列 | 说明 |
|---|---|
| 名称 | 函数或方法显示名 |
| RVA | 显示为 imagebase + rva,例如 0x7FF66... |
| 混淆 | 控制流打乱 |
| 虚拟化 | 转换为自定义虚拟指令 |
| 加密 | 仅 .NET,方法体加密 |
支持性规则(由文件类型决定):
- 混淆:默认允许
- 虚拟化:.NET 类型不支持,其他原生类型支持
- 加密:仅 .NET 类型支持
当某列不支持时,该列会被置为不可勾选状态。
5.5.3 右键菜单(批量勾选)
在表格内右键可打开菜单:
- 全选
- 取消选择
- 混淆 → 勾选 / 取消
- 虚拟化 → 勾选 / 取消
- 加密 → 勾选 / 取消
5.5.4 快捷键
- 在函数表格上按
Ctrl+A:全选 - 搜索框会改变可见行范围,
Ctrl+A只选中当前可见行
5.5.5 失败回退
保护过程中如果某个函数的加密、混淆或虚拟化失败:
- UI 自动取消该行对应列的勾选
- 该行文本标红
- 日志记录失败信息(Debug 模式下更详细)
5.6 开始保护
按钮:开始保护(快捷键 F5)。
开始前会检查:
- 未选择文件:提示“请先选择要保护的文件”
- 授权不可用:提示“没有可用授权,请先完成授权绑定后再保护。”或“当前类型的授权不可用...”
- 文件不存在:提示“文件不存在”
- 文件在加载后被外部修改:提示“文件已修改,请重新加载”
执行时:
- 按钮变为“保护中...”并禁用
- 时间线追加“开始保护”并显示后续阶段
成功:
- 弹窗“保护成功!”
- 日志输出“保护成功”
失败:
- 弹窗“保护失败,请检查日志!”
- 时间线标记失败
- 到“日志”页面查询详情
5.7 时间线(Timeline)
时间线显示以下关键阶段:
- 加载文件
- 检查文件状态
- 分析文件类型
- 解析文件
- 执行保护策略
- 保护完成 / 失败
6. 日志
入口:侧边栏 “日志”。
标题:“操作日志”。
6.1 筛选
筛选下拉框:
- 全部
- 信息
- 成功
- 警告
- 错误
6.2 复制 / 导出 / 清空
- 复制:把当前所有日志行复制到剪贴板,完成后提示“已复制 N 条日志到剪贴板”
- 导出:保存为
logs.txt(可自选路径),完成后提示“日志已导出到: <路径>” - 清空:清空当前表格
提交问题时,请附带“错误”级别日志和客户端版本号。
7. 设置
入口:侧边栏 “设置”。
当前实现包含:
- JRE 路径:选择 Java 可执行文件(默认过滤
java.exe) - 选择后立即保存并记录日志:“JRE路径已更新: <路径>”
该路径预留给 Android 签名等功能,当前版本尚未启用自动签名。需要重签名时请使用外部工具完成。
8. 关于
入口:侧边栏 “关于”。
页面包含:
- 简介:Sugo Protector
- 官网链接:
https://sugo.meowstack.com - 版权信息
8.1 创建错误转储
按钮:创建错误转储。
行为:
- 当保护后产物存在问题,或保护过程中出现错误时,可生成转储提交给技术人员
- Windows 平台生成
.dmp文件(保存对话框标题“保存错误转储”) - 成功提示“错误转储已生成”,失败提示“创建错误转储失败”
9. 快捷键与配置
| 操作 | 快捷键 |
|---|---|
| 开始保护 | F5 |
| 保存配置 | Ctrl+S |
| 函数列表全选 | Ctrl+A |
| 登录 | Enter(登录弹窗内) |
.sugo 配置可以手工删除。删除后再次加载同一输入文件,会重新创建并填充默认值。
建议把验证过的
.sugo与构建脚本一起归档,便于复现问题。
10. FAQ
10.1 为什么“开始保护”不可用或提示没有授权?
需要:
- 先登录
- 在“授权管理”中至少有一条“已激活”且已绑定到本机的授权
- 授权覆盖当前文件类型
10.2 保护前提示“文件已修改,请重新加载”
加载文件后,外部程序改动了该文件(大小或修改时间变化)。处理:
- 移除并重新加载该文件
- 或确保保护期间没有其他程序写入
10.3 输出路径写了相对路径,最终文件在哪里?
相对路径以输入文件所在目录为基准。例如:
- 输入:
D:\work\a.exe - 输出填写:
out\a.protected.exe - 最终:
D:\work\out\a.protected.exe
10.4 保护后程序无法启动
按顺序排查:
- 用原始未保护文件确认程序本身可运行。
- 关闭反调试、虚拟机检测、内存校验,只保留压缩,重新保护。
- 检查是否与其他加壳工具、代码签名或完整性校验冲突。
- 检查依赖项和运行库版本是否变化。
- 生成错误转储并联系技术支持。
10.5 可以同时打开多个客户端实例吗?
不建议。多个实例同时写同一份 .sugo 或输出目录时可能互相覆盖。需要并行保护时,使用 CLI 并为每个任务指定独立输出路径。
10.6 Android 包保护后如何安装?
如果包内容被修改,需要用原签名证书重新签名。AAB 不能直接安装,请用 bundletool 生成 APK 后再测试。