代码替换功能,需要使用 Cheat Engine 工具的“代码查找”功能,来查找游戏数据存储在内存中的地址。首先找到当前数值的存储地址,并将其添加到下方地址列表中。然后右键单击该地址,并选择“找出是什么改写了这个地址”,将弹出一个空白窗口。接着,点击本教程窗口上的“改变数值”按钮,并返回 Cheat Engine,如果操作没有问题,在空白窗口中将出现一些汇编代码。选中代码并点击“替换”按钮,将其替换为什么也不做的代码(空指令),同时,修改后的代码也将放置在“高级选项”的代码列表中保存。点击“停止”,游戏将以正常方式继续运行,关闭窗口。现在,再次点击教程窗口上的“改变数值”,如果锁定速度足够快,“下一步”按钮将变为可点击状态。提示:在锁定地址时,如果速度足够快,“下一步”按钮也会变为可点击状态。
某些游戏重新开始时,数据会存储在与上次不同的地方, 甚至游戏的过程中数据的存储位置也会变动。在这种情况下,你还是可以简单几步搞定它。这次我将尽量阐述如何运用 “代码查找” 功能。
本关同样需要使用精确数值扫描
的内容来得到一个唯一的内存地址,读者可通过自己的尝试来找到这个地址,如下图所示;
当读者找到这个内存地址后,可在该地址上方右键,并选中找出是什么改写了这个地址,这就意味着当进程内的数值再次发生变化时,改写代码就可显示在列表中;
当读者点击改写按钮后CE则会监控这个内存区域,回到进程中点击改变这个数值,则CE会输出如下图所示的一段汇编代码;
CE修改器中所实现的是什么访问了内存地址
以及是什么改写了内存地址
其本质上是修改器在特定内存区域设置了内存断点,内存访问断点和内存写入断点都是用于对内存访问的监控和跟踪功能。
-
内存访问断点 [Access Breakpoint] 是指监控指定内存地址的读取操作(如MOV、MOVSX、MOVZX指令),当程序执行这些指令进行读取操作时,内存访问断点会中断程序运行,弹出断点信息窗口,并暂停程序的执行,以便进行调试和修改。
-
内存写入断点 [Write Breakpoint] 是指监控指定内存地址的写入操作(如MOV、ADD、SUB、PUSH、POP指令),当程序执行这些指令进行写入操作时,内存写入断点会中断程序运行,弹出断点信息窗口,并暂停程序的执行,以便进行调试和修改。
两者的主要区别在于监控的操作不同,内存访问断点监控的是对内存地址的读取操作,而内存写入断点监控的是对内存地址的写入操作。根据实际需要进行选择,使用内存访问断点或内存写入断点能够更方便地定位和排除程序问题,提高程序的可靠性和稳定性。
因为上图中我们选择的是改写地址,所以下的是内存写入断点,一旦特定内存区域被写入数据时,则断点会自动停留在修改此段数据的汇编指令上面,
此时我们选中代码并点击"替换"按钮,将它替换成什么也不做的代码(空指令),汇编的空指令为 nop,同时,修改后的代码也将放置在"高级选项"的代码列表中去(保存地址列表时会同时保存),至此点击下一步则可通关。