思路:先扫描所有的未知道初始化的值,一般是4字节,然后我们先种植一棵植物再通过CE扫描不断变化的值,等植物冷却结束后再去扫描未变化的值,重复操作。然后找到冷却值,然后通过汇编的方式去编写nop代码,让控制时间冷却的代码制空。
具体步骤如下:
1.扫描未知初始值
2.不断尝试,找到需求修改的值,右键是谁访问了它
4.一般找move相关的指令,该指令是赋值操作
5.点击指令,然后点击右边的显示汇编
6.右键指令,然后选择使用空代替
然后回到游戏查看,植物是否没有冷却时间了。发现成功了。但是如果你想重启游戏后也可以让他生效,这时候我们可以编写对应的脚本让他去激活。
7.编写制空脚本,点击工具,自动化装配
8.点击如同的模板
9.编写替换的脚本
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
7FF97B66DD38:
db 90 90 90[DISABLE]
//code from here till the end of the code will be used to disable the cheat
7FF97B66DD38:
mov [rax+44],edi
- [ENABLE]:这是启用脚本的标记,Cheat Engine 会在启用脚本时执行[ENABLE] 部分的代码。
- 7FF97B66DD38::这是一个 内存地址,它指定了你要修改的目标内存位置。在这个例子中,7FF97B66DD38
是一个具体的内存地址,通常表示一个 指令的起始地址。它可能是在某个模块中(比如游戏的可执行文件或 DLL 文件)。 - db 90 90 90:这条指令表示将内存地址 7FF97B66DD38 处的字节替换为 90 90 90。
- 90 是 NOP(No Operation) 指令,它表示 不做任何操作。通过将一条指令替换为 NOP,实际上是 禁用了该指令 或者
跳过了该操作,从而改变程序的行为。 - 在这里,它的作用是:将原本位于 7FF97B66DD38 地址的指令(无论它是什么)替换为 3 个 NOP
指令。这意味着该地址上的原始指令不会被执行,程序会跳过这些指令。 - [DISABLE]:这是禁用脚本的标记,Cheat Engine 会在禁用脚本时执行 [DISABLE] 部分的代码。
- 7FF97B66DD38::这是和 [ENABLE] 部分一样的内存地址,表示你要恢复的目标位置。
- mov [rax+44], edi:这条指令是将 edi 寄存器的值存储到 rax + 44
处的内存位置。也就是说,在禁用脚本时,恢复原本被替换掉的指令。这会让程序重新执行原本的操作。
其中7FF97B66DD38这个地址,你双击指令mov [rax+44], edi,就可以看到。
10.保存,并且每次开启游戏请再CT表中激活。
点了前面的active才算激活,不知道它为什么点击之后是个红色X,不知道的还以为是禁用。到这里就OK了