kxigor/AimbotFramework
GitHub: kxigor/AimbotFramework
一个以单机 Far Cry 3 为实验平台的 C++23 学习项目,通过构建辅助瞄准框架来实践 Win32 API、DLL 注入与 3D 几何等底层技术。
Stars: 0 | Forks: 0
# AimbotFramework
一个个人的 C++23 项目,旨在学习 Windows API、逆向工程和 3D 几何,并以单机版 **Far Cry 3**(Dunia 引擎)作为研究对象。该项目仍在开发中:底层基础设施已经可用,特定游戏和辅助瞄准逻辑仍在编写中。
`afw` = **A**imbot**F**rame**w**ork(命名空间/目标前缀)。
## 状态
已实现:
- **`afw::win`** — 原始 Win32 资源的 RAII 包装器:`ScopedHandle`(`CloseHandle`)、`RemoteMemory`(在另一个进程中执行 `VirtualFreeEx`),以及一个将 `GetLastError` 转换为 `std::error_code` 的 `LastError()` 辅助函数。
- **`afw::remote`** — 按名称查找进程,并通过经典的 CreateRemoteThread + LoadLibraryW 技术向其注入 DLL。以 `std::expected` 的形式报告错误。
- **`injector.exe`** — 独立工具,负责定位目标并将 `aimbot.dll` 加载到其中。
- **`aimbot.dll`** — 存根 `DllMain`,目前可以编译,后续将用于承载以下库。
待编写:
- **`afw::process`** — 对宿主进程的通用访问(模块基址、特征码扫描、内存辅助功能)。与引擎无关。
- **`afw::games::fc3`** — Far Cry 3(Dunia)绑定:偏移量、结构体、实体/骨骼/视图矩阵读取。依赖于 `afw::process`。每个游戏对应一个库,以便未来可以将更多游戏作为 `afw::games::` 加入其中。
- **`afw::aimbot`** — 辅助瞄准逻辑,保持与引擎无关(游戏在接口背后进行接入)。
## 布局
```
CMakeLists.txt root: options (AFW_*) and subdirectories
CMakePresets.json UCRT64-oriented presets
cmake/ ProjectOptions / Sanitizers / Coverage / Format / Tidy / Gtest
include/afw/ public headers (sibling of src/)
win/ afw::win (implemented)
remote/ afw::remote (implemented)
process/ games/ aimbot/ headers (planned)
src/
win/ afw::win (STATIC, Windows-only)
remote/ afw::remote (STATIC, Windows-only)
process/ games/fc3/ aimbot/ (STATIC, empty namespaces for now)
injector/
injector.cpp injector.exe -> loads aimbot.dll via afw::remote
dll/
dllmain.cpp stub entry point -> aimbot.dll
tests/ GTest + CTest wiring
scripts/ check_format.py / check_tidy.py (no bash dependency)
```
## 构建(通过 MSYS2 **UCRT64** shell)
`cmake`、`ninja` 和 `clang` 位于 UCRT64 环境中,而不是 MINGW64。
```
# 主要开发构建:GCC, Debug, 测试 + DLL, 无 sanitizer
cmake --preset dev-debug
cmake --build --preset dev-debug
ctest --preset dev-debug
# 仅发布 DLL -> build/ci-release/dll/aimbot.dll
cmake --preset ci-release
cmake --build --preset ci-release
```
输出的 DLL 是 `aimbot.dll`(没有 `lib` 前缀),并且静态链接了 MinGW 运行时,因此不需要宿主机搜索路径中存在 MSYS2 运行时 DLL,同时启用了 PE 加固(`--dynamicbase --nxcompat --high-entropy-va`)。
### 预设
| 预设 | 类型 | 备注 |
|---------------------|----------------|----------------------------------------|
| `dev-debug` | Debug | GCC,无 sanitizer(默认开发构建) |
| `dev-debug-asan` | Debug | ASan+UBSan,强制使用 `clang++` |
| `dev-debug-ubsan` | Debug | UBSan,强制使用 `clang++` |
| `ci-coverage` | Debug | gcov 插桩 |
| `ci-relwithdebinfo` | RelWithDebInfo | 开启测试 |
| `ci-release` | Release | 仅 `aimbot.dll`,关闭测试 |
## 选项
| 选项 | 默认值 | 含义 |
|--------------------------|--------------------|----------------------------------|
| `AFW_BUILD_DLL` | ON(顶层+Win) | 构建 `aimbot.dll` |
| `AFW_BUILD_INJECTOR` | ON(顶层+Win) | 构建 `injector.exe` |
| `AFW_BUILD_TESTS` | ON(顶层) | 构建 GTest 套件 |
| `AFW_ENABLE_FORMAT_CHECK`| ON(顶层) | 将 clang-format 注册为测试 |
| `AFW_ENABLE_TIDY_CHECK` | ON(顶层) | 将 clang-tidy 注册为测试 |
| `AFW_ENABLE_COVERAGE` | OFF | gcov 目标(需要测试) |
## 许可证与范围
教育用途源码可见许可证(详见 `LICENSE`):允许出于**教育、非商业**用途进行查看、学习、编译和修改,不提供任何担保,也不承担任何责任。仅限单机模式使用(Far Cry 3 的在线服务已停止)——严禁用于多人游戏/规避反作弊系统。
标签:Bash脚本, C++23, DLL注入, Gophish, Linux, Windows API, 云资产清单, 内存读取, 字典生成, 流量审计, 游戏外挂框架, 逆向工程, 高性能