atlassecuritysolutions/AtlasAuthentication-CPP
GitHub: atlassecuritysolutions/AtlasAuthentication-CPP
一款为 Windows x64 C++ 应用提供硬件绑定许可证认证与运行时完整性保护的商业 SDK。
Stars: 1 | Forks: 0
# Atlas Authentication — C++ SDK
[atlassecurity.site](https://atlassecurity.site) · [文档](https://atlassecurity.site/docs) · [套餐](https://atlassecurity.site/plans) · [Discord](https://discord.gg/EG5dmpFaCF) · [mail@atlassecurity.site](mailto:mail@atlassecurity.site)
为 Windows x64 C++ 应用程序提供的硬件绑定许可证认证和软件保护。只需调用两次 —— `Atlas::Startup()` 和 `Atlas::Login(license)` —— 您的二进制文件即可完成认证,获得持续保护,并可通过 Web 控制台实时终止运行。
本仓库包含 SDK 头文件、预编译的静态库,以及两个可运行的示例:一个控制台应用和一个原生 DirectX 11 / Dear ImGui GUI。
## 目录
- [包含的内容](#what-ships-in-the-box)
- [仓库结构](#repo-layout)
- [前置条件](#prerequisites)
- [获取账号、应用和许可证](#get-an-account-an-app-a-license)
- [控制台示例](#console-example)
- [ImGui 示例](#imgui-example)
- [集成到您的项目](#integrate-into-your-project)
- [API 参考](#api-reference)
- [`Login` 之后会发生什么](#what-happens-after-login)
- [API 密钥模型](#the-api-key-model)
- [故障排除](#troubleshooting)
- [定价](#pricing)
- [支持](#support)
- [法律声明](#legal)
## 包含的内容
- 每次连接均包含临时的 X25519 握手和 Ed25519 签名的服务器回复 —— 从结构上拒绝服务器冒充。
- 带有轮换 token 的 5 秒心跳,每 15 秒检查 `.text` 和 IAT,对 `ws2_32.recv/send/connect` 进行持续的 inline-hook 扫描。
- 调试器、硬件断点、注入模块和手动映射(manual-map)检测。
- 在由硬件性能计数器驱动的两个线程上运行相互监视的看门狗。
- 一旦完整性校验失败,进程将通过内核 `__fastfail()` 终止 —— 没有对话框,没有异常处理程序,没有任何可捕获的信息。
## 仓库结构
```
C++ Integration/
├── shared/
│ ├── Atlas.h the SDK header — the API you call
│ └── Atlas Auth.lib the static library — you link against this
├── Console Example/
│ ├── Atlas Auth Example.cpp ~60 lines: Startup, Login, print session
│ ├── Atlas Auth Example.sln
│ └── Atlas Auth Example.vcxproj
└── ImGui Example/
├── README.md Dear ImGui vendoring step
├── Atlas Auth ImGui Example.cpp native GUI login → welcome flow
├── Atlas Auth ImGui Example.sln
├── Atlas Auth ImGui Example.vcxproj
└── imgui/ ← you vendor Dear ImGui here (one-time)
```
`Atlas Auth.lib` 已经预编译并包含在仓库中。您无需重新编译 SDK 即可使用它。
## 前置条件
| | |
|---|---|
| Windows 10 或 11 (x64) | Atlas 仅支持 Windows x64。不支持 Linux、macOS 和 ARM。 |
| [Visual Studio 2022](https://visualstudio.microsoft.com/vs/community/) | 使用社区版即可。 |
| **使用 C++ 的桌面开发** 工作负载 | 将安装 MSVC v143、Windows SDK 和 MSBuild。 |
| Atlas 账号 | [atlassecurity.site](https://atlassecurity.site) — 免费。 |
无需 Boost、vcpkg、CMake 或可再发行组件。`Atlas Auth.lib` 进行静态链接;生成的 `.exe` 可以在全新安装的 Windows 上直接运行。
## 获取账号、应用和许可证
1. 在 [atlassecurity.site](https://atlassecurity.site) 注册,验证您的电子邮件。
2. **Applications → New application** — 随意命名,用户永远不会看到它。复制它提供给您的 **API key**。
3. **Licenses → Generate** — 选择有效期(Weekly / Monthly / Lifetime / 自定义)、级别(`1` 代表基础版,`2+` 代表分层版),以及可选的备注。复制密钥 — 格式为 `ATLAS-XXXXX-XXXXX`。
免费层级包含 3 个应用程序、总共 300 个许可证,每个应用可上传 3 个文件。
## 控制台示例
最小可行性集成。阅读一次您就会了解 SDK。
1. 打开 [`shared/Atlas.h`](shared/Atlas.h)。将 `"YOUR_API_KEY"` 替换为您的密钥。保存。
2. 打开 [`Console Example/Atlas Auth Example.sln`](Console%20Example/)。
3. 将配置设置为 **Release · x64**。(32 位无法链接。)
4. 构建:`Ctrl+Shift+B`。
5. 运行:**`Ctrl+F5`**,而不是 `F5`。`F5` 会附加 VS 调试器,反调试看门狗会拒绝此操作。
在提示时粘贴您的许可证密钥。成功后:
```
--- User Information ---
License: ATLAS-A9F2K-4RMXM
Expiry: 15-08-2026 14:32:00
IP: 45.11.42.187
HWID: Atlas-4A9C...E1B2
Level: 1
Note:
Active Users: 1
Total Users: 3
```
打开控制面板的 **Logs** 标签 — 您的登录信息会显示在那里,包含 IP、HWID、延迟和结果 `ALLOW`。尝试 **Sessions → Kick** — 示例会在 5 秒内通过 `__fastfail` 终止。这就是整个循环。
整个示例位于 [`Console Example/Atlas Auth Example.cpp`](Console%20Example/Atlas%20Auth%20Example.cpp)。
## ImGui 示例
原生 Windows GUI:双面板登录 -> 欢迎流程,冷峻的钢铁设计风格,Segoe UI,DirectX 11。底层使用相同的 SDK,只是外壳不同。
Dear ImGui 并未包含在本仓库中(MIT 许可证,上游维护)。请自行引入一次:
```
cd "ImGui Example"
git submodule add https://github.com/ocornut/imgui.git imgui
git submodule update --init --recursive
```
或者从 [github.com/ocornut/imgui/releases](https://github.com/ocornut/imgui/releases) 下载源代码压缩包,并将其放入 `ImGui Example/imgui/` 目录中,使目录树如下所示:
```
ImGui Example/imgui/
├── imgui.cpp, imgui_draw.cpp, imgui_tables.cpp, imgui_widgets.cpp, imgui.h
└── backends/
├── imgui_impl_dx11.cpp imgui_impl_dx11.h
└── imgui_impl_win32.cpp imgui_impl_win32.h
```
重用您在 `shared/Atlas.h` 中设置的相同 API 密钥。打开 .sln,构建 **Release · x64**,使用 `Ctrl+F5` 运行。将出现一个 940×640 的登录窗口。登录后,您将进入欢迎屏幕,其中包含完整的会话卡片以及 **Sign out** / **Recheck session** 按钮。
字体、样式、后端细节:[`ImGui Example/README.md`](ImGui%20Example/README.md)。
## 集成到您的项目
1. 将 [`shared/Atlas.h`](shared/Atlas.h) 和 [`shared/Atlas Auth.lib`](shared/Atlas%20Auth.lib) 复制到您的项目中(通常放在 `vendor/atlas/` 文件夹中)。
2. 在您的 Visual Studio 项目属性中配置 **Release | x64**:
- **C/C++ → General → Additional Include Directories** — 添加包含 `Atlas.h` 的文件夹
- **Linker → General → Additional Library Directories** — 相同的文件夹
- **Linker → Input → Additional Dependencies** — 添加 `Atlas Auth.lib;`(文件名中确实包含空格)
3. 直接在 `Atlas.h` 中设置您的 API 密钥,或者(推荐在正式发布时使用)在 `Startup()` 之前从您自己的代码中设置:
Atlas::API_KEY = LoadKeyFromSignedRemoteConfig();
Atlas::Startup();
4. 接入 SDK:
#include "Atlas.h"
int main() {
Atlas::Startup();
std::string license = PromptUserForLicense();
if (!Atlas::Login(license)) {
std::cout << Atlas::Data::GetErrorMessage();
return 1;
}
RunMyApplication(); // 已认证
return 0;
}
从 `Startup()` 开始,SDK 自身的线程将运行心跳、完整性检查和看门狗。您无需管理其中的任何内容。
一旦您有了要发布的构建版本,请计算其 SHA-256 并将其粘贴到 **Applications → Executable-hash whitelist** 中。从那一刻起,被修改的副本会在检查许可证之前就在服务器端被拒绝。您可以将多个哈希加入白名单(每个版本一个),并从同一面板撤销旧版本。
## API 参考
所有可调用的内容都位于 [`shared/Atlas.h`](shared/Atlas.h) 中。
### 核心
```
void Atlas::Startup(); // call once at program start
bool Atlas::Login(const std::string& license_key); // true on success, false on rejection
void Atlas::Logout(); // gentle sign-out; process stays alive
```
### `Atlas::Data` — 会话状态(在 `Login` 后有效)
```
GetLicense() GetHWID() GetIP() GetExpiry() GetLevel() GetNote()
GetFirstSeenDate() GetLastSeenDate()
GetActiveUserCount() GetUserCount()
IsAuthenticated() IsBanned()
GetDaysRemaining() IsLifetime() IsExpiringSoon(days = 7)
GetErrorMessage() HasError() ClearError()
```
### `Atlas::Network` — 服务器操作
```
CheckAuthentication(); // force a fresh server round-trip
Download(int file_id); // dashboard-uploaded file → std::vector
BanUser(reason, minutes); // minutes = 0 → permanent
SubmitLog(text); // custom log entry, ≤ 512 chars, shows in Logs
```
### `Atlas::Variables` — 服务器设置配置,无需重新编译
```
Fetch("welcome_msg"); // string
FetchBool("beta_feature"); // bool
FetchInt("max_items"); // int
```
### `Atlas::Helper` — 实用工具
```
SendDiscord(webhook, msg);
SendDiscordEmbed(webhook, title, desc, color);
SendWebhook(url, json);
Exit(); // kernel-level fastfail
Ping(); // round-trip ms to the auth server, -1 if unreachable
```
## `Login` 之后会发生什么
在 SDK 自身的线程内运行。您无需编写任何代码。
- **5 秒心跳** — 使用基于会话的 HMAC 密钥签名,带有序列号,回显服务器最新的挑战 nonce。服务器可以在回复中推送消息、踢出会话或发出强制终止指令。
- **15 秒深度扫描** — 将 `.text` CRC 与启动时的快照进行比对(捕获 NOP、代码洞、跳转注入)。完整的 IAT 检查(捕获 inline hook、手动映射)。
- **每次心跳之前** — 扫描 `ws2_32.recv/send/connect` 的首字节以查找 hook 特征。被 hook 的网络函数是对认证通道进行 MitM 攻击的基础;Atlas 会在任何数据通过之前终止进程。
- **持续进行** — 可执行页面映射与登录后快照的差异比对(捕获反射型 DLL、手动映射、shellcode);PEB + `NtQueryInformationProcess` + `DR0–DR7` + VEH 调试器检查;在使用硬件性能计数器的两个线程上运行相互监视的看门狗。
任何失败:从内核触发 `__fastfail()`。没有对话框。没有异常处理程序。没有可供拦截的软信号。
## API 密钥模型
API 密钥是一个**路由标识符** —— 它的意思是“将此请求发送到我的控制面板账号”。真正对每个请求进行身份验证的是:
1. X25519 握手 —— 推导出只有您的应用和服务器知道的基于会话的 HMAC 密钥。
2. 服务器在其握手回复中添加的 Ed25519 签名 —— 与固定在 `Atlas Auth.lib` 中的三个密钥(主密钥、备份密钥、紧急密钥)进行比对验证。被伪造的服务器无法生成这些签名。
3. HWID 绑定 —— 会话密钥在推导时混入了 HWID;被盗的会话 token 无法在另一台机器上使用。
4. 基于请求的 nonce —— 重放请求将被丢弃。
5. 可执行文件哈希白名单(如果您配置了的话)。
泄露的 API 密钥本身并不能让攻击者冒充用户。尽管如此,仍应将其视为敏感信息:在怀疑泄露时进行轮换(**Settings → Rotate key**),并避免将其公开在公开的源代码中。
## 故障排除
**`LNK2019: unresolved external symbol "Atlas::Startup"`** — `Atlas Auth.lib` 不在链接器输入中,或者库搜索路径不包含其所在文件夹。请参阅集成的第 2 步。
**`error C2039: 'API_KEY': is not a member of 'Atlas'`** — 您正在编译的是旧版的 `Atlas.h`。请从 `shared/` 目录复制当前版本。
**启动后立即终止进程** — 触发了 SDK 的强制终止路径。常见原因:API 密钥仍然是 `"YOUR_API_KEY"`;API 密钥对应的是已删除的应用;附加了调试器(请使用 `Ctrl+F5` 测试)。检查控制面板的 **Logs** 标签以了解确切原因。
**`Login` 返回 `false`,提示 "Executable hash mismatch"** — 您加入了白名单后重新编译了。请更新白名单,或者在开发阶段不要设置白名单。
**`Login` 返回 `false`,提示 "License banned" / "HWID banned"** — 请检查 **Bans**。
**进程静默退出,无任何消息** — 完整性检查触发了 `__fastfail()`。控制面板的 **Logs** 会显示原因:`.text` 被修改、IAT 被 hook、存在注入模块、服务器签名验证失败(伪造/MitM 服务器)、心跳长时间无法到达服务器。
**`.exe` 文件体积较大** — `Atlas Auth.lib` 是一个约 15 MB 的静态库;这就是整个保护堆栈。使用 UPX 压缩率约为 4:1。除非您受到体积限制,否则直接按原样发布即可。
完整 FAQ:[atlassecurity.site/docs](https://atlassecurity.site/docs)。
## 支持
- **文档** — [atlassecurity.site/docs](https://atlassecurity.site/docs)
- **Discord** — [discord.gg/EG5dmpFaCF](https://discord.gg/EG5dmpFaCF)(响应最快)
- **电子邮件** — [mail@atlassecurity.site](mailto:mail@atlassecurity.site)
Bug 报告:请包含操作系统版本、Visual Studio 版本、失败的 SDK 调用,以及控制面板的 **Logs** 条目(如果有)。
要从源代码重新编译 `Atlas Auth.lib`(仅在您修改 SDK 内部结构时):打开 `Auth Library/Atlas Auth/Atlas Auth.sln`,构建 **Release · x64** 或 **Ship-All · x64**,输出内容将原地覆盖 `C++ Integration/shared/Atlas Auth.lib`。
## 法律声明
© 2025–2026 Atlas Security Solutions。保留所有权利。由沙特阿拉伯王国吉达的 Atlas Security Solutions 出售。
本 SDK 的存在是为了让开发者能够将 Atlas Authentication 集成到他们的软件中。如果您就是此类开发者,请自由使用。
**明确书面授权严禁:** 对 Atlas 二进制文件、协议或服务器基础设施进行逆向工程、反编译、反汇编或重构;篡改、绕过或禁用任何身份验证或防篡改控制;探测或干扰 Atlas 服务器或数据库;利用对 Atlas 内部结构的了解来构建竞争平台或绕过工具。
执法依据:沙特阿拉伯反网络犯罪法(皇家法令 M/17,1428H,第 3-4 条);美国计算机欺诈和滥用法(18 U.S.C. § 1030);欧盟指令 2013/40/EU;WIPO / TRIPS(180 多个签署国)。
Atlas 会监控未经授权的访问、逆向工程和协议分析。违规行为将面临民事诉讼、移交主管机关以及追索所有可用的补救措施 —— 禁令救济、资产追回和跨司法管辖区执法 —— 且不另行通知。
权限请求和法律咨询:[mail@atlassecurity.site](mailto:mail@atlassecurity.site) · [atlassecurity.site/legal](https://atlassecurity.site/legal)
标签:C++, DOM解析, 代码保护, 反调试, 安全意识培训, 数据擦除, 许可证管理, 软件授权