Cheat Engine

Reading time: 10 minutes

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

Cheat Engine 是一个有用的程序,可以找到在运行游戏的内存中保存的重要值并进行更改。
当你下载并运行它时,你会 看到 一个 教程,介绍如何使用该工具。如果你想学习如何使用该工具,强烈建议完成它。

你在搜索什么?

这个工具非常有用,可以找到 某个值(通常是一个数字) 在程序的内存中存储的位置
通常数字4字节 形式存储,但你也可以找到 双精度浮点 格式,或者你可能想寻找 不同于数字 的东西。因此,你需要确保 选择 你想要 搜索的内容

你还可以指示 不同 类型的 搜索

你还可以勾选框以 在扫描内存时停止游戏

热键

编辑 --> 设置 --> 热键 中,你可以为不同的目的设置不同的 热键,例如 停止 游戏(如果你想在某个时刻扫描内存,这非常有用)。还有其他选项可用:

修改值

一旦你 找到寻找的值(更多内容在接下来的步骤中),你可以通过双击它来 修改它,然后双击它的值:

最后 勾选复选框 以在内存中完成修改:

内存更改 将立即 应用(请注意,直到游戏不再使用此值,该值 不会在游戏中更新)。

搜索值

所以,我们假设有一个重要的值(比如你用户的生命值)你想要提高,并且你正在内存中寻找这个值)

通过已知的变化

假设你在寻找值 100,你 执行扫描 搜索该值,并且你发现了很多匹配项:

然后,你做了一些事情使得 值发生变化,你 停止 游戏并 执行 下一次扫描

Cheat Engine 将搜索 从 100 变为新值。恭喜,你 找到了 你在寻找的 地址,现在你可以修改它。
如果你仍然有多个值,做一些事情再次修改该值,并执行另一个“下一次扫描”以过滤地址。

未知值,已知变化

在你 不知道值 但你知道 如何使其变化(甚至变化的值)的情况下,你可以寻找你的数字。

所以,首先执行一种类型为“未知初始值”的扫描:

然后,使值发生变化,指示 如何变化(在我的情况下是减少了 1)并执行 下一次扫描

你将看到 所有以所选方式修改的值

一旦你找到了你的值,你可以修改它。

请注意,有很多 可能的变化,你可以根据需要 多次执行这些步骤 以过滤结果:

随机内存地址 - 查找代码

到目前为止,我们学习了如何找到存储值的地址,但在 游戏的不同执行中,该地址很可能位于内存的不同位置。所以让我们找出如何始终找到该地址。

使用一些提到的技巧,找到当前游戏存储重要值的地址。然后(如果你愿意,可以停止游戏)右键单击找到的 地址 并选择“查找访问此地址的内容”或“查找写入此地址的内容”:

第一个选项 有助于了解 代码哪些部分使用地址(这对于更多事情很有用,比如 知道你可以在哪里修改游戏的代码)。
第二个选项 更加 具体,在这种情况下更有帮助,因为我们想知道 这个值是从哪里写入的

一旦你选择了其中一个选项,调试器附加 到程序,并且会出现一个新的 空窗口。现在, 游戏修改(无需重新启动游戏)。窗口 应该会 填充 正在 修改地址

现在你找到了修改值的地址,你可以 随意修改代码(Cheat Engine 允许你快速将其修改为 NOP):

因此,你现在可以修改它,使得代码不会影响你的数字,或者总是以积极的方式影响它。

随机内存地址 - 查找指针

按照之前的步骤,找到你感兴趣的值。然后,使用“查找写入此地址的内容”找出哪个地址写入此值,并双击它以获取反汇编视图:

然后,执行新的扫描 搜索“[]”之间的十六进制值(在这种情况下是 $edx 的值):

如果出现多个,通常需要最小的地址
现在,我们已经 找到了将修改我们感兴趣的值的指针

点击“手动添加地址”:

现在,勾选“指针”复选框,并在文本框中添加找到的地址(在这种情况下,前一张图片中找到的地址是 "Tutorial-i386.exe"+2426B0):

(注意第一个“地址”是从你输入的指针地址自动填充的)

点击确定,一个新的指针将被创建:

现在,每次你修改该值时,即使值所在的内存地址不同,你也在 修改重要值

代码注入

代码注入是一种技术,你将一段代码注入目标进程,然后重新路由代码的执行以通过你自己编写的代码(例如给你积分而不是减少它们)。

所以,想象一下你找到了一个地址,它正在从你的玩家生命中减去 1:

点击显示反汇编以获取 反汇编代码
然后,点击 CTRL+a 调出自动汇编窗口并选择 模板 --> 代码注入

填写 你想要修改的指令的地址(这通常是自动填充的):

将生成一个模板:

因此,将你的新汇编代码插入到“newmem”部分,并从“originalcode”中删除原始代码,如果你不想让它被执行。在这个例子中,注入的代码将增加 2 分而不是减去 1:

点击执行等等,你的代码应该被注入到程序中,改变功能的行为!

参考

  • Cheat Engine 教程,完成它以学习如何开始使用 Cheat Engine

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks