Undetected Cheat Engine
工具下载
VMP 密码:6666 解压密码:52pojie
修改并编译CE
更改驱动名称
许多反作弊系统会通过黑名单驱动名称”dbk64.sys”来阻止Cheat Engine运行,因此我们需要修改这个名称。
- 打开下载的Cheat Engine源代码文件夹
- 导航至
Cheat Engine -> dbk32目录
- 导航至
- 找到
DBK32function.pas文件并用文本编辑器(如vscode)打开
- 找到
- 搜索字符串
dbk64.sys
- 搜索字符串
- 将
servicename修改为其他名称
- 将
- 同时修改
dbk64和dbk32的sysfile名称,例如改为mynewdriver64.sys和mynewdriver32.sys
- 同时修改

随机窗口名称
Cheat Engine主文件夹,找到cheatengine.lpi文件并用Lazarus打开
工程 -> 单元搜索并打开MainUnit2.pas,搜索cename,定位到要修改的行数
生成随机字符串函数:
1 | function GenerateRandomString(StringLength: Integer; |

项目选项设置
- 点击工程-> 工程选项
- 在应用程序选项卡中:
- 修改“标题”(原为”Cheat Engine Version“)
- 点击
Clear Icon清除图标(可选添加新图标) - 修改“名称”原为”Cheat Engine”)
- 在版本信息选项卡中修改
CompanyName和FileDescription
- 在版本信息选项卡中修改
- 在**”编译器选项 -> 路径”**中:
- 选择**”Release 64-Bit”**构建模式
- 修改”目标文件名称 (-0)”中的”cheatengine”
- 对**”Release 64-Bit O4 AVX2”**模式重复相同操作
- 点击”确定”保存设置
编译
运行 -> 清理和构建,点击”清理和构建”开始编译
使用HxD修改Cheat Engine字符串
编译完成后,在”Cheat Engine -> bin”目录中找到生成的exe文件,使用HxD修改残留字符串。
- 下载安装HxD编辑器
- 将编译好的exe文件拖入HxD
Ctrl+R替换
- 确保勾选**”从头”和”区分大小写”**
- 替换以下字符串(注意保持相同长度):
- “Cheat Engine” → “Mynew Engine”(11字符+1空格)
- “cheat engine” → “mynew engine”
- “cheatengine” → “mynewengine”
- “CheatEngine” → “MynewEngine”
- “cheatEngine” → “mynewEngine”
- “cheat Engine” → “mynew Engine”
- 对”Unicode (UTF-16 little endian)”编码重复上述替换
- 保存修改
使用VMProtect保护程序
VMProtect可以进一步增强Cheat Engine的安全性,使其更难被反作弊系统通过特征码检测。据测试,还能使Cheat Engine绕过FiveM反作弊系统的检测。
- 保护程序:
- 打开VMProtect
- 将编译好的Cheat Engine可执行文件拖入程序窗口
- 设置保护选项:
- 点击”添加进程”添加函数
- 选择”EntryPoint”入口点,点击”添加进程”
- 双击”编译类型”选项直到显示”超级 (变异 + 虚拟)”
- 点击”选项”
- 双击”调试器”选项直到显示”User-mode + Kernel-mode”
- 双击”虚拟化工具”选项直到显示”是“
- 双击”移除重定位信息”选项直到显示”是“
- 开始编译:
- 点击箭头按钮开始保护过程
- 完成后会在”Cheat Engine -> bin”目录生成”*.vmp.exe”文件
- 建议使用这个经过保护的文件进行操作

