7.7 KiB
7.7 KiB
CFramework
面向 SPT-AKI 3.11.3(Escape From Tarkov 单机版)的外部辅助程序(External Cheat)。
以 ImGui + DX11 透明 Overlay 渲染,通过外部内存读写实现 ESP、自瞄、压枪等功能。 本项目最初发布于 UnknownCheats,作者已对开发失去兴趣,故公开源码,供研究、分析、学习与调查使用。
注意:本项目面向单机离线版 SPT,与官方 Tarkov 无关。
功能特性
ESP(玩家 / 环境)
| 功能 | 说明 | 状态 |
|---|---|---|
| 玩家 ESP | PMC / SCAV / BOSS / 玩家SCAV / 特殊SCAV 区分着色 | ✅ |
| 方框 / 填充方框 | 支持两种方框样式(g_ESP_BoxStyle) |
✅ |
| 骨骼 | 基于 PlayerBones 关节链(Head / Neck / Ribcage / Pelvis 等) | ✅ |
| 血条 / 距离 / 名称 | 玩家头顶信息 | ✅ |
| 连线 | 屏幕中心到目标连线 | ✅ |
| 物资 ESP | 稀有物资标记(名称 + 距离,g_ESP_MaxItemDistance 可调) |
✅ |
| 尸体 ESP | 尸体标记 | ✅ |
| 撤离点 ESP | 开启 / 未开启撤离点分色(绿 / 橙) | ✅ |
| 手雷 ESP | 投掷物轨迹标记 + 屏幕顶部 [ WARNING ] Grenade!! 警告 |
✅ |
| 子弹追踪(只读) | 读取弹道快照(初速 / 速度 / 方向 / 落点),绘制弹道轨迹,只读不改写 | ✅ |
| 最大距离 | g_ESP_MaxDistance(默认 500m) |
✅ |
自瞄(AimBot)
- 两种模式:
- Mouse 模式(默认):
SendInput模拟鼠标移动,无需偏移,稳定可靠; - Memory 模式:直接写
MovementContext::Rotation,需用菜单 [Rot Debug] 在实机上校准偏移(Offset.h中MovementContext::Rotation,默认0x58 -> 0x27C)。
- Mouse 模式(默认):
- 参数:FOV 半径、自适应平滑(0-100)、灵敏度倍率、单帧最大移动、最大锁定距离(m)、骨骼选择(Head / Neck / Body)。
- 目标过滤:PMC / SCAV / BOSS 独立开关、忽略血量判定。
- 强制开启(免按键):勾选后无需按键,自瞄直接生效(用于按键检测失效的环境)。
- 显示 FOV 圈、目标连线(调试用)。
- 触发键:按住 鼠标右键(ADS) 或 左键(射击) 时生效;
F9作为键盘兜底触发键(Config.h中g_AimKey0/1/2可改)。
压枪(Recoil Control)
- 射击期间按固定间隔向下补偿鼠标(宏式)。
Strength:每次下拉的鼠标单位;Interval:下拉间隔 [ms]。
Misc
| 功能 | 说明 |
|---|---|
| 无限耐力 | 锁定 Physical 耐力值(含手部耐力) |
| 无跌落伤害 | 修改跌落伤害倍率 |
| 无摇摆 | 清空 MotionEffector.SwayFactors |
| 无后座(内存) | 直接改写 ShotEffector / 武器后座参数(与宏式压枪不同,纯内存) |
| 无故障 / 卡弹 | 屏蔽卡壳 / 供弹故障 / 不发火 / 滑套未复位 |
| 串流隐藏 | 直播 / 录屏防暴露 |
| 准星 | 屏幕中心自定义准星(大小 / 样式可选) |
菜单
- 打开 / 关闭:INSERT(
Config.h中g_MenuKey可改) - 菜单已中文化:左侧图标导航栏 + 右侧设置面板,共 4 页 —— 自瞄 / 视觉 / 功能 / 设置。
构建
- 环境:Visual Studio 2022(MSVC v143),x64。
- 所有第三方库(ImGui、DirectXTK SimpleMath、FreeType、nlohmann/json 等)已包含在仓库内,无需额外安装,直接打开
CFramework.sln选择 Release x64 构建即可。 - 首次构建参考:Visual Studio C++ 安装指南
输出:
x64\Release\CFramework.exe
运行前提:先启动 SPT-AKI 3.11.3 客户端(进程名为 EscapeFromTarkov),再以管理员身份运行 CFramework.exe。
程序通过窗口标题附加进程并创建覆盖层;若附加失败返回码 1,Overlay 初始化失败返回码 2。
已知问题
- CPU 占用偏高:原版遗留问题,二次开发中已部分缓解但未根治。
- 已改善:实体 / 撤离点 / 物资列表刷新线程已降频(500ms ~ 5s 间隔轮询,见
UpdateList.cpp);主渲染循环开启了 VSync(Present(1, 0)),不会无限空转。 - 仍存在:主循环没有独立帧率上限,VSync 下跟着显示器刷新率跑(144Hz 屏即 144 FPS);每一帧都全量执行
UpdateFeatures()(耐力 / 跌落 / 摇摆 / 后座 / 故障五组 override 的内存读链 + 写入)、子弹追踪快照和 ESP 遍历渲染,没有脏标记或事件驱动缓存。高刷新率屏幕上占用依然明显。 - 需要进一步优化时,可从给主循环加帧率上限(如 60 FPS +
sleep_for)或给UpdateFeatures加每 N 帧执行一次入手。
- 已改善:实体 / 撤离点 / 物资列表刷新线程已降频(500ms ~ 5s 间隔轮询,见
项目结构
CFramework/
├── CFramework.sln / .vcxproj # VS 解决方案
├── CFramework/
│ ├── main.cpp # 入口:附加进程、初始化 Overlay、字体、后台线程
│ ├── Cheat/ # 功能实现
│ │ ├── Aim.cpp # 自瞄 + 压枪(Mouse / Memory)
│ │ ├── Visual.cpp # ESP 渲染(玩家/物资/撤离点/手雷/子弹轨迹)
│ │ ├── Features.cpp # 耐力/跌落/摇摆/后座/故障 override
│ │ ├── Menu.cpp # ImGui 菜单(中文)
│ │ ├── Render.cpp / UpdateList.cpp
│ │ └── SDK/ # 游戏对象封装
│ │ ├── CPlayer / CExfil / CItem
│ │ └── GameSDK/ # Offset.h(全部偏移)、Struct.h
│ └── Framework/ # 可复用框架
│ ├── Memory/ # 外部内存读写(ReadChain 等)
│ ├── Overlay/ # DX11 透明覆盖层
│ ├── Input/ # 输入处理
│ ├── ImGui/ # 内置 ImGui + DX11/Win32 后端 + 字体
│ ├── Config/ # 全局配置(Config.h 中 g_* 全局变量)
│ └── Libs/ # FreeType / SimpleMath / nlohmann
├── build_index.py / query_index.py # IL2CPP dump 索引工具(见下)
├── dump_index.db # 生成的索引库
├── DUMP_INDEX.md # 索引工具使用文档
└── LICENSE # MIT
配套工具:IL2CPP dump 索引
dump.txt 是 Unispect v0.2.4.0 生成的 IL2CPP 类布局 dump(15.8 万行 / 7MB),
配套脚本将其流式解析为 SQLite 索引(dump_index.db,含 FTS5 全文索引),毫秒级检索类型 / 字段 / 偏移,替代对原始文本的暴力搜索。
# 构建索引(默认输入 F:\desktop\Release\dump.txt)
python build_index.py
# 自定义路径
python build_index.py D:\other\dump.txt D:\other\dump_index.db
# 查询统计 / 检索
python query_index.py stats
python query_index.py find Player.FirearmController
详细用法见 DUMP_INDEX.md。
免责声明
本项目仅用于学习、研究、教育目的。作者(Neko64V)对因使用本软件造成的任何直接或间接损失不承担任何责任,请勿将其用于任何非法用途。
致谢与依赖
- ImGui — 界面框架(内置,含 DX11 / Win32 后端与 FreeType 渲染)
- Microsoft DirectXTK (SimpleMath) — 数学库
- FreeType — 字体渲染
- nlohmann/json — JSON 解析
- Font Awesome 6 — 菜单图标
- 字体:Roboto(内置压缩字体)+ 微软雅黑(
C:\Windows\Fonts\msyh.ttc,CJK 中文 fallback)
License
MIT © 2024 Neko64V