Cheat Engine
Last updated
Last updated
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
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