软件授权管理系统 - 整体业务流程图
1. 系统总体流程概览
graph TD
A[系统管理员] --> B[产品设置]
A --> C[证书颁发]
B --> D[产品配置完成]
C --> E[生成授权License]
E --> F[分发给客户]
F --> G[客户启动系统]
G --> G1[加载so文件模块]
G1 --> G2[反调试检测]
G2 --> H{检测是否已注册}
H -->|未注册| I[生成机器码]
H -->|已注册| J[验证现有授权]
I --> K[提供机器码给管理员]
K --> L[管理员根据机器码生成License]
L --> M[客户获得License文件]
M --> N[导入License激活]
J --> O{授权是否有效}
O -->|有效| P[系统正常运行]
O -->|无效| I
N --> Q[SDK验证授权]
Q --> Q1[so文件核心算法验证]
Q1 --> P
P --> P1[运行时防破解保护]
P1 --> R[使用监控]
R --> S[统计报告]
S --> A
subgraph "管理端"
A
B
C
D
E
L
S
end
subgraph "客户端"
G
G1
G2
H
I
J
K
M
N
Q
Q1
P
P1
end
subgraph "监控端"
R
end
subgraph "防破解保护"
T1[so文件加载]
T2[反调试检测]
T3[完整性校验]
T4[代码混淆]
T5[运行时保护]
end
G1 --> T1
G2 --> T2
Q1 --> T3
P --> T4
P1 --> T5
2. 管理员业务流程
2.1 产品设置流程(基础配置)
flowchart TD
A[管理员登录] --> B[进入产品管理]
B --> C[创建新产品]
C --> D[填写产品基础信息]
D --> E[配置产品版本]
E --> F[生成产品密钥对]
F --> G[配置产品策略模板]
G --> H[保存产品配置]
H --> I[产品设置完成]
subgraph "产品基础信息"
J[产品名称]
K[产品描述]
L[产品类型]
M[开发商信息]
N[产品图标]
end
subgraph "策略模板配置"
O[默认授权类型]
P[标准有效期]
Q[基础调用限制]
R[默认激活数量]
end
D --> J
D --> K
D --> L
D --> M
D --> N
G --> O
G --> P
G --> Q
G --> R
2.2 产品授权流程(License生成)
flowchart TD
A1[管理员进入授权管理] --> B1[选择已配置产品]
B1 --> C1[接收客户机器码]
C1 --> D1[验证机器码格式]
D1 --> E1[选择产品版本]
E1 --> F1[填写客户信息]
F1 --> G1[设置授权参数]
G1 --> H1[生成License内容]
H1 --> I1[嵌入机器码绑定]
I1 --> J1[私钥数字签名]
J1 --> K1[生成License文件]
K1 --> L1[验证License完整性]
L1 --> M1[分发给客户]
subgraph "客户授权信息"
N1[客户名称]
O1[联系方式]
P1[授权用途]
Q1[部署环境]
end
subgraph "授权参数设置"
R1[授权类型选择]
S1[有效期设置]
T1[激活数量限制]
U1[调用次数限制]
V1[功能权限配置]
W1[机器绑定策略]
end
F1 --> N1
F1 --> O1
F1 --> P1
F1 --> Q1
G1 --> R1
G1 --> S1
G1 --> T1
G1 --> U1
G1 --> V1
G1 --> W1
2.3 基于机器码的License生成详细流程
flowchart TD
A1[管理员接收客户机器码] --> B1[验证机器码格式]
B1 --> C1[选择对应产品]
C1 --> D1[选择产品版本]
D1 --> E1[填写客户信息]
E1 --> F1[输入客户机器码]
F1 --> G1[设置授权参数]
G1 --> H1[生成License内容]
H1 --> I1[嵌入机器码绑定]
I1 --> J1[私钥数字签名]
J1 --> K1[生成License文件]
K1 --> L1[验证License完整性]
L1 --> M1[分发给客户]
subgraph "License内容结构"
N1[产品信息]
O1[版本信息]
P1[客户信息]
Q1[机器码绑定]
R1[授权有效期]
S1[功能权限]
T1[调用次数限制]
U1[数字签名]
end
H1 --> N1
H1 --> O1
H1 --> P1
I1 --> Q1
G1 --> R1
G1 --> S1
G1 --> T1
J1 --> U1
subgraph "机器码验证逻辑"
V1[解析机器码]
W1[反向计算硬件信息]
X1[验证硬件指纹]
Y1[确认设备唯一性]
end
F1 --> V1
V1 --> W1
W1 --> X1
X1 --> Y1
2.3 完整License生成时序图
sequenceDiagram
participant Client as 客户端
participant User as 用户
participant Admin as 管理员
participant LicenseSystem as License生成系统
participant ProductDB as 产品配置库
participant Crypto as 加密模块
Client->>Client: 启动系统检测
Client->>Client: 生成机器码
Client->>User: 显示机器码
User->>Admin: 提供机器码
Admin->>LicenseSystem: 输入机器码
LicenseSystem->>LicenseSystem: 验证机器码格式
Admin->>LicenseSystem: 选择产品和版本
LicenseSystem->>ProductDB: 查询产品配置
ProductDB-->>LicenseSystem: 返回产品信息
Admin->>LicenseSystem: 设置授权参数
LicenseSystem->>LicenseSystem: 生成License内容
LicenseSystem->>LicenseSystem: 嵌入机器码绑定
LicenseSystem->>Crypto: 私钥数字签名
Crypto-->>LicenseSystem: 返回签名License
LicenseSystem-->>Admin: 生成License文件
Admin->>User: 分发License文件
User->>Client: 导入License文件
Client->>Client: 验证License有效性
Client->>Client: 系统正常启动
3. 客户端启动和激活流程
3.1 客户端启动检测流程(含防破解保护)
flowchart TD
A[客户启动系统] --> B[加载so文件模块]
B --> C[反调试检测]
C --> D{检测到调试器}
D -->|是| E[终止程序运行]
D -->|否| F[完整性校验]
F --> G{程序完整性验证}
G -->|失败| H[记录安全事件并退出]
G -->|通过| I[检测本地授权文件]
I --> J{授权文件是否存在}
J -->|存在| K[读取授权信息]
J -->|不存在| L[生成设备机器码]
K --> M[验证授权有效性]
M --> N{授权是否有效}
N -->|有效| O[系统正常启动]
N -->|无效| L
L --> P[收集设备硬件信息]
P --> Q[生成唯一机器码]
Q --> R[显示机器码给用户]
R --> S[用户提供机器码给管理员]
S --> T[等待管理员生成License]
T --> U[用户获得License文件]
U --> V[导入License文件]
V --> W[验证License有效性]
W --> X{License是否有效}
X -->|有效| Y[保存授权信息到本地]
X -->|无效| Z[显示License无效错误]
Y --> O
Z --> V
subgraph "机器码生成算法"
AA[CPU序列号]
BB[主板序列号]
CC[硬盘序列号]
DD[网卡MAC地址]
EE[SHA-256哈希]
end
subgraph "防破解保护模块"
FF[so文件加载]
GG[反调试检测]
HH[完整性校验]
II[代码混淆]
JJ[运行时保护]
end
P --> AA
P --> BB
P --> CC
P --> DD
Q --> EE
B --> FF
C --> GG
F --> HH
O --> II
O --> JJ
3.2 License验证和激活流程
flowchart TD
A[用户获得License文件] --> B[启动软件]
B --> C[检测License文件]
C --> D{License文件是否存在}
D -->|否| E[显示License导入界面]
D -->|是| F[读取License内容]
E --> G[用户选择License文件]
G --> H[导入License]
H --> F
F --> I[验证License格式]
I --> J{格式是否正确}
J -->|否| K[显示格式错误]
J -->|是| L[验证数字签名]
L --> M{签名是否有效}
M -->|否| N[显示签名无效]
M -->|是| O[生成当前设备机器码]
O --> P[提取License中绑定的机器码]
P --> Q[比对机器码]
Q --> R{机器码是否匹配}
R -->|否| S[显示设备不匹配错误]
R -->|是| T[检查License有效期]
T --> U{是否在有效期内}
U -->|否| V[显示License过期]
U -->|是| W[检查功能权限]
W --> X[保存授权信息到本地]
X --> Y[激活成功]
Y --> Z[软件正常运行]
K --> E
N --> E
S --> E
V --> E
subgraph "License验证要素"
AA[数字签名验证]
BB[机器码绑定验证]
CC[有效期验证]
DD[功能权限验证]
EE[调用次数验证]
end
L --> AA
Q --> BB
T --> CC
W --> DD
Z --> EE
4. SDK集成和验证流程
4.1 SDK集成流程(含防破解保护)
flowchart LR
A[开发者下载SDK] --> B[集成到项目]
B --> C[配置公钥]
C --> D[集成so文件]
D --> E[代码混淆处理]
E --> F[初始化SDK]
F --> G[调用授权验证API]
G --> H[so文件核心算法验证]
H --> I{验证结果}
I -->|成功| J[获取授权信息]
I -->|失败| K[处理授权失败]
J --> L[执行业务逻辑]
K --> M[显示授权错误]
subgraph "SDK配置"
N[公钥文件]
O[产品ID]
P[版本信息]
Q[回调配置]
R[so文件路径]
end
subgraph "防破解保护"
S[核心算法so封装]
T[关键代码混淆]
U[反调试检测]
V[完整性校验]
end
C --> N
C --> O
C --> P
C --> Q
D --> R
D --> S
E --> T
H --> U
H --> V
4.2 运行时验证流程(含防破解检测)
sequenceDiagram
participant App as 应用程序
participant SDK as 授权SDK
participant SO as so文件模块
participant Local as 本地存储
participant Server as 授权服务器
App->>SDK: 调用授权验证
SDK->>SO: 调用so文件核心算法
SO->>SO: 反调试检测
SO->>SO: 完整性校验
SO-->>SDK: 返回安全检测结果
alt 检测到破解行为
SDK->>SDK: 记录安全事件
SDK-->>App: 返回授权失败
App->>App: 终止程序运行
else 安全检测通过
SDK->>Local: 读取本地授权信息
alt 在线模式
SDK->>Server: 发送验证请求
Server-->>SDK: 返回验证结果
SDK->>Local: 更新本地缓存
else 离线模式
SDK->>SDK: 验证本地证书
SDK->>SDK: 检查机器码匹配
end
SDK-->>App: 返回授权状态
alt 授权有效
App->>SO: 调用受保护功能
SO->>SO: 执行混淆后的业务逻辑
App->>SDK: 记录API调用
SDK->>Local: 更新调用计数
else 授权无效
App->>App: 限制功能访问
App->>App: 显示授权提示
end
end
5. 系统监控和统计流程
5.1 实时监控流程
flowchart TD
A[监控服务启动] --> B[收集系统数据]
B --> C[激活状态监控]
B --> D[使用统计收集]
B --> E[异常事件检测]
C --> F[在线用户统计]
C --> G[激活失败监控]
D --> H[API调用统计]
D --> I[功能使用分析]
E --> J[异常激活检测]
E --> K[盗版行为识别]
F --> L[实时仪表盘]
G --> L
H --> L
I --> L
J --> M[告警通知]
K --> M
L --> N[管理员查看]
M --> O[处理异常]
5.2 统计报告生成流程
flowchart LR
A[定时任务触发] --> B[数据聚合]
B --> C[激活统计]
B --> D[使用统计]
B --> E[收入统计]
C --> F[按产品统计]
C --> G[按时间统计]
C --> H[按地区统计]
D --> I[功能使用率]
D --> J[用户活跃度]
E --> K[授权收入]
E --> L[续费统计]
F --> M[生成报告]
G --> M
H --> M
I --> M
J --> M
K --> M
L --> M
M --> N[报告存储]
N --> O[邮件发送]
N --> P[仪表盘展示]
6. 异常处理流程
6.1 激活异常处理(含防破解检测)
flowchart TD
A[检测到异常] --> B{异常类型}
B -->|激活码无效| C[验证激活码格式]
B -->|机器码不匹配| D[检查机器码变化]
B -->|超出激活次数| E[检查激活限制]
B -->|网络连接失败| F[启用离线模式]
B -->|证书验证失败| G[检查证书完整性]
B -->|检测到调试器| H[反调试保护]
B -->|程序完整性异常| I[完整性校验失败]
B -->|so文件异常| J[so文件保护]
B -->|代码注入检测| K[代码注入防护]
C --> L[记录异常日志]
D --> M[更新机器码绑定]
E --> N[联系管理员]
F --> O[使用缓存授权]
G --> P[重新导入证书]
H --> Q[立即终止程序]
I --> R[记录安全事件并退出]
J --> S[重新加载so文件]
K --> T[阻断恶意代码]
L --> U[返回错误信息]
M --> V[重新激活]
N --> W[人工处理]
O --> X[临时授权]
P --> Y[重新验证]
Q --> Z[安全日志记录]
R --> AA[安全告警]
S --> BB[验证so文件完整性]
T --> CC[增强安全监控]
U --> DD[用户处理]
V --> EE[激活成功]
W --> FF[问题解决]
X --> GG[正常使用]
Y --> HH[验证结果]
Z --> II[管理员通知]
AA --> II
BB --> JJ[so文件状态]
CC --> KK[安全策略更新]
subgraph "防破解异常类型"
LL[调试器检测]
MM[完整性校验失败]
NN[so文件篡改]
OO[代码注入攻击]
PP[内存修改检测]
QQ[API Hook检测]
end
H --> LL
I --> MM
J --> NN
K --> OO
K --> PP
K --> QQ
6.2 安全异常处理(含防破解响应)
sequenceDiagram
participant Monitor as 监控系统
participant Security as 安全模块
participant AntiCrack as 防破解模块
participant SO as so文件模块
participant Admin as 管理员
participant User as 用户
Monitor->>Security: 检测到异常行为
Security->>AntiCrack: 启动防破解检测
AntiCrack->>SO: 调用so文件验证
SO->>SO: 反调试检测
SO->>SO: 完整性校验
SO-->>AntiCrack: 返回检测结果
AntiCrack-->>Security: 返回威胁评估
Security->>Security: 分析威胁级别
alt 破解行为检测
Security->>Admin: 立即安全告警
Security->>User: 立即终止程序
AntiCrack->>AntiCrack: 记录破解尝试
Admin->>Security: 确认安全措施
Security->>User: 执行防护策略
else 高风险威胁
Security->>Admin: 立即告警通知
Security->>User: 暂停授权服务
Admin->>Security: 确认处理方案
Security->>User: 执行安全措施
else 中等风险
Security->>Admin: 发送告警邮件
Security->>Security: 增强监控频率
AntiCrack->>AntiCrack: 提升检测级别
Admin->>Security: 查看详细信息
else 低风险
Security->>Security: 记录安全日志
Security->>Monitor: 继续监控
end
Security->>Security: 更新安全策略
AntiCrack->>AntiCrack: 更新防破解规则
Security-->>Monitor: 返回处理结果
7. 流程关联关系图
graph TB
subgraph "产品配置层"
A1[产品基础设置] --> A2[版本管理]
A2 --> A3[策略模板配置]
end
subgraph "产品授权层"
B1[接收客户机器码] --> B2[授权参数设置]
B2 --> B3[License生成]
B3 --> B4[License分发]
end
subgraph "客户端层"
C1[系统启动检测] --> C2[机器码生成]
C2 --> C3[License导入]
C3 --> C4[授权验证]
C4 --> C5[SDK集成]
end
subgraph "监控管理层"
D1[使用监控] --> D2[统计分析]
D2 --> D3[异常处理]
end
subgraph "安全层"
E1[异常检测] --> E2[威胁分析]
E2 --> E3[安全响应]
E3 --> E4[策略更新]
E5[防破解保护] --> E6[so文件验证]
E6 --> E7[代码混淆]
E7 --> E8[反调试检测]
E8 --> E1
end
A3 --> B2
C2 --> B1
B3 --> C3
C5 --> D1
C4 --> D1
D1 --> E1
D3 --> B2
E4 --> A3
classDef config fill:#e1f5fe
classDef cert fill:#f3e5f5
classDef user fill:#e8f5e8
classDef monitor fill:#fff3e0
classDef security fill:#ffebee
class A1,A2,A3 config
class B1,B2,B3 cert
class C1,C2,C3 user
class D1,D2,D3 monitor
class E1,E2,E3,E4 security
7.2 流程关联说明
五层架构设计
- 产品配置层:负责产品基础信息设置、版本管理和策略模板配置
- 产品授权层:接收客户机器码,设置具体授权参数,生成和分发License文件
- 客户端层:处理系统启动检测、机器码生成、License导入和授权验证
- 监控管理层:实现使用监控、统计分析和异常处理
- 安全层:异常检测、威胁分析和安全响应
关键关联点
- 产品配置 → 产品授权:产品基础配置为授权提供产品信息和策略模板
- 机器码生成 → 产品授权:客户端生成的机器码是License绑定的核心依据
- License分发 → 客户端导入:License文件是客户端激活的必要条件
- 授权验证 → 使用监控:验证结果为监控提供实时数据
- 异常处理 → 产品授权:异常反馈驱动License重新生成或调整
核心流程特点
- 机器码驱动:整个授权流程以机器码为核心,确保设备绑定
- 离线优先:客户端可完全离线运行,不依赖网络连接
- 流程分离:产品设置与产品授权为两个完全独立的业务流程
- 职责清晰:产品设置负责基础配置,产品授权负责具体License生成
- 数据关联:产品授权依赖产品设置的基础配置和客户机器码
- 权限分离:不同角色可分别管理产品配置和授权颁发
- 模板化:产品设置提供策略模板,产品授权基于模板生成具体授权
- 可扩展性:支持新增产品类型和授权生成模式
- 容错性:单一流程故障不影响其他流程正常运行
8. 关键决策点说明
8.1 授权模式选择决策
场景 | 推荐模式 | 原因 |
---|---|---|
企业内网环境 | 离线授权 | 网络限制,安全要求高 |
个人用户软件 | 在线授权 | 便于管理,防盗版效果好 |
混合办公环境 | 混合模式 | 灵活适应不同网络环境 |
高安全要求 | 离线授权 | 避免网络攻击风险 |
需要实时控制 | 在线授权 | 支持远程撤销和监控 |
8.2 异常处理优先级
异常类型 | 优先级 | 处理时间 | 处理方式 |
---|---|---|---|
破解行为检测 | 极高 | 立即 | 立即终止+安全告警+记录证据 |
调试器检测 | 极高 | 立即 | 立即退出+安全日志+管理员通知 |
程序完整性异常 | 极高 | 立即 | 程序终止+安全事件记录 |
so文件异常 | 高 | 立即 | 重新验证+完整性检查 |
代码注入检测 | 高 | 立即 | 阻断恶意代码+增强监控 |
安全威胁 | 高 | 立即 | 自动阻断+人工介入 |
激活失败 | 中 | 1小时内 | 自动重试+技术支持 |
网络异常 | 中 | 自动 | 离线模式+缓存授权 |
证书过期 | 低 | 24小时内 | 提醒更新+宽限期 |
统计异常 | 低 | 定期 | 数据修复+报告更新 |
9. 流程优化建议
9.1 性能优化
- 缓存策略: 本地缓存授权状态,减少网络请求
- 批量处理: 统计数据批量上报,提高效率
- 异步处理: 非关键操作异步执行,提升响应速度
9.2 用户体验优化
- 自动重试: 网络异常时自动重试激活
- 离线备份: 提供离线授权备用方案
- 友好提示: 清晰的错误信息和解决建议
9.3 安全性增强(含防破解保护)
- 多重验证: 结合多种验证方式提高安全性
- 动态密钥: 定期更新加密密钥
- 行为分析: 基于用户行为检测异常
- so文件保护: 核心算法封装在so文件中,提高破解难度
- 代码混淆: 对关键代码进行混淆处理,增加逆向工程难度
- 反调试检测: 实时检测调试器和分析工具,防止动态分析
- 完整性校验: 程序启动时验证文件完整性,防止篡改
- 运行时保护: 在程序运行过程中持续进行安全检测
- API Hook检测: 检测恶意API钩子,防止功能劫持
- 内存保护: 检测内存修改行为,防止运行时破解
这个整体业务流程图涵盖了软件授权管理系统的所有关键流程,清晰展示了各个环节之间的关联关系和决策点,为系统的开发、部署和运维提供了完整的指导。