hacktricks/reversing/reversing-tools-basic-methods/cheat-engine.md

7.9 KiB
Raw Blame History

Cheat Engine

从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS Red Team Expert

支持HackTricks的其他方式

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

您在搜索什么?

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

您还可以指定不同类型搜索

您还可以选中复选框在扫描内存时停止游戏

快捷键

在_编辑 --> 设置 --> 快捷键_中您可以为不同目的设置不同的快捷键,比如停止游戏(如果您想要扫描内存的某个时刻非常有用)。其他选项也可用:

修改值

一旦您找到了您要查找的值的位置(关于此更多信息请参见以下步骤),您可以通过双击它,然后双击其值来修改它

最后,选中复选框以在内存中进行修改:

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

搜索值

因此,我们假设有一个重要值(比如您的用户生命值)需要改进,您正在查找这个值在内存中的位置)

通过已知更改

假设您正在寻找值100执行扫描以搜索该值,然后找到许多匹配项:

然后,您执行某些操作使值更改,然后停止游戏并执行下一个扫描

Cheat Engine将搜索从100变为新值。恭喜,您找到了您要查找的值的地址,现在可以修改它。
如果您仍然有几个值,请执行一些操作以再次修改该值,然后执行另一个“下一个扫描”以过滤地址。

未知值,已知更改

在这种情况下,您不知道值,但您知道如何使其更改(甚至知道更改的值),您可以搜索您的数字。

因此,首先执行类型为“未知初始值”的扫描:

然后,使值更改,指示值如何更改在我的情况下减少了1然后执行下一个扫描

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

找到您的值后,您可以修改它。

请注意,有许多可能的更改,您可以根据需要重复执行这些步骤以过滤结果:

随机内存地址 - 查找代码

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

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

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

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

现在您找到了修改值的地址,您可以随意修改代码Cheat Engine允许您快速将其修改为NOPs

因此,您现在可以修改代码,使其不影响您的数字,或者始终以积极的方式影响。

随机内存地址 - 查找指针

按照之前的步骤,找到你感兴趣的值所在的位置。然后,使用 "查找写入此地址的内容" 找出写入该值的地址,双击它以查看反汇编视图:

然后,执行一个新的扫描 搜索方括号中的十六进制值(在这种情况下是 $edx 的值):

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

点击 "手动添加地址"

现在,点击 "Pointer" 复选框,并将找到的地址添加到文本框中(在这种情况下,前一个图像中找到的地址是 "Tutorial-i386.exe"+2426B0

(注意第一个 "Address" 如何自动填充为您输入的指针地址)

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

现在,每当您修改该值时,您都在修改重要值,即使该值所在的内存地址不同

代码注入

代码注入是一种技术,您可以将一段代码注入到目标进程中,然后重新路由代码执行以通过您编写的代码(例如给您积分而不是扣除它们)。

因此,假设您已经找到正在减少玩家生命的地址:

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

填写要修改的指令的地址(通常会自动填充):

将生成一个模板:

因此,在 "newmem" 部分插入您的新汇编代码,并从 "originalcode" 中删除原始代码,如果您不希望执行它。在此示例中,注入的代码将在减去 1 的基础上增加 2 分:

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

参考

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