Cheat Engine

支持 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

Last updated