Cheat Engine 字符串、字节数组与分组扫描
除数字外,Cheat Engine 还可以查找文本、字节序列以及已知布局的一组数据。本节介绍这些扫描的输入方式和常见误区。
搜索文本
在已连接的自建练习程序中,选择 String 或 Text 类型,输入已知的短文本进行首扫。文本在内存中有不同编码方式,同一段文字可能以单字节编码、UTF-8 或宽字符等形式保存;界面提供的 Unicode 等选项应与目标实际布局匹配。屏幕上可见的文字也可能来自临时缓冲区,搜索结果未必是程序长期使用的原始字符串。
如果结果过多,可选更有区分度的文本片段;没有结果时检查大小写、编码、目标是否已加载该文本以及扫描范围。不要在不了解缓冲区容量的情况下写入更长的文本,长字符串可能覆盖相邻数据。先在内存浏览器观察字节,再结合原程序的定义判断。
数组和字节模式
Array of byte 按字节序列搜索。比如在常见小端系统里,四字节整数 100 对应 64 00 00 00;相同字节也可能出现在其他数据或指令中。十六进制字节之间使用空格更便于阅读。AOB 的通配符可表达不确定字节,但通配越多,通常越容易出现多个匹配。
字节搜索得到的是匹配起点。需要查看它前后的数据,并通过程序行为确认用途;单次匹配并不保证跨版本或重启后仍唯一。针对指令特征码的稳定性和模块扫描,应继续阅读 AOB 专题。
已知结构时的分组扫描
官方扫描说明给出一个例子:4:75 4:* 4:100 表示依次查找四字节值 75、一个未知四字节项和四字节值 100。这里的 * 对该字段不指定值;前提是你知道三个字段确实按所选布局排列。布局、对齐或字段类型不同,都可能导致漏搜。
练习时可自行定义三个相邻字段,改变第一项后重扫,再打开附近内存验证其余字段。找到候选后,还应确认它确实来自预期对象,而不是恰好具有同一排列的另一份数据。
对于文本候选,另一个有效验证方法是让自建程序更新字符串,然后重新查看同一地址的内容。如果该地址只留下旧值,可能是历史缓存;如果原始缓冲区被重新分配,原地址也可能失效。因此需要结合目标的内存分配和对象生命周期判断。
参考:官方扫描类型与分组示例、官方 AOB 介绍。