清乐云 Pro
首页 进入管理后台

清乐云 · 官方文档

企业级网络授权 / 卡密分销 / 代码防破解一体化平台 · 平台已上线 · 5 种 SDK · 无需自备服务器

你只需要做一件事:接入。 平台服务端已由运营方部署完成并持续维护 —— 你无需购买服务器、无需安装任何服务端程序, 注册账号后即可在管理后台创建应用、生成卡密,并下载 SDK 接入你自己的软件。

1. 产品介绍#

清乐云 是一套"网络授权 + 反破解 + 卡密分销 + 云端下发"一体化验证平台。你的软件(PC / 移动 / 工具 / 游戏辅助等)接入后即可获得:

平台角色

角色说明
平台运营方部署并维护平台服务端(服务器 / 数据库 / 安全 / 备份),你无需接触
平台用户(你)注册账号 → 创建应用 → 生成卡密 → 下载 SDK 接入自己的软件 → 在后台管理授权
代理商(可选)你可以开设下级代理账号,让他们自行生成卡密、代售代发(代理拥有独立门户)
最终用户你软件的使用者,购买卡密后在软件内激活使用
需要准备的只有 4 样东西 · ① 平台账号(向运营方注册)② 你的软件本体 ③ 服务器地址(运营方提供)④ 你软件使用的语言对应 SDK。

2. 快速开始#

接入只有 3 步:注册账号 → 创建应用 → 客户端调 SDK

