Cheat Engine 查找访问和写入指令
知道一个值的地址后,可以观察哪些指令读取或修改它。本节以官方练习程序为例,解释两种调试观察的区别与验证步骤。
选择要观察的地址
通过扫描找到官方 Tutorial 的目标值,加入地址表并确认数值随练习按钮变化。右键记录可以选择查找访问该地址的指令(Find out what accesses this address),或查找写入它的指令(Find out what writes to this address)。前者关注对地址的访问,后者帮助缩小到写入行为;实际显示与调试器设置可能受程序和 CE 版本影响。
开始观察后回到 Tutorial,只触发一次明确的动作,例如点击改变数值的按钮,再回调试窗口查看捕获结果。大量界面刷新或后台操作也可能访问同一地址,因此应记录动作发生前后的新增条目,而不是把第一条指令当作答案。
读懂指令和现场
示意指令 mov [rdx+18],eax 表示将 EAX 的内容写到由 RDX 加偏移 0x18 指定的位置。要判断它是否对应目标,需结合当时的寄存器值:假设 RDX 为 0x2000,则访问位置为 0x2018。这里采用十六进制示意,并不代表实际 Tutorial 的地址或指令。
CE 提供查看详细信息和内存浏览器的入口,可观察周围指令以及寄存器。寄存器值是某次触发时的现场,不是永不变化的地址;同一条指令也可能在不同对象上重复运行。先观察而不改写,才能区分指令负责什么、字段位于哪里。
安全结束并复查
停止或关闭观察窗口后再次操作练习程序,确认程序仍按预期运行。如果没有捕获到结果,检查目标地址是否仍有效、是否真正触发相关动作、选择的是访问还是写入,以及调试器配置是否可用。动态地址变化后,先重新找地址再观察。
若发现多条指令,分别改变目标、重复捕获并比较访问次数与上下文,保留可复现的证据。后续是否使用指针扫描或 Auto Assembler,应建立在理解这些指令行为的基础上;不要根据单次命中直接覆盖机器码。
在捕获窗口中,访问次数有助于判断指令是否频繁执行,但次数高并不自动说明它是正确目标。为便于比较,先清除或记录已有结果,再执行一次练习动作。分别观察改变目标前、改变目标时和停止操作后的差异,能够更清楚地识别相关访问。