Cheat Engine 内存浏览器、模块与地址表达式

Cheat Engine 内存浏览器、模块与地址表达式

内存浏览器同时展示机器指令和原始字节,是核对扫描结果的重要工具。本节解释绝对地址、模块相对地址及查看时的注意事项。

两种视图各自回答什么

连接练习程序后,从 CE 主窗口打开 Memory View。反汇编区域把机器码解释为指令;十六进制区域展示地址附近的原始字节及对应字符。两种视图显示的是同一个进程的内存,但展示角度不同。一个地址是否是指令,应结合它所在区域以及程序的执行行为判断,不能只凭字节能被反汇编就下结论。

从已验证的地址记录进入内存浏览器,查看前后字节,并与所选类型对应。例如四字节整数 100 在常见 x86 小端环境中可显示为 64 00 00 00。查看时保留地址、类型、程序版本与当前状态,避免把某次内存快照当作永久布局。

理解模块和相对位置

程序的可执行文件和动态库会映射为模块,模块加载基址可能随启动变化。示例中模块基址为 0x10000000,偏移为 0x120,则该次绝对地址为 0x10000120。用 "Tutorial.exe"+120 表示模块加偏移,可以在模块基址改变时重新计算;这里的模块名和偏移只是示意。

模块相对地址仍依赖模块名称与内部布局。软件更新、模块替换或偏移变化都可能使表达式指向别处;有些模块在特定状态才加载。用地址表检查表达式能否解析,再与独立扫描到的目标比较,不能把相对地址当作自动适配所有版本的保证。

解引用与故障排查

方括号表示从指定位置读取指针。例如 ["Tutorial.exe"+100]+18 先读取模块相对位置的指针,再加字段偏移;如果需要多层指针,应逐层确认中间地址。空指针、错误的目标进程或已卸载模块都可能导致解析失败。

练习时只浏览已知目标及相邻范围,切换状态后重新观察。内存浏览器也提供编辑功能,但修改指令或数据前应明确其含义并保存可恢复信息;初学阶段先完成只读观察,再学习相关高级章节。

练习时还可以把某个地址表项的绝对地址与浏览器显示的地址对照,再记下其所属模块和偏移。如果该地址实际上是动态分配的数据,就不应强行把它解释成模块内的固定字段。区分模块内位置与对象数据位置,是后续选择指针路径的前提。

参考:官方扫描与模块相对地址、官方指针说明。