教你如何使用CE来利用一些电脑游戏。作弊引擎是一种内存扫描工具。它允许您访问存储在计算机内存中的数据并更改该数据。这使您可以更改游戏中的信息,例如健康、弹药、分数、生命以及库存中的物品数量。
部分1
-
1打开CE页面。在您计算机的网络浏览器中 访问https://cheatengine.org/downloads.php 。
-
-
2点击下载CE。这是页面中间的一个大链接。
- 该按钮还将列出当前版本的CE(例如,下载CE 6.7)。
- 如果您尝试在 Mac 上使用 Cheat Engine,请改为单击Download Cheat Engine 6.2 For Mac链接。
-
3安装作弊引擎。这样做会因计算机的操作系统而异:
- Windows — 双击 Cheat Engine 安装文件,出现提示时单击Yes ,单击Next,选中“我同意”框并单击Next,再单击3 次,取消选中“我同意安装 McAfee WebAdvisor”框并单击Next,然后单击安装。设置完成后,如果出现提示,请单击Next,然后单击Finish。
- Mac — 双击 Cheat Engine DMG 文件,如果出现提示,请验证安装,单击 Cheat Engine 徽标并将其拖到“应用程序”文件夹中,然后按照屏幕上的说明进行操作。
-
4打开作弊引擎。安装完作弊引擎后,打开开始
- 您可能必须单击是或打开才能打开作弊引擎。
部分2
在作弊引擎中打开游戏进程
-
确定要改变的游戏方面。为了让您能够更改游戏方面,方面必须附有一个数字(例如,弹药量、生命值或物品)。
- 号码必须在屏幕上。例如,如果您想更改库存中某个项目的编号,您首先必须将库存打开到该项目编号可用的页面。
-
2最小化游戏窗口并点击 Cheat Engine。您需要在游戏最小化时打开作弊引擎窗口。
- 执行此操作时不要暂停游戏。
-
3单击新建扫描。它位于左侧面板旁边的作弊引擎顶部。任何时候要扫描新值时,都需要单击New Scan。
-
4选择扫描类型。开始新扫描时,您可以执行五种扫描类型。您将使用的两个主要参数是“精确值”和“未知初始值”。使用“扫描类型”旁边的下拉菜单选择您要执行的扫描类型。扫描类型如下:
- 精确值:如果您知道要更改的确切数字,请使用此扫描类型。例如,如果您知道确切的生命数量或拥有的弹药数量,则可以选择此选项。
- 未知的初始值:在视频游戏中,有时值不是用数字表示的。例如,您的健康状况可能由健康计量器而不是数字来表示。在这种情况下,你没有一个确切的数字来说明你有多少健康。有一个数字代表您的健康,您只是在屏幕上看不到它。在这种情况下,您可以选择Unknown initial value。
- 大于...:'如果您不知道要查找的确切数字,但您知道可能的最小值,请选择此选项。
- 小于...:如果您不知道确切的值,但您知道可能的最大值,请选择此选项。
- 介于...之间的值:此选项允许您输入要查找的值范围。
-
选择数据类型:数据类型表示值在内存中的存储方式。可能很难知道要选择什么数据类型,所以这可能需要一些猜测。使用“数据类型”旁边的下拉菜单选择数据类型。如果使用一种数据类型找不到您要查找的值,请单击“新建扫描”并使用其他数据类型重试。您将使用的一些更常见的数据类型如下:
- 字节: 2 字节和 4 字节是您最常使用的数据类型。大多数 Windows 应用程序使用 4 字节,所以从它开始。您还可以使用 2 字节找到这些值。1 字节和 8 字节也可以工作,但您可能会遇到问题。
- 浮点数:浮点数据类型是值中有小数点的值(尽管您可能在游戏中看不到小数点)。有时游戏将值存储为浮点数以防止简单的内存扫描。如果您无法通过扫描字节找到您要查找的值,请尝试扫描浮点数。
- 双精度:双精度与浮点数类似,但它们可以包含两倍的位数。如果您无法通过扫描字节或浮点数来找到值,请尝试将其作为双精度数进行扫描。
- 全部:此选项扫描所有数据类型的所有值。如果您不知道要搜索什么,这是一个不错的选择,但它也会返回更多您需要缩小范围的搜索结果。
-
输入您要更改的值,然后单击First scan。例如,如果您的弹药中还剩 20 颗子弹,您可以20在“值”文本框中输入。这将扫描所有包含数字“20”的值。这可能会在地址列表中产生一长串值,您需要将其缩小一点。
-
返回您的游戏并更改值。你如何做到这一点将取决于游戏本身;例如,如果您想给自己更多的健康,您可能会故意损害自己的健康以降低数量。如果你想要更多的弹药,你可以开几枪来减少你的弹药数量。
-
返回作弊引擎并扫描更新的数值。再次最小化游戏并点击返回作弊引擎。在“值”部分输入新数字,然后单击Next Scan。这将扫描您第一次扫描中的所有值,并将地址缩小到更改为您在“值”栏中输入的值的地址。
- 未知初始值:如果您为第一次扫描选择了“未知初始值”,请根据值(或米)是增加还是减少,在“扫描类型”下选择增加值或减少值。这将扫描所有增加或减少的值,而不是扫描确切的数字。
-
重复搜索过程,直到您有 4 个或更少的值。您将不断更改数字,然后搜索更新的数字,直到作弊引擎左侧列出的值不超过 4 个。
- 您最终应该会在每个值的数字的“上一个”列中看到您搜索的上一个数字,而该项目的当前值将在“值”列中。
-
将值添加到地址列表。您可以双击一个值将其添加到底部的地址列表中,也可以单击一个地址将其选中,然后单击值列表右下角的红色对角箭头。这样做会将值放在窗口底部的地址列表中。
- 要选择多个地址,您可以按住“Shift”并单击顶部地址和底部地址。
-
将数字更改为您想要的值。使用以下步骤更改值编号:
- 双击作弊引擎底部列表中“值”下方的数字。
- 在“值”字段中输入一个新数字。
- 单击确定。
-
12检查您的游戏中的值是否更新。当您重新打开游戏时,您编辑的值应该反映您刚刚输入的数字。下一部分将教您如何通过将值替换为非操作代码来阻止值更改。
- 您可能需要再次更改该值,然后它才会更新。
部分4
-
1扫描要停止的值。这部分教你如何使用代码查找器找到写入要更改的地址的内容,然后将其替换为非操作代码。这将防止价值在游戏中发生变化。使用上一部分中的步骤查找要更改的值。将其添加到屏幕底部的列表中。
-
2右键单击该地址,然后单击Find out what access this address。这将打开作弊引擎调试器。这将显示写入您正在访问的地址的指令。
-
3单击是。这确认您希望将调试器附加到 Cheat Engine 进程。这将打开代码调试器。当窗口第一次打开时,列表将是空白的。
-
4返回游戏并再次更改值。再一次,回到你的游戏并做一些事情来改变你想要停止的价值。这将导致访问您选择的地址的代码指令出现在调试器窗口中。
-
5返回作弊引擎并单击列表中的指令。可能有多个地址。如果是这种情况,请选择不写入相同基地址的那个。查找“[' 和”] 括号之间的值与其他指令不同的指令。
-
6单击替换。这将代码替换为非操作 (NOP) 代码。[1]
- 如果列表中有多个项目,请继续并选择所有项目。
-
7单击停止。这使非操作代码生效。这将防止价值在游戏中发生变化。
- 要恢复原始代码,请选择列表中的项目并单击Show disassembler。右键单击显示“NOP”的位置,然后单击使用原始代码还原。如果您没有看到此选项,请单击Replace with code that does nothing,单击Yes。然后再次右键单击NOP并选择Restore with orignal code。
部分5
-
1扫描要更改的值。有时值可以在您重新启动游戏时或在游戏中间更改地址。您可以使用指针来查找写入地址的内容。一旦找到不变的基级静态地址,就可以更改该值。
-
2右键单击该地址,然后单击Find out what writes to this address。这将打开调试器窗口。
- 如果有多个地址,请为作弊引擎允许的尽可能多的地址打开一个调试器窗口。
-
3返回游戏并再次更改值。再一次,回到你的游戏并做一些事情来改变你想要改变的价值(即开火,被击中)。这将导致写入该地址的指令出现在调试器窗口中。
- 如果调试器窗口中没有任何变化,则它不是正确的地址。尝试不同的。
-
4返回作弊引擎并单击列表中的指令。它在调试器窗口中。可能有多个地址。如果是这种情况,请查找在“[”和“]”括号之间具有不同字符集的指令。如果没有单个地址具有不同的字符,请检查指针是否对所有人来说都是一样的。
- 如果字符末尾有一个+ 和一个数字(即[ESI+14])。那是一个偏移量。写下来。你稍后会需要它。
-
5单击更多信息。这将显示当 Extra Info 屏幕中的值更改时发生的说明。这也列出了写入地址的指针。
- 您还可以通过检查括号中的字符,然后检查底部列出的这些字符后面的数字来找到地址。例如,如果地址旁边有“[rdx]”,则在底部查找 RDX=xxxxxxxx。
-
6单击“十六进制”旁边的复选框并重新扫描指针地址。指针的地址列在“查找此地址所需的指针的值可能是 xxxxxxxxx”的文本中。使用以下步骤搜索此句末尾的地址。
- 单击新建扫描。
- 单击“值”字段旁边的“十六进制”复选框。
- 在 Value 字段中输入指针地址,然后单击First scan。
-
7双击指针地址。这会将地址添加到作弊引擎底部的列表中。
- 如果地址在扫描结果中以绿色列出。这意味着它是一个静态地址,可能是您正在寻找的指针。在某些情况下,您找到的指针也可能是指针。这称为多级指针。在这种情况下,您需要对找到的每个指针重复这些步骤,以找出根静态指针地址是什么。
-
8双击“地址”下方的数字。这将打开“更改地址”对话框。
-
9复制字段中的地址,然后单击取消。要复制地址,只需突出显示“更改地址”框顶部字段中的整个文本。右键单击它,然后单击复制。然后单击“取消”关闭该字段。
-
10单击手动添加地址。它是作弊引擎底部地址列表上方左侧的按钮。这将打开一个类似于“更改地址”框的框,除了这个框允许您添加地址。
-
11单击“指针”旁边的复选框。这会扩展该框并添加一个新的文本字段,您可以在其中输入指针。
-
12将指针地址粘贴到“指针”下方的字段中,然后单击确定。这将为控制要更改的值的指针添加一个新地址。您刚刚创建的指针的地址将显示为“P-->xxxxxxxx”。这表明这是一个指向特定地址的指针。
- 如果有偏移编号,请将其输入到粘贴地址的字段上方的空白处。
- 如果有多个指针,请单击添加偏移量。这将在您粘贴地址的区域上方添加更多偏移量数字框。在每个框中输入正确的偏移量。
-
13单击刚刚添加的指针地址旁边的“活动”框。它是屏幕底部列表地址列表中“活动”下方的框。这会激活指针。
-
14更改您刚刚添加的地址的值。您刚刚创建的指针地址的值编号应该与您搜索的值的地址相同。如果指针写入不同的位置,您扫描的原始地址将不再有效。但是,您仍然可以更改刚刚创建的指针地址的值。无论将值位置写入何处,这都将起作用。单击您刚刚添加的地址的“值”下方的数字。输入一个新的数值并点击Ok。
部分6
-
1扫描要停止的值。这部分教你如何使用代码注入来改变代码写入值的方式。例如,如果您每次被击中都会失去生命值,您可以更改代码,以便在被击中时增加生命值。
-
2右键单击该地址,然后单击Find out what access this address。这将打开作弊引擎调试器。
-
3单击是。这确认您希望将调试器附加到 Cheat Engine 进程。这将打开代码调试器。当窗口第一次打开时,列表将是空白的。
-
4返回游戏并再次更改值。再一次,回到你的游戏并做一些事情来改变你想要停止的价值。这将导致访问您选择的地址的代码出现在调试器窗口中。
-
5返回游戏并再次更改值。再一次,回到你的游戏并做一些事情来改变你想要停止的价值。这将导致写入该地址的指令出现在调试器窗口中。
-
6返回作弊引擎并单击列表中的指令。可能有多个地址。如果是这种情况,请在指令中查找包含单词“sub”的指令以从值中减去,或者查找包含单词“add”或“inc”的指令以增加值。
-
7单击显示反汇编程序。这将打开反汇编程序中的代码。
-
8选择减去或增加值的代码。它通常是代码顶部的第一条指令。它很可能在代码的开头有单词“Sub”或“Add”,以从值中减去或添加到它。
-
单击工具,然后单击自动组装。这将打开自动汇编程序。
-
10单击模板,然后单击完全注入。这将显示一个弹出窗口,确认您要将代码注入的地址。
-
11确保地址正确,然后单击确定。确保该字段中的地址与您在 Memory Viewer 反汇编器窗口中选择的地址相同。然后单击确定。这将打开一个新模板。
-
12将代码替换为相反的代码。向下滚动到显示“代码”的位置。它下面的行是更改值的代码。如果该行以“sub”开头,则将“sub”更改为“add”。如果该行以“add”开头,则将其更改为“sub”。您还可以更改行尾的值,以更改您希望它更改值的程度。
-
13单击执行,然后单击是两次。“执行”按钮位于代码注入窗口的底部。系统将询问您是否确定要注入代码。单击是确认。然后您可以单击是或否在反汇编程序中打开新代码。如果代码注入成功,则游戏中的值将与它们应该做的相反。您可以通过射击武器而不是丢失弹药来获得弹药。当你被击中而不是失去健康时,你可以获得健康。
部分7
-
1扫描要停止的值。在某些游戏中,多个对象共享相同的代码。将代码注入一个对象也会影响所有其他对象。因此,您可能会冻结自己的健康条,结果却发现所有敌人的健康也被冻结了。在这种情况下,你需要弄清楚如何区分不同的对象,并注入一个只影响你想要的对象的脚本。
- 为了为不同的对象注入脚本,你需要知道一些汇编代码。但是,创建一个基本脚本并不难。
-
2右键单击该地址,然后单击Find out what writes to this address。一旦确定了要更改或停止的值的地址,找出写入这些地址的内容,打开调试器并找出写入该地址的内容。
-
3选择指令并单击Show disassembler。这是打开调试器时突出显示的指令。这将显示代码反汇编程序中的指令。
-
4右键单击顶部指令,然后单击找出该指令访问的地址。这将打开一个窗口,其中显示指令在写入新地址时访问的所有地址的列表。
-
5允许游戏中的所有对象更改其值。这将显示指令访问的所有地址的列表。例如,如果您试图阻止您的健康栏发生变化,您可以返回您的游戏并受到打击。这将在访问地址列表窗口中显示访问该地址的指令。如果你击中了一个也共享该指令的敌人,它也会显示在访问地址列表窗口中。
-
6在访问地址列表窗口中选择所有地址。一旦您拥有访问地址列表中所有共享相同地址的对象的地址,只需单击并拖动以突出显示所有对象。
- 或者,您可以右键单击每个单独的地址,然后单击Show register states。[2]
-
7剖析所有列出地址的结构数据。使用以下步骤来剖析地址列表的数据结构:
- 右键单击选定的地址。
- 单击打开带有选定地址的解剖数据。
- 单击确定。
- 输入数据结构的名称并单击Ok。
- 单击是。
- 输入结构的起始大小或保持原样,然后单击Ok。
-
8找到一个对玩家相同但对其他对象不同的值。无论您是查看每个对象的数据结构还是寄存器,您都需要找到一个对所有盟友都相同但对敌人不同的值。例如,如果团队 1 有两个玩家角色,而团队 2 有两个计算机控制的角色,那么团队 1 的角色可以用值 1 表示,而团队 2 的值可能是 2。
- 如果找不到对盟友相同但对敌人不同的值,您可以制作一个。只需右键单击其中一个值(例如指针),然后单击Add Element。选择“4 Bytes”作为数据类型,并给它一个不取的偏移数值。偏移量编号列在数据剖析结构表的左侧。
-
9请注意该值的寄存器。无论您是查看寄存器视图还是数据剖析视图,寄存器值都在左侧。在寄存器视图中,它将是指令写入的实际寄存器(即 RSI、RDX、EDX 等)。如果您正在查看数据结构,则寄存器将是左侧列出的偏移量数字或字母。
-
10为指令打开一个新的代码注入模板。返回到 Memory Viewer 窗口并为写入不同地址的指令打开一个新的代码注入模板。使用以下步骤执行此操作:
- 单击 Memory Viewer 窗口中的指令。
- 单击顶部菜单栏中的工具。
- 单击自动装配器。
- 单击顶部菜单栏中的模板。
- 点击代码注入。
-
11为要影响的对象创建一个新标签。标签列在代码注入模板的顶部。在现有标签下方为要影响的对象添加新标签。要添加标签,只需label在括号中键入标签名称即可。例如,“标签(玩家)”或“标签(敌人)”。
-
12为您刚刚创建的标签创建一个新部分。要为标签创建新部分,请在原始代码之前或之后的任意位置键入标签名称,后跟冒号 (:)。
-
13将代码添加到更改要影响的对象的值的标签中。这需要一点汇编代码的知识。您需要添加一行代码,以您想要更改的方式更改您想要更改的对象的值。然后你需要添加一行跳转到出口,原始代码,返回代码。
-
14在“newmem”下面创建一个比较代码。代码注入模板中的“newmem:”行表明该指令正在调用一个新的内存地址。通常,它将直接进入具有 (code:) 或 (originalcode:) 标签的原始代码。使用“cmp”命令创建一行代码,比较注册表或注册表中不同对象的值加上偏移量。例如,如果偏移量为 14 的 RDX 从计算机团队中确定了玩家团队,并且玩家团队的值为 1,则您将键入cmp [rbx+14],1以检查对象是否为玩家。
-
15添加一行代码,跳转到要更改的对象的部分。使用“je”命令跳转到您的比较命令部分。例如,如果您的标签名为“播放器”,je player如果值比较对应播放器,则添加行以跳转到播放器部分。
-
16添加跳转到原始代码的代码。在您创建一行代码以跳转到要更改的对象的部分后,如果值与玩家或盟友不对应,则需要添加一行代码以跳转到原始代码。使用“jmp”命令在跳转到原始代码的代码行之后创建一行代码跳转到原始代码(或您创建的另一组执行不同操作的代码)。
- 保持简单的一种方法是不添加任何新标签。只需在“newmen:”末尾创建一个比较代码,以区分盟友和敌人。然后添加一行代码,如果是盟友则跳转到出口。如果是敌人,让它跳转到原始代码。这将使得如果玩家或盟友受到攻击(或使用消耗品等开火武器),什么都不会改变,但如果敌人受到攻击,代码将正常执行。
-
17单击执行。这将执行您输入的代码。如果一切顺利,您将注入区分盟友和敌人的新代码。以下是一个简单的脚本示例,您可以使用它来区分盟友和敌人:
alloc ( newmem , 2048 , " Tutorial-x86_64.exe "+ 2 EB6D ) label ( returnhere ) label ( originalcode ) label ( exit ) label ( player ) //播放器的新 标签 。 newmem: //这会 调用 一个 新的 内存 地址。 cmp [ rbx + 14 ], 1 // 这将 区分 友方团队成员和敌方团队je player //如果对象在玩家的团队中,则跳转到玩家部分。jmp originalcode //跳转到_ _ 如果对象是敌方团队,则为原始代码。 player : //这 会为玩家的队伍创建 一个 新 部分 jmp exit //这会跳转到出口并且对玩家的队伍没有任何作用。 originalcode: //这 是 原始 代码段movss [ rbx + 08 ] , xmm0 //这会执行原始 指令(针对敌方队伍) exit: //本 节 结束 此 脚本。 jmp 回到这里 " Tutorial-x86_64.exe "+ 2 EB6D : jmp newmem 返回这里:
部分8
-
1了解作弊引擎的工作原理。作弊引擎可以访问存储在计算机随机存取存储器 (RAM) 中的数据片段。当您运行某个软件(例如游戏)时,信息会从硬盘驱动器等静态存储位置传输到您的 RAM。从那里,可以读取和写入信息。作弊引擎允许您扫描存储在 RAM 中的信息并更改信息。
-
2理解术语。作弊引擎处理大量高级计算机代码。为了让事情更容易理解,理解一些涉及的术语会有所帮助。以下是作弊引擎中使用的一些术语:
- 值:值是计算机程序中附加了数值的任何东西。它可以是您的健康百分比,您拥有的弹药数量或您拥有的物体的数量。作弊引擎允许您扫描变量并对其进行更改。
- 地址:地址是信息在 RAM 中存储的位置。有时,值的位置可能会改变。
- 数据类型:数据类型是值的存储方式。I 可以是字节(即 2 字节、4 字节或 8 字节),也可以是浮点数或双精度数。
- 指针:指针是一个地址,其中包含一个由另一个地址写入的值。这些地址可能会在您每次加载游戏时更改,或者在游戏进行中的某个时候更改。
-
3了解 Cheat Engine 不适用于许多游戏。任何具有某种形式的作弊保护或在线多人游戏功能的游戏都不能与 Cheat Engine 一起使用,并且尝试使用 Cheat Engine 通常会导致您的帐户或个人资料被禁止在线玩。
- 如果您能够以某种方式使用作弊引擎来获取通常用真钱购买的资源,您可能会因盗窃而受到起诉。
- CE是一款备受瞩目的软件,因此大多数游戏都有某种形式的保护措施。
-
4了解哪些游戏可以与CE一起使用。较早的单人游戏和一些 Steam 单人游戏应该可以使用 Cheat Engine,但相关游戏必须具有一些您可以查看和更改的屏幕值。
- 许多没有社区链接的在线 Flash 游戏(例如,没有多人游戏和没有高分)也与 Cheat Engine 兼容。