简介
Cheat Engine自带了一个Tutorial引导初学者快速入门CE,一共10关,其中第10关分为3小关,本篇将对1~6进行详解。7~10见下一篇
完整的视频讲解在BIlibili同名账号:KrnlsYs
我使用的版本是CE7.5,处于演示目的,我是用的是中文版,建议各位有能力的还是用英文版
在如下图所示位置启动自带教程,以32位为例(x86_64是64位版本,与32位的思路完全一致,只是汇编和寄存器等方面有所不同)
打开以后大概长这样
第一关、
说的非常啰嗦就不截图了,实际上只是选定目标进程而已,在这里选择Tutorial程序,完成之后即可点击下一步
第二关、精确值扫描
实际上就是用精确值扫描这个生命值,并将其修改为1000
按照图示设置扫描
发现有400多个结果
点击按钮使血量变化为99,点击下次扫描搜索99
此时仅剩一个结果,说明这就是真正的血量,根据要求修改为1000
双机添加到下方地址列表,并在“值”列双击,将其修改为1000即可,来到下一关
第三关、未知初始值扫描
游戏中很常见的情况是不知道想修改的值具体是多少,因此可以通过变化趋势筛选,最终找到这个值
这关需要我们找到生命值并修改为5000。
先搜索未知初始值
此时有大量结果,点击攻击我,搜索减少的值
仍然有大量结果。再次点击攻击我,可以发现下方提示了具体掉了多少血量
这种情况下可以搜索具体减少了多少,修改扫描类型为减少的值为
设置为9点击再次扫描
可以发现除了第一个之外,其余四个都不像是血量,因此将第一个修改为5000即可过关。当然也可以进一步重复之前的步骤筛选,但也没必要,因为这种一眼就看出来了
第四关、浮点扫描
这关可以结合第二关和第三关的方法一起扫描,唯一需要注意的是,生命值是以浮点数存储,而弹药是以双浮点存储,扫描时类型要选择正确,否则扫不到
找到真实地址后分别将以上两项数据修改为5000以上即可过关,比较简单,就不演示了
第五关、代码查找
简单来说,这关需要我们查找写入生命值的代码,并将其替换为什么也不做的代码(nop),这样可以实现简单的无敌效果,因为修改生命值的代码已经被替换为什么也不做的代码了(当然可能存在副作用,后边关卡会讲)
首先还是先找到这个值,注意搜索4字节整数,根据前几关的方法找即可,不再演示。
找到以后右键,查找写入该地址的代码
此时提示附加调试器,点击确定,然后会弹出一个窗口,里边没有指令出现,因为还没有代码修改这个值,因此点击tutorial中的修改值让这个值变化,就会出现一条新指令。也可以点击多次,会发现点了几次前边的计数就是几,代表这个指令执行了多少次
右键选择使用Nop替换 用空指令替换(不同版本翻译可能有差异,总之就是这个意思),然后确定
此时再次单击按钮会发现值已经不会变化了,因为修改它的代码已经被我们替换为什么也不做的代码了,来到下一关
第六关、指针
指针也叫作地址,学过编程的话比较好理解,如果没学过也没关系,只需要知道,存储数据肯定需要一个“地方”,这个地方(即指针或地址)存储着数据,比如血量。
还是先找到这个值,不再演示了。注意寻找的过程不要点击修改指针。找到以后,记住这个地址
右键查找写入,弹出框后再次点击修改值,会发现新增了代码
双击这条代码,弹出一个新框
标红的代码就是我们双击的代码。mov 实际上就是赋值,注意右边是源操作数,左边是目标操作数,而[]括号表示把括号里的东西作为地址再取值,因此 mov [edx],eax的真实含义是,将eax的值赋值给edx这个地址里的值
注意其中edx就是我之前提过要记住的地址,而eax是十六进制的0xBF,用计算器转换为10进制即191,与Tutorial中对应。所以这条执行完之后,就会把191放到0x1886458这个地址里,表现为下图
既然edx是我们想要的数据的地址,所以我们可以搜索一下看看edx是从哪来的
勾上十六进制,选择4字节(如果是64位需要选择8字节)
搜索,发现出现两条,其中第一个是绿色的
绿色表示静态地址,通过静态地址和偏移(后边会讲)总是可以定位到我们感兴趣数据的真实地址,先不讲太复杂,双击加到地址列表,再双击,点一下指针即可变为如下形式,把16进制去掉就可以显示191(我这里显示的值为5000是因为我修改了,忘了截图,实际上对应本篇应该是191)
确定,再将其值修改为十进制的5000,确定,然后锁定
此时再点击tutorial里的修改指针,即可过关