第零步 · 获取平台信息

  1. 向平台运营方注册账号(或使用运营方为你开通的账号登录 管理后台
  2. 记录运营方提供的 服务器地址(形如 https://auth.你的运营方域名.comhttp://1.2.3.4:8000

第一步 · 创建应用

  1. 进入 管理后台 → 应用管理,点「新增应用」
  2. 填名称、描述、版本号;机器码/多开/加密选项保持默认即可
  3. 保存后记录 AppKey(客户端 SDK 必填参数)

第二步 · 生成一批卡密

  1. 进入 管理后台 → 卡密管理,点「批量生成」
  2. 选应用 → 类型(例:时长卡 · 30 天 · 5 张)→ 生成
  3. 弹窗点「导出本批次」拿到卡号 CSV,用于售卖或代理分发

第三步 · 客户端接入(改 3 行即可运行)

下面的示例中,服务器地址APP_KEY 替换为你的实际值(服务器地址问运营方,AppKey 在后台应用管理里看)。
pythonfrom qingleyun import NetAuthClient
cli = NetAuthClient("https://服务器地址", "APP_KEY", "1.0.0")
cli.activate("CARD-CODE")   # 第一次输入卡密激活
cli.login()                  # 之后每次启动自动登录
cli.start_heartbeat()        # 后台线程心跳 (默认 60s)
typescriptimport { NetAuthClient } from './qingleyun.mjs'
const cli = new NetAuthClient({ baseUrl: 'https://服务器地址', appKey: 'APP_KEY', clientVer: '1.0.0' })
await cli.activate('CARD-CODE')
await cli.login()
cli.startHeartbeat()
csharpusing var cli = new NetAuthClient("https://服务器地址", "APP_KEY", "1.0.0");
await cli.ActivateAsync("CARD-CODE");
await cli.LoginAsync();
cli.StartHeartbeat();
cppNetAuthClient::Options opt;
opt.base_url   = "https://服务器地址";
opt.app_key    = "APP_KEY";
opt.client_ver = "1.0.0";
NetAuthClient cli(opt);
cli.activate("CARD-CODE");
cli.login();
cli.start_heartbeat();
e.子程序 取SERVER, 文本型
    返回 ("https://服务器地址")
.子程序 取APPKEY, 文本型
    返回 ("APP_KEY")
.子程序 取VERSION, 文本型
    返回 ("1.0.0")
如果真 (清乐云.激活卡密 ("CARD-CODE") = )
    清乐云.登录 ()
    清乐云.启动心跳 ()
如果真结束
SDK 下载管理后台 → SDK 下载;每个 SDK 包含源码 + Demo + 离线签名一致性自检脚本 + README。 Demo 文件顶部只有 SERVER / APP_KEY / VERSION 三个常量,改完即跑。

3. 管理端功能#

侧栏按 概览 / 经营 / 发布 / 系统 4 组呈现;超管 标记的仅平台运营方可见。所有高危操作会二次密码 sudo

3.1 概览

3.2 经营

3.3 发布

3.4 系统

4. 代理商门户#

代理商有独立门户(路由前缀 /agent),由你(平台用户 / 运营方)开设下级代理账号后,代理自行登录使用。入口:代理商登录

页面能干什么
仪表盘余额 / 历史充值 / 消费 / 生卡总数;权限套餐摘要;近 30 天销售曲线;最近流水与生卡
生成卡密选授权应用 → 时长/次数/永久 → 预设时长 → 面额(推荐价一键应用)→ 扣余额生成;受套餐限制(卡类型、日配额、单次上限、允许 app、最低售价系数)
我的卡密只看自己生成的;高级筛选;复制卡号;若被授权可自助冻结/解冻
下级代理创建 / 管理自己的下级代理,查看下级 QQ / 备注,给下级充值余额
下级激活查询直接下级代理生成的卡密激活记录(可按下级、应用、卡号、激活时间筛选)
资金流水充值 / 生卡 / 佣金 / 退款 / 调整等流水按类型筛选
提现发起提现(支付宝 / 微信 / 银行卡)→ 冻结对应余额;查状态;等审批打款

5. REST API#

Base URLhttps://服务器地址/api(服务器地址由运营方提供)。所有 POST 请求 body 为 JSON,Content-Type 必须 application/json

绝大多数情况下你不需要自己拼接口 —— 直接使用官方 SDK 即可,签名、加密、心跳都已封装好。 本节供需要手写协议的客户端(自定义语言 / 逆向工程)参考。

5.1 客户端签名规则

所有客户端 POST 必带以下 header,服务端 HMAC-SHA256 校验(SDK 已自动处理):

Header说明
X-App-Key应用 AppKey,管理后台可看
X-TimestampUnix 秒,服务端容忍 ±300s
X-Nonce16 字节随机 hex;10 分钟内不能重放
X-SignHMAC_SHA256(app_key, canonical),canonical = 按字典序拼接 app_key&timestamp&nonce&body_hash,hex 小写

5.2 客户端接口 /api/client/*

MethodEndpoint说明
GET /info 应用元信息 + RSA 公钥(验签用)
GET /notice 启动公告(Markdown)
GET /version 检查更新 / 拿最新版直链
GET /variables 远程变量(带 version 增量)
GET /build/:id/download加壳产物下载
GET /ws WebSocket 长连接(见 §6
POST /handshake X2:RSA-OAEP 换 AES session
POST /integrity X3:上报 EXE 完整性 hash
POST /free_trial 免费试用(1h 临时 session,同机 24h 冷却)
POST /activate 卡密激活
POST /register 账号自助注册(应用开启注册码通道后可用)
POST /login 账号登录,拿 session token
POST /heartbeat 心跳(默认 60s,超时自动判离线)
POST /logout 退出,token 立即失效
POST /rebind 客户端自助换机器码(受 rebind_max_count 限制)
POST /check 通用授权判定(DRM)
POST /resource/get 受保护数据资源下发(AES 一次性 key)
POST /codeblock/get CloudGate μVM 字节码下发
POST /codeblock/hostcallCloudGate Tier B 服务端计算
POST /cloud/compute 云端计算(把关键算法放服务端执行)

5.3 管理端接口 /api/admin/*

公开POST /auth/loginPOST /auth/refreshPOST /auth/register-send-codePOST /auth/register-verifyGET /tos

需登录(按模块,仅列核心):

模块Endpoint 示例
认证 /auth/me · /auth/logout · /auth/change-password · /auth/totp/* · /auth/sudo
服务条款 /tos/status · /tos/accept
应用 /apps CRUD · /apps/:id/rotate-key
远程变量 /apps/:id/variables CRUD
受保护资源 /apps/:id/resources CRUD(含 type=xvm)
卡密 /cards · /cards/generate · /cards/import · /cards/extend · /cards/batch/freeze · /cards/:id/freeze
黑名单 /blacklist CRUD · 支持 kick_online / freeze_cards 联动
在线 /online · /online/kick · /online/user/:user_id/kick
代理 超管/agents CRUD · /agents/:id/recharge · /agents/:id/permissions
提现 超管/withdrawals · /withdrawals/:id/{approve,reject,pay}
版本 / 产物 /versions CRUD · /builds 上传/签发
公告 / 审计 /notices · /audit
SDK / Tools /sdks · /tools/list
导出 sudo/export/cards · /export/users · /export/agents
超管 超管/admins/* · /admins/:id/impersonate · /tenants/* · /system/health

5.4 代理商接口 /api/agent/*

MethodEndpoint说明
POST/auth/login · /auth/refresh代理登录
GET /me · /apps · /recommended-prices身份 + 授权 app + 推荐价
GET /cards · /transactions · /withdrawals只看自己名下
GET /sub-agents · /sub-agent-activations下级代理列表 / 下级激活记录
GET /stats/overview · /stats/daily仪表盘数据源
POST/cards/generate扣余额生成
POST/cards/:id/{freeze,unfreeze}can_freeze_own_cards 权限
POST/sub-agents 及下级操作创建下级 / 充值 / 状态 / 重置密码
POST/withdrawals提交提现

运维接口(归平台运营方管理):GET /health 健康检查 · GET /metrics 监控指标。

6. WebSocket 实时通道#

客户端 GET /api/client/ws?token=<session_token> 建立长连接,用于(SDK 已内置,可选开启):

心跳:客户端每 30s 发 {"type":"ping"},服务端回 {"type":"pong"};90s 无响应视为断开重连。

7. SDK 使用#

5 套 SDK 协议层与服务端 字节级一致,全部零第三方依赖、可一站式编译。每种 SDK 提供:源码 + Demo + 离线签名一致性自检 + README。管理后台 → SDK 下载 一键打包。

语言适用场景跑 Demo
Python跨平台 / 工具脚本 / 服务端集成 / 快速验证python demo.py
TypeScriptElectron 桌面应用 / Node 后端 / Bun / Denonode demo.mjs
C#Windows 桌面 WPF / WinForms / Unity / .NET 后端dotnet run --project Demo
C++Windows 原生客户端(反破解首选)/ 小体积单文件 EXEcl /std:c++17 demo.cpp
易语言小白用户 / 个人作者小工具易语言 IDE 编译

Python

单文件 qingleyun.py;仅标准库(urllib / hashlib / hmac)。

pythonfrom qingleyun import NetAuthClient, AuthError, NetworkError
cli = NetAuthClient("https://服务器地址", "APP_KEY", "1.0.0")
try:
    cli.activate("CARD-CODE")   # 首次激活;已激活的直接 login
    cli.login()
    cli.start_heartbeat(interval=60)
    var = cli.get_variables()["discount_pct"]  # 远程变量
    data = cli.get_resource("vip_config")      # DRM 数据
except AuthError as e:
    print("卡密无效或过期", e)
except NetworkError as e:
    print("网络失败", e)

TypeScript / JavaScript

支持 Node ≥ 18;qingleyun.ts(源码)+ qingleyun.mjs(编译产物);含 codegate.ts CloudGate 支持。

typescriptimport { NetAuthClient } from './qingleyun.mjs'
const cli = new NetAuthClient({ baseUrl: 'https://服务器地址', appKey: 'APP_KEY', clientVer: '1.0.0' })
await cli.activate('CARD-CODE')
await cli.login()
cli.startHeartbeat()
const { discountPct } = await cli.getVariables()

C# / .NET

单文件 QingleyunClient.cs;.NET 6+;只依赖 BCL;含 CodeGate.cs 与 WinForms / WPF / Console Demo。

csharpusing var cli = new NetAuthClient("https://服务器地址", "APP_KEY", "1.0.0");
try
{
    await cli.ActivateAsync("CARD-CODE");
    await cli.LoginAsync();
    cli.StartHeartbeat();
}
catch (AuthException ex) { Console.WriteLine($"卡密无效: {ex.Message}"); }

C++

Header-only qingleyun.hpp;Windows Only(Vista+);只依赖 WinHTTP + BCrypt;含 xvm.hpp(μVM 解释器)。

cpp#include "qingleyun.hpp"
NetAuthClient::Options opt;
opt.base_url   = "https://服务器地址";
opt.app_key    = "APP_KEY";
opt.client_ver = "1.0.0";
NetAuthClient cli(opt);
try {
    cli.activate("CARD-CODE");
    cli.login();
    cli.start_heartbeat();
} catch (const qly::AuthError& e) {
    MessageBoxA(nullptr, e.what(), "授权失败", MB_ICONERROR);
}

易语言

提供完整可复制代码 + demo;仅易语言核心支持库;无第三方依赖。

e.子程序 取SERVER, 文本型
    返回 ("https://服务器地址")
.子程序 取APPKEY, 文本型
    返回 ("APP_KEY")
.子程序 取VERSION, 文本型
    返回 ("1.0.0")
如果真 (清乐云.激活卡密 ("CARD-CODE") = )
    清乐云.登录 ()
    清乐云.启动心跳 ()
如果真结束

SDK 安全要点(全 5 端通用)

8. 加壳工具(PackerX32)#

官方工具包提供两条加壳路线,从 管理后台 → 工具下载 获取 zip 后本地运行(纯客户端工具,不需要服务器)。

方案可执行文件定位
pe_patcher(推荐生产)patcher.exe注入 .qly 节 + 运行时 DLL;可勾选 VMProtect 二次加壳;支持 X3 完整性预生成
PackerX32 经典packer.exe + stub.exe把目标 EXE 嵌入 stub RCDATA;运行时先弹卡密,再解压启动

加壳流程(pe_patcher)

  1. 解压 zip,双击 patcher.exe(qly_runtime*.dll / vmp 目录须同级)
  2. 首次输入平台账号密码(用你注册的后台账号);勾「记住本机」加密保存本地
  3. 选目标 EXE → 自动识别 x86/x64 → 选 AppKey、客户端版本、安全 flags(反调试 / 反 Hook / 完整性 / 字符串混淆)
  4. 点「加壳」→ 输出 原名_qly.exe
  5. 可勾 VMProtect 双层(轻度 / 标准 / 极度 preset 或自定义 .vmp
  6. 加壳完成后可算 X3 expected hash 写入 sidecar,供管理端 应用管理 一键 promote
CLI 支持patcher.exe --input app.exe --appkey AK_XXX --version 1.0.0 --sec-flags 0x07 --vmp

安全选项 (X3)

flag能力命中后
0x01反调试(5 层)ExitProcess(0xDEAD0001)
0x02反 Hook(12 关键 API)ExitProcess(0xDEAD0002)
0x04完整性校验ExitProcess(0xDEAD0003)
0x08字符串混淆
VMProtect_Con.exe 是第三方商用软件,本包附带仅供测试;生产请购买正版授权(vmpsoft.com)。

9. CloudGate 代码保护#

CloudGate 把 1-3 个关键函数编译成 μVM 字节码(XVM) 存服务端,客户端 CodeGate.invoke(name, args) 凭有效授权拉取 → 内存里解释执行 → 用完清零。反破解者反编译本地二进制看不到这段逻辑,无授权拿不到字节码。

与普通 DRM 的区别

特性受保护资源(DRM 数据)CloudGate(代码保护)
保护对象 字符串 / JSON / binary 代码逻辑
接口 POST /resource/getPOST /codeblock/get
执行位置 客户端拿明文使用 客户端 μVM 解释;Tier B 关键步骤在服务端
抗静态逆向 只能防抓包 逻辑不在本地二进制

使用步骤

  1. 进入 XVM 编译器,用类 C 高级语言或 XVM 汇编写核心函数
  2. 点「编译」→「测试运行」验证结果
  3. 点「保存为受保护资源」,选目标应用 + 资源名 + 访问权限(任意登录 / 已激活 / VIP)
  4. 应用管理 打开 CloudGate 代码块下发 开关
  5. 客户端 SDK 里调 CodeGate.invoke("license_gate", [seed])

两档模式

10. 安全体系#

平台采用 多层纵深防御:从传输层到应用层到客户端二进制到代码逻辑,逐层加固。下面这些能力都已内置,你无需任何配置即可享受:

机制作用
传输 HTTPS + TLS 加密链路防中间人(由运营方配置)
X0 HMAC-SHA256 请求签名 + Nonce 防重放 防篡改、防重放、防伪造客户端
X1 RSA 响应签名(X-Resp-Sign 客户端用 App 公钥验签,防伪造服务端响应
X2 应用层 Body 加密(RSA-OAEP 握手 + AES-256-GCM)抓包也看不到明文(App 级开关)
X3 加壳反调试 / 反 Hook / 完整性 hash 客户端二进制反破解(加壳时勾选)
业务 机器码黑名单(3 级 severity) 拉黑破解者机器;可踢线 + 冻卡
逻辑 CloudGate μVM 字节码 + Tier B 关键函数不在本地二进制里(App 级开关)

平台侧安全(运营方负责,你可放心)

11. 常见问题#

我需要购买服务器吗?

不需要。 平台服务端已由运营方部署完成,你只需要注册账号、创建应用、下载 SDK 接入你的软件即可。服务器 / 数据库 / 升级 / 备份全部由运营方负责。

接入需要多长时间?

正常 30 分钟内。SDK 是单文件(或 header-only),Demo 顶部只有 SERVER / APP_KEY / VERSION 三个常量,改完即可运行;再替换成你的卡密激活逻辑即可。

客户换电脑了怎么办?

三条路: 应用允许「客户端自助换绑」,客户端调 /rebind(扣配额); 你在 卡密管理 里点该卡「换绑机器码」(强制换绑不扣次数); 在应用配置里放宽 rebind_max_count

怎么防止软件被破解?

五层组合拳: 加壳勾选反调试 + 反 Hook + 完整性(X3); 上 VMP 双层; 开 X2 加密通道; 核心算法搬到 CloudGate; 及时把发现的破解机器加黑名单。任何单层都不是银弹,堆叠才有威慑力。

调试器检测触发后用户看到啥?

进程被 ExitProcess(0xDEAD000X) 静默结束,不弹窗。0xDEAD0001=调试器 / 0xDEAD0002=Hook / 0xDEAD0003=完整性。排查建议:让用户关杀软 / 关 Wireshark / 关 Fiddler 后重试。

能不能让用户在线买卡?

系统本身不含收银台。你可以: 自己开代理门户,让下级代理买卡后代客户激活(代理商登录); 配合微信/支付宝收款 + 发卡平台,自动发卡后客户在你的软件里激活即可。

远程变量更新客户端要等多久?

接了 WebSocket 的客户端 即时收到 var_update 推送;未接 WS 的下次心跳(默认 60s)会带 version 增量拉取。

能不能强制下架某版本?

可以。版本管理 → 找到那版本 → 点「停用」;下次客户端 GET /version 会自动回退到上一个可用版本。

X2 应用层加密开了之后老 SDK 客户端会不会挂?

会。X2 开启前请确认所有客户端都升级到支持 /handshake 的版本。建议先灰度:新版 SDK 发布 → 观察 30 天 → 后台开 X2。

我的数据安全吗?

平台出故障了找谁?

平台由运营方 7×24 维护。遇到无法登录、接口异常、数据疑似丢失等问题,直接联系运营方(见 平台服务与支持),运营方会在服务端排查(健康检查 / 日志 / 备份恢复)。

12. 平台服务与支持#

平台服务说明

项目说明
平台状态已上线 · 由运营方托管维护
服务器地址向运营方获取(SDK 中 SERVER 常量的值)
账号开通联系运营方注册平台账号(邮箱验证码注册)
功能范围本平台为多租户系统:你的账号管理你的应用与数据;运营方账号管理全平台
服务保障平台稳定性 / 数据备份 / 安全加固 / 版本升级由运营方负责;故障请及时反馈

联系我们

技术咨询 / 账号开通 / 功能建议 / 故障反馈:

QQ
2993253189

© 清乐云 · 官方文档 v3.0 · 最后更新