s7shvets7s/simple_ac_internal_cheat
GitHub: s7shvets7s/simple_ac_internal_cheat
一个基于 C++20 的 AssaultCube 内部修改教育项目,用于学习 Windows 逆向工程、运行时内存操作、函数 hook 和 DirectX 渲染集成等底层开发概念。
Stars: 0 | Forks: 0
# 🎯 简易 AssaultCube 内部作弊
### 用于学习逆向工程、运行时内存和 Windows 内部原理的 C++ 教育项目
[](https://isocpp.org/)
[](https://www.microsoft.com/windows)
[](#technical-stack)
[](https://visualstudio.microsoft.com/)
[](https://learn.microsoft.com/windows/win32/)
[](https://github.com/ocornut/imgui)
[](https://github.com/microsoft/Detours)
[](#disclaimer)
[](LICENSE.txt)
## 关于本项目
**简易 AssaultCube 内部作弊** 是一款针对开源游戏 **AssaultCube** 的教育性内部修改程序。
该项目旨在受控环境中探索底层 C++ 开发和基础逆向工程概念。它演示了与运行中进程的交互、运行时内存结构、多级指针、函数 hook、DirectX 渲染集成,以及进程内图形界面的开发。
该应用程序以 **x86 动态链接库** 的形式实现,并被加载到本地的 AssaultCube 进程中。一旦加载,它会提供一个使用 **Dear ImGui** 构建的交互式覆盖层。
## 🎥 演示
## ✨ 功能
### Aimbot
* 可配置的目标选择
* 可调整的瞄准行为
* 通过覆盖层在运行时激活和停用
* 与存储在游戏内存中的玩家和实体数据进行交互
### ESP
* 显示有关游戏实体的信息
* 演示 world-to-screen 坐标转换
* 使用游戏实体列表和渲染数据
* 与内部覆盖层集成
### 玩家参数
该项目提供了用于修改本地存储玩家值的实验性控制功能,包括:
* 生命值
* 护甲
* 弹药
* 视野 (FOV)
* 其他运行时参数
### ImGui 覆盖层
* 交互式进程内菜单
* 功能切换和配置控制
* 选项卡式界面
* 运行时设置管理
* 菜单可见性通过 `Delete` 键控制
## 🧠 学习目标
创建该项目主要是为了获得以下方面的实践经验:
* C++20 系统编程
* Windows 进程和模块内部原理
* 动态链接库生命周期管理
* 运行时内存检查
* 指针链和内存偏移
* 函数 hook
* Microsoft Detours
* DirectX 渲染 hook
* World-to-screen 转换
* Dear ImGui 集成
* 实体列表遍历
* 功能、配置和渲染代码的分离
* 调试已注入的 x86 模块
该仓库并不是一个可用于生产环境的工具,而是记录了在底层 Windows 开发和游戏逆向工程方面的一次早期实践。
## 🛠️ 技术栈
| 技术 | 用途 |
| ---------------------- | ----------------------------------- |
| **C++20** | 主要编程语言 |
| **Windows API** | 进程、模块、线程和 DLL 交互 |
| **x86** | AssaultCube 使用的目标架构 |
| **Dear ImGui** | 内部图形覆盖层 |
| **Microsoft Detours** | 运行时函数 hook |
| **DirectX** | 覆盖层渲染集成 |
| **Visual Studio 2022** | 开发和构建环境 |
| **vcpkg** | 依赖管理 |
## ⚙️ 高级架构
该项目分为几个独立的部分:
```
src/
├── features/
│ ├── aimbot.cpp # Aimbot behaviour and target processing
│ ├── aimbot.h
│ ├── esp.cpp # Entity visualization
│ ├── esp.h
│ ├── changestats.cpp # Runtime player-parameter controls
│ └── changestats.h
│
├── menu/
│ ├── menu.cpp # ImGui initialization and rendering
│ ├── menu.h
│ ├── menutabs.cpp # Overlay tabs and controls
│ ├── menutabs.h
│ ├── settings.cpp # Runtime feature configuration
│ └── settings.h
│
├── offsets/
│ ├── constants.cpp # Addresses and offset definitions
│ ├── constants.h
│ ├── genCode.cpp # Supporting offset-related logic
│ └── genCode.h
│
├── utils/ # Shared utility code
└── dllmain.cpp # DLL entry point and initialization
```
这种分离使得功能逻辑、菜单渲染、设置以及依赖于版本的内存偏移量彼此隔离。
## 🔬 工作原理
在宏观层面上,该项目遵循以下生命周期:
1. DLL 被加载到本地运行的 AssaultCube 进程中。
2. `DllMain` 启动项目初始化例程。
3. 解析所需的游戏模块和运行时地址。
4. 使用 Microsoft Detours 对渲染函数进行 hook。
5. 在游戏渲染上下文中初始化 Dear ImGui。
6. 功能模块读取或修改本地运行时数据。
7. 覆盖层提供功能配置和状态控制。
8. `Delete` 键用于切换菜单。
具体的偏移量取决于版本。更新游戏可能需要更新 `offsets` 模块中存储的值。
## 🚀 构建项目
### 前置要求
* Windows
* Visual Studio 2022
* 使用 C++ 的桌面开发工作负载
* 支持 ISO C++20
* x86 构建工具
* Dear ImGui 源文件
* Microsoft Detours
* vcpkg
* 本地受控的 AssaultCube 安装
### 1. 克隆仓库
```
git clone https://github.com/s7shvets7s/simple_ac_internal_cheat.git
cd simple_ac_internal_cheat
```
### 2. 添加 Dear ImGui
在项目根目录中创建以下目录:
```
external/imgui/
```
将所需的 Dear ImGui 头文件和源文件添加到该目录中,并将它们包含在 Visual Studio 项目中。
预期结构:
```
external/
└── imgui/
├── imgui.cpp
├── imgui.h
├── imgui_draw.cpp
├── imgui_tables.cpp
├── imgui_widgets.cpp
└── required backend files
```
### 3. 安装 Detours
通过 vcpkg 安装 Microsoft Detours,并将 vcpkg 安装连接到 Visual Studio。
```
vcpkg install detours:x86-windows
vcpkg integrate install
```
### 4. 配置 Visual Studio
1. 打开 `simple_ac_internal_cheat.sln`。
2. 选择 `Release` 配置。
3. 选择 `x86` 平台。
4. 将语言标准设置为 **ISO C++20 (`/std:c++20`)**。
5. 验证 ImGui 和 Detours 的包含路径。
6. 构建解决方案。
```
Build → Build Solution
```
生成的 DLL 将生成在配置的 Visual Studio 输出目录中。
## 🧪 本地测试
仅在本地受控的 AssaultCube 安装中使用该项目,最好在带有机器人的离线游戏中使用。
要进行受控的本地演示:
1. 使用 `Release | x86` 配置构建项目。
2. 启动兼容的 AssaultCube 版本。
3. 使用适当的开发或调试加载器,将编译好的 DLL 加载到本地 `ac_client.exe` 进程中。
4. 按 `Delete` 键打开或关闭覆盖层。
5. 通过菜单启用所需的实验性功能。
## ⚠️ 局限性
* 该项目针对特定 x86 版本的 AssaultCube。
* 内存地址和偏移量可能在游戏更新后失效。
* 该实现是一个教育原型,而不是生产质量的软件。
* 某些功能逻辑可能需要额外的验证和重构。
* 该项目不包括自动偏移扫描器。
* 不支持与其他游戏或架构的兼容性。
* 没有任何绕过反作弊系统的尝试。
## ⚠️ 免责声明
该仓库旨在在受控的本地环境中演示 C++、Windows 内部原理、运行时内存、图形 hook 和逆向工程概念。
作者不鼓励或支持:
* 在公共或竞技性多人游戏中作弊;
* 绕过反作弊或安全系统;
* 干扰其他玩家;
* 违反游戏规则或服务条款;
* 在未经授权的情况下对系统使用代码;
* 出于恶意目的分发修改后的二进制文件。
仅对您拥有或明确授权测试的软件和系统使用此仓库。
对于因使用源代码而导致的封号、损害、违规、滥用或任何后果,作者不承担任何责任。
## 📄 许可证
本项目基于 **The Unlicense** 发布。
有关完整的许可证文本,请参见 [LICENSE.txt](LICENSE.txt)。
该许可证适用于源代码,但不授予违反第三方软件规则、许可证或条款的权限。
**由 aRecll 开发**
C++ 与逆向工程教育项目
标签:C++20, WinAPI, 云资产清单, 内存修改, 函数Hook, 游戏外挂, 端点可见性, 逆向工程