使用Lua脚本修改内部字符串(可选)
如需彻底修改Cheat Engine内部所有字符串(最大程度避免特征检测),可以使用以下Lua脚本:
操作步骤
- 打开Cheat Engine
- 进入”Memory View”内存视图
- 选择”Tools” -> “Lua Engine”打开Lua引擎
- 复制以下代码并粘贴到输入框中:
1 | function renameComponents(c) |
- 点击”Execute”执行脚本
- 执行后,Cheat Engine内部大多数字符串将被替换为”WTF”
注意事项
- 此步骤并非必须,仅推荐给追求最高隐蔽性的用户
- 修改字符串可能影响部分功能的正常显示
驱动编译
Visual Studio 2019 + SDK + WDK开发环境
- 下载Visual Studio 2019:
- 访问微软官网下载Community 2019版本
- 安装时勾选**”使用C++的桌面开发”**
- 安装必要组件:
- 在”单个组件”选项卡中搜索**”142 x64”**
- 勾选以下关键组件:
- MSVC v142构建工具(最新版)
- C++ ATL库(含Spectre缓解措施)
- C++ MFC库(含Spectre缓解措施)
- 安装Windows 10 SDK:
- 下载版本2004(10.0.19041.0)
- 完成标准安装流程
- 安装WDK驱动开发包:
- 下载对应版本2004的WDK
- 安装时确保勾选**”安装Windows Driver Kit Visual Studio扩展”**
修改并编译CE驱动(DBK)
驱动编译准备:
- 打开Cheat Engine源代码中的
DBKKernel.sln解决方案文件 - 在解决方案资源管理器中找到
DBK64.inf文件
关键修改项:
- 重命名驱动:
- 使用替换功能(CTRL+H)将所有”DBK64”替换为步骤
更改驱动名称中自定义的名称 - 修改
ManufacturerName="Cheat Engine"为自定义信息
- 使用替换功能(CTRL+H)将所有”DBK64”替换为步骤
- 项目配置:
- 右键项目→属性→配置为”Release without sig”和x64平台
- 在”常规”修改”目标文件名”为自定义驱动名
- 清除”生成事件 -> 生成后事件 _> 命令行”中的所有内容
- 测试证书创建:
- 在”Driver Signing _> Test Certificate”中创建测试证书
- 应用所有更改
编译驱动:
- 选择”Release without sig”和x64配置
- 点击”生成”→”生成解决方案”
- 编译完成后在bin目录获取
.sys驱动文件
绕过驱动签名验证(DSE/EFIGUARD)
注意:Efiguard已被部分反作弊系统检测
制作EFIGuard启动U盘
- 下载EfiGuard
- 准备FAT32格式的U盘:
- 通过磁盘管理工具删除原有分区
- 新建简单卷并选择FAT32格式
- 部署EFI文件:
- 将工具包中的EFI文件夹复制到U盘
- 重命名
Loader.efi为bootx64.efi
驱动签名验证操作流程
从U盘启动进入EFIGuard环境
在Windows中打开管理员CMD:
1
2cd /d "EfiGuard文件夹路径"
efidsefix.exe -d # 禁用驱动签名强制启动修改版Cheat Engine:
- 设置→调试器选项→启用**”Use kernelmode debugger”**
- 在Extra中启用所有4个选项
- 确认顶部显示**”DBK64 LOADED”**
重新启用签名验证:
1
efidsefix.exe -e # 游戏启动前必须执行
模块名称显示修复脚本
当使用DBK驱动时,某些反作弊系统会阻止显示游戏模块名称。以下是解决方案:
执行脚本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59symbols = createSymbolList();
symbols.register();
function onOpenProcess(pid)
symbols.unregister();
symbols = createSymbolList();
symbols.register();
reinitializeSymbolhandler();
if (pid == 4) then
return;
end
local proc = dbk_getPEProcess(pid);
--printf("proc: %08X", proc);
local peb = readQword(proc + 0x550);
--printf("peb: %08X", peb);
local ldr = readQword(peb + 0x18);
--printf("ldr: %08X", ldr);
local index = readQword(ldr + 0x10);
--printf("index: %08X\n", index);
while (index ~= ldr + 0x10) do
local mod = readQword(index);
--printf("mod: %08X", mod);
local name = readString(readQword(mod + 0x58 + 0x8), readSmallInteger(mod + 0x58), true);
--printf("name: %s", name);
local base = readQword(mod + 0x30);
--printf("base: %08X", base);
local size = readInteger(mod + 0x40);
--printf("size: %04X\n", size);
symbols.addModule(name, "", base, size, true);
index = readQword(mod);
end
local name = readString(proc + 0x5A8, 15);
--print("name:", name);
local base = readQword(proc + 0x520);
--printf("base: %08X", base);
local size = readQword(proc + 0x498);
--printf("size: %04X", size);
symbols.addModule(name, "", base, size);
reinitializeSymbolhandler();
--print("finished!");
end常见问题解决:
若出现冻结/崩溃,修改以下代码:
1
2
3
4
5-- 原始代码
while (index ~= ldr + 0x10) do
-- 修改为
for i=1, 150 do -- 限制循环次数防止死循环
使用效果:
- 重新附加到游戏进程后
- 内存视图将显示完整的模块列表
- 支持基址+偏移量的标准操作方式
DBVM原理与应用
虚拟化技术核心原理
层级架构(Ring模型)
| 层级 | 权限级别 | 典型组件 | 反作弊检测强度 |
|---|---|---|---|
| Ring -1 | 硬件虚拟化 | DBVM超级监视器 | 极难检测 |
| Ring 0 | 内核态 | 反作弊驱动/CE驱动 | 中等检测 |
| Ring 3 | 用户态 | 游戏客户端/CE主程序 | 易检测 |
虚拟化工作原理
1 | graph LR |
关键特性:
- 硬件级隔离:直接在CPU虚拟化扩展(Intel VT-x/AMD-V)上运行
- 内存隐身:通过扩展页表(EPT)实现透明内存访问
- 中断劫持:完全控制所有硬件中断处理
DBVM使用
组件获取:
- 获取预编译镜像:
下载官方CE获取vmdisk.img - 文件存放路径:
1
Cheat Engine/bin/vmdisk.img
配置流程:
- 启用虚拟化支持:
打开设置->调试器选项选择”Use DBVM-level debugger”,帮助->关于->点击支持检测 - 验证安装状态:
- 成功标志:CE界面显示 “DBVM active (Version x.x)”
- 失败排查:
- BIOS中开启VT-x/AMD-V
- 禁用Hyper-V等竞争技术
1
bcdedit /set hypervisorlaunchtype off
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Meng's blog!

