Go to file
kedou 974442b78c feat: add config persistence with INI load/save and debug mode 2026-08-08 18:09:32 +08:00
CFramework feat: add config persistence with INI load/save and debug mode 2026-08-08 18:09:32 +08:00
CFramework.SelfTest feat: add runtime guard and world data updates 2026-08-08 12:42:01 +08:00
.gitignore feat: add config persistence with INI load/save and debug mode 2026-08-08 18:09:32 +08:00
CFramework.sln feat: add runtime guard and world data updates 2026-08-08 12:42:01 +08:00
DUMP_INDEX.md feat: add dump structural index tools (sqlite + query cli + docs) 2026-08-08 00:23:11 +08:00
Directory.Build.props Initial commit 2026-08-05 19:35:37 +08:00
LICENSE Initial commit 2026-08-05 19:35:37 +08:00
README.md feat: add runtime guard and world data updates 2026-08-08 12:42:01 +08:00
REFACTOR_NOTES.md feat: add runtime guard and world data updates 2026-08-08 12:42:01 +08:00
build_index.py feat: add dump structural index tools (sqlite + query cli + docs) 2026-08-08 00:23:11 +08:00
dump_index.db feat: add dump structural index tools (sqlite + query cli + docs) 2026-08-08 00:23:11 +08:00
query_index.py feat: add dump structural index tools (sqlite + query cli + docs) 2026-08-08 00:23:11 +08:00
verify_fonts.py Initial commit 2026-08-05 19:35:37 +08:00
verify_runtime.ps1 feat: add runtime guard and world data updates 2026-08-08 12:42:01 +08:00

README.md

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)。
  • 参数: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 等)已包含在仓库内,无需额外安装。
  • 日常开发不要只执行裸构建;先运行统一回归门禁:
powershell -ExecutionPolicy Bypass -File .\verify_runtime.ps1

门禁会依次:

  1. 从当前源码重建 CFramework.SelfTest;
  2. 运行对象链、四种 GOM 布局、首次失败恢复、Snapshot freshness、Camera 和 W2S 回归测试;
  3. 仅在全部测试通过后重建 Release x64 Overlay;
  4. 将隔离产物和 SHA256 输出到 x64\RuntimeGuard\,不会覆盖正在使用的 x64\Release\CFramework.exe。

也可以直接打开 CFramework.sln 选择 Release x64 构建;正式发布前仍必须运行上述门禁。

运行前提:先启动 SPT-AKI 3.11.3 客户端(进程名为 EscapeFromTarkov),再以管理员身份运行 CFramework.exe。 程序通过窗口标题附加进程并创建覆盖层;若附加失败返回码 1,Overlay 初始化失败返回码 2。

当前数据架构(2026-08 重构)

  • CGame 的 GameWorld / Camera 状态由动态数据线程统一刷新,并在内部用互斥锁保护。
  • 动态玩家、相机矩阵和手雷数据发布为不可变 DynamicWorldSnapshot;撤离点和物资发布为 StaticWorldSnapshot。
  • ESP 与 Aim 目标选择只消费 Snapshot,不在渲染阶段直接 RPM。真正的 Memory Aim / 功能 override 仍通过独立写入路径执行。
  • RegisteredPlayers 按 IPlayer 处理,并区分完整 EFT.Player 与 ObservedPlayerView 两种布局。ObservedPlayer 无法从当前 dump 可靠确认的 Profile/Health/Role 字段不会强行套用。
  • 后台线程不直接读取 ImGui 绑定的普通 g_* 变量;渲染线程通过 WorkerConfigSnapshot 发布所需配置。
  • 动态 Snapshot 带采集时间、刷新次数和连续失败数;超过 250ms 的 stale 数据不会用于 ESP、Aim 或功能写入。
  • CGame 的读取边界支持注入 synthetic memory reader;CFramework.SelfTest 可在不启动游戏的情况下复现 GOM/节点链和失败恢复路径。
  • 玩家、物资、手雷列表使用运行时长度 + 上限校验的批量读取,不再使用固定 address[64] / address[2048] 缓冲。
  • 工作线程可 join;退出时先停止并等待后台线程,再恢复功能写入和关闭进程句柄。

详细变更与验证结果见 REFACTOR_NOTES.md。

已知问题

  • 当前 Windows 环境已完成 MSVC v143 Release x64 全量重建,并通过 16 项离线 Runtime SelfTest;仍需在每次 offset、线程或读取逻辑变更后执行 verify_runtime.ps1 和实机进出局烟雾测试。
  • ObservedPlayerView 的昵称、Role、实时 Health 等字段在当前 dump 中仍是混淆字段;本次实现采取保守降级显示,不猜测未知字段语义。
  • 主 Overlay 仍跟随 VSync/显示器刷新率;UpdateFeatures() 是渲染线程写功能路径,后续如果需要进一步降低 CPU/RPM,可以单独给写功能增加节流/脏标记。

项目结构

CFramework/
├── CFramework.sln                    # VS 解决方案(主程序 + SelfTest)
├── verify_runtime.ps1                # Runtime 回归门禁:测试通过后才构建 Overlay
├── CFramework.SelfTest/              # synthetic memory 离线测试项目
│   └── SelfTest.cpp
├── CFramework/
│   ├── CFramework.vcxproj
│   ├── main.cpp                     # 入口:附加进程、初始化 Overlay、字体、后台线程
│   ├── Cheat/                       # 功能实现
│   │   ├── SnapshotHealth.h         # generation、时间戳和 250ms freshness 契约
│   │   ├── 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