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解析, 代码保护, 反调试, 安全意识培训, 数据擦除, 许可证管理, 软件授权