Cheat Engine
Reading time: 10 minutes
tip
学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
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)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。