跳转至

基本内存扫描

内存扫描器是立志成为游戏黑客的人最基础、也最重要的工具。和任何程序一样,游戏内存中的所有数据都位于一个绝对位置,称为内存地址。如果把内存想象成一个非常大的字节数组,那么内存地址就是指向数组中某个值的索引。当内存扫描器被要求在一款游戏的内存中查找某个值 x(称为扫描值,因为它是你要扫描的目标)时,扫描器会遍历这个字节数组,寻找任何等于 x 的值;每找到一个匹配值,它就把匹配项的索引加入结果列表。

然而,由于游戏内存的规模庞大,x 的值可能出现在数百个位置。假设 x 是玩家的生命值,当前为 500。我们的 x 唯一地持有 500,但 500 并非只被 x 持有,因此扫描 x 会返回所有值为 500 的变量。与 x 无关的地址最终都是干扰项;它们只是碰巧与 x 一样持有 500。

为了过滤掉这些无用的值,内存扫描器允许你重新扫描结果列表,把不再持有与 x 相同值(无论 x 仍是 500 还是已经改变)的地址移除。

要让这些重扫行之有效,游戏的整体状态必须具备足够的熵——一种无序程度的度量。你可以通过改变游戏内环境来增加熵,常见的做法是四处移动、击杀怪物或切换角色。随着熵的增加,无关地址继续碰巧持有相同值的可能性越来越低;只要熵足够大,几次重扫就能过滤掉所有误报,留下 x 的真实地址。