Cheat Engine修改器是全球最知名的开源内存调试与逆向分析工具,诞生于游戏修改社区,经过二十多年迭代已经从单纯的“游戏作弊工具”成长为覆盖内存分析、逆向工程、安全研究全场景的通用调试平台,它的核心价值远不止修改单机游戏数值,更是无数编程新人入门理解计算机底层运行原理的绝佳教具。

1、首先确认你选择的数据类型和游戏里的实际存储类型匹配,遇到扫不到的情况优先切换成“所有类型”模糊扫描,先定位到目标地址,再反推它的真实数据类型。

2、确认你输入的扫描数值和游戏里的实际显示值完全一致,可以用“减少了数值”“未变动”这类模糊扫描选项,一步步筛选就能定位到真实值。

3、关闭游戏里的数值自动刷新机制,扫描的时候先让角色站在安全区域,确保生命值不会自动增减,再进行两次扫描,就能快速把候选地址缩小到几个以内。

4、确认你没有选错进程,很多新手不小心把系统其他后台进程当成游戏进程附加,自然不可能扫描到游戏里的数值,附加前仔细核对进程名,确认是游戏的主程序进程。

① 第一次找到目标地址后,点击“指针扫描”按钮,把当前的地址保存为第一次扫描的快照。

② 之后重启游戏,重新找到同一个目标的新地址,把新地址输入到指针扫描器里。

③ CE就会自动对比两次扫描的结果,筛选出同时指向新旧两个地址的指针链。

④ 最终得到“game.exe + 0x偏移 → 一级指针 + 0x偏移 → 二级指针 + 0x偏移 → 目标数值”的多级持久化路径。
它可以自动遍历整个进程的内存页,扫描出所有指向目标地址的指针链,最终定位到“游戏主程序模块基址+多级偏移”的持久化访问路径。
哪怕游戏重启、内存地址重新随机分配,只要游戏版本没有大更新,这个指针链依然能准确找到目标数据,实现永久生效的数值修改。
CE还自带指针映射生成功能,你可以把扫描完成的指针链直接保存为.CT修改表文件,下次打开游戏直接加载就能自动定位到目标地址。
不用每次重新扫描,很多成熟的单机游戏修改器,本质上就是用CE生成的稳定指针链封装出来的。
V7.7
1、更新了Windows版本,以修复使用ProcessWindow创建进程的问题。
2、修复了解析无效的VEX指令的问题
3、修复了符号的延迟问题
4、修复了lua命令getFunctionRange的内存泄漏问题
5、修复了32位VEH调试问题和某些表制作器加载旧表的问题
6、修复了在使用自动删除和内部类型组合时固定结构解剖问题,并修复了HOOK/HOOK5
7、设置首选分配的问题。
v7.6
变化:
主标题中不再有版本编号,现在只有屏幕有它
可以在没有管理员的情况下运行,并在需要时询问管理员(您也可以在设置中设置为以管理员身份运行)
更好的错误报告(尤其是使用debugsymbol版本时)
符号同步,符号在CE实例之间共享,并在重新打开CE时被记住
Speedhack v3现在取代了windows中的旧Speedhack,没有更多的speedhack dll要注入(更多的dll将在未来跟进)
Speedhack现在在unity游戏中也能更好地工作(不再需要关闭vsync)
byteTableToxxx现在支持开始索引
autoassembler命令AOBSCANEX -仅扫描可执行内存
c编译器:添加了__stdcall定义
c编译器:windows:自动汇编程序可以处理stdcall损坏的符号名,而c编译器可以处理使用stdcall时未损坏的符号
c编译器:头文件被用作表文件,现在表文件可以有任何名称
添加了类似于网络/单声道信息
改进了net info classlist性能(在ceserver中尤其明显)
在hexview中选定的字节上按ctrl+space将使反汇编程序转到那里
单声道信息的大量改进
lua: treenode,索引现在是可写的
重新设计了结构解剖的内部结构,预计那里会有很多新的bug
已将tcc库更新到最新版本
{$luacode}不再需要dll注入来运行
自动汇编器DB命令已更新,允许相对更改,例如:DB +1 +2将增加字节数“DB”分别用1和2完成
你不能再破坏luafile流对象了,现在您必须销毁luafile本身
为AA脚本增加了更多的语言支持
添加了一个新的调试器接口:gdbserver
错误出试图从其他线程访问GUI控件的脚本
扫描处于活动状态时,无法单击tablist
移除了注释对话框中的关闭按钮
现在可以对内存区域视图列进行排序
c代码:android目标上的ANDROID定义集
lua:反汇编视图现在有一个SelectionSize属性
lua: caretX和caretY现在暴露于synedit
lua:可以创建TSynAutoComplete
lua: ModuleLoader现在可以加载流和表文件
记忆记录现在可以在冻结/解冻/恢复时设置一个值
记忆记录可以隐藏复选框并选择将描述移动到最左边
你现在可以链接一个内存视图hexview和一个结构窗口列,这样当hexview改变时它的地址也会改变
patchscan现在会告诉你,如果你不选择任何模块,它将不会工作
改进的黑暗模式视觉效果
添加了在执行指针扫描(ARM存储器标签安全功能)时忽略指针高位字节的选项
groupscan现在也支持aobscan类型
十六进制模式的aobscan现在支持以下运算符:> XX:值必须大于XX,
拆卸器ARM64:增加了一些颜色
网络信息:改进了类搜索
net info:静态方法不再需要地址
net info:静态方法现在有了不同的颜色
增加了一个可以改变颜色的配置窗口
net info:调用一个方法允许你使用对话框创建对象
在另一个架构中生成的解码结果现在可以被解码使用
结构剖析现在更好地遵循setPointerSize()指令
添加了lua包含文件
dbvm中的cpuid记录
完全重新设计mono数据收集器中的错误处理
monodatacollector现在支持多线程
添加了一些lua命令,使得创建手动流程和模块列表变得更加容易
添加了dmahelper.lua,这是一个示例脚本,展示了如何使用直接内存访问来获取processlist和modulelist,以及如何将这些信息连接到CE
一些lua回调现在有了第一个参数,所以它们甚至在ce内部处理程序之前运行
添加了ceserver命令EXTCMD _ DLERROR以在模块注入失败时获取错误
改进的il2cpp方法枚举速度
线程安全脚本终结器现在显示一个对话框,询问您是否希望终止该脚本
lua:增加了loadNewSymbols(),所以不是所有的符号都需要在dll注入时重新加载
lua:增加了setSpecialScanOptionsOverride,这样你就可以控制扫描哪些内存区域(方便模拟器使用)
修理:
从symbollookup到调试、管道、基本初始化出错等等,ceserver中的大量修复
修复了地址查找选择同名符号的旧版本而不是新版本的符号(这是符号列表的一个问题,如ccode)
修复了一个错误,查看字符串时出现错误的net/mono信息
修正了一些向量指令的反汇编
修复了VEX指令在32位目标中不工作的问题
修复了安装程序中翻译文件不是最新的问题
剖析代码高dpi修复
不使用结构剖析窗口的固定结构剖析
然而更多的反汇编问题与x86 vex和aarch64有关
修正了在指针扫描配置中勾选和取消勾选复选框的问题
修正了一些字体颜色和类型,使它们可以根据默认的windows配置进行调整
修复了目标为32位时的luacode
修正了当窗口高度太小时内存视图拆卸程序出错的问题
dbvm:修正了一个会使DBVM崩溃的问题
Lua:调试脚本现在不会删除现有的调试例程
Lua:固定结构Frm.getSelectedStructElement()
汇编器x86_64:修复汇编ymm、m256参数
汇编程序x86_64:修复了pextrd
ultimap1:修复了ret过滤器
当尚未打开任何进程时,调试信息不再可用
c/ccode: windows.h和其他一些默认头文件现在可以被正确包含
c/ccode:修复了chkstk符号的问题
mono:修复了值类型参数和方法调用的处理
修复了dbvm跟踪会在结果中出错的问题
固定组装pextrd
一些关于圆括号和计算的修正
android:修正了il2cpp在apk中的问题
一堆其他android相关的修复(java和mono)
固定网络模块列表更准确
用于值扫描的固定指针扫描
手动映射dll现在也加载异常处理结构