Cheat Engine7.4 训练教程(非常详细)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

目录

一.CE是干什么的

二.怎么获得

三.训练教程

步骤 1: 加载进程

步骤 2: 精确值扫描

步骤 3: 未知的初始值

步骤 4: 浮点数

步骤 5: 代码查找

步骤 6: 指针

步骤 7: 代码注入

步骤 8: 多级指针


提示这篇文章不是一天写完的所以也不要指望一天就能看完并理解。

一.CE是干什么的

引用下百度百科

Cheat Engine是一款专注于游戏的修改器。它可以用来扫描游戏中的内存并允许修改它们。它还附带了调试器、反汇编器、汇编器、变速器、作弊器生成、Direct3D操作工具、系统检查工具等。

二.怎么获得

官方下载地址

1. Cheat Engine

2. https://www.cheatengine.org/download/ch_cn.zip

第2个链接是中文语言包这个语言包是6.7版本的但是CE现在最新版是7.4的。把这个压缩包解压到CE安装目录的languages文件下然后找到该目录的language.ini文件修改如下

PreferedLanguage=ch_cn

如果实在看不惯这个6.7也可以在解压后的ch_cn文件下面找到文件cheatengine-x86_64.po用记事本打开搜索字符“6.7”然后修改成7.4。

修改后

#: mainunit2.cename
msgctxt "mainunit2.cename"
msgid "Cheat Engine 7.4"
msgstr "Cheat Engine 7.4"

也可以在CE界面的“编辑”菜单下点击“设置”然后选择语言

三.训练教程

Cheat Engine做得非常人性化的地方就是自带教程这个教程会一步一步的教你如何操作不是那种纯理论的说教这点做得很好非常值得推崇。

Cheat Engine 训练教程 (v3.3)一共有很多个步骤由浅入深层层推进。它将尝试讲解在游戏中作弊的一些基本知识并帮助你熟悉 Cheat Engine 的使用方法。

步骤 1: 加载进程

打开训练教程如图

也可以直接在CE安装目录下找到文件Tutorial-x86_64.exe并打开。

然后点击"选择进程"图标按钮左上角那个带有电脑的图标当进程列表窗口打开后找到这个训练程序进程名是"Tutorial-x86_64.exe"我电脑操作系统是64位的如果操作系统是32位的就打开Tutorial-i386.exe。

 然后就可以进入第二步正式开始训练了。

步骤 2: 精确值扫描

 在CE里面设置如下

 

 上图的意思就是精确扫描在内存中值为100的数据。由于大多数WINDOWS应用程序都使用 4 字节存放数据所以数值类型一般都选4字节小数除外。

首次扫描时内存中值为100的数据会比较多点击“打我”健康值减少比如减少到98那么在CE中输入扫描值98然后点击“再次扫描”直到结果里面只剩一条数据时

 然后双击这个地址就会在下方的地址列表中出现这条数据的详细信息再双击93这个值把它修改成1000“下一步”按钮就被点亮了

步骤 3: 未知的初始值

 如果不知道要查找的值是多少比如上图的血条就不能采用精确查找的方式而是选择“未知的初始值”

 然后点击“首次扫描”这次扫描会把内存中所有的值都扫出来因为值是未知的。关键就在于第二步点击“打我”以后“血条”就会变短值减小。这个时候把扫描类型变为"减少的数值"然后再次扫描。

 

 注意上面1中红框的部分只有首次扫描选择“未知的初始值”才会出现。

 然后不断的点击“打我”不断的再次扫描最后只剩下几条数据

 因为步骤3提示里面已经说了这个健康值的范围在0-500之间所以这个值应该就是上面选中的这条数据。然后把这个值改为5000就可以进入下一步了。

 

步骤 4: 浮点数

浮点数就是针对数据为小数的情况下面有条提示

提示: 扫描双浮点数类型建议禁用 "快速扫描" 

 也就是在扫描小数的时候最好是不勾选“快速扫描”

 其实大多数时候这个选项勾起也没有影响。然后把这个值改为5000第二个值“弹药”也是类似的只是把数值类型改为“双浮点数”快速扫描不勾选。

步骤 5: 代码查找

 这个步骤的作用是找出修改数据的代码直接修改汇编代码来锁定数据类似于无敌状态。

做法如下

1.找到数据的内存地址

2.右键选择“找出是什么改写了这个地址”

 此时会弹出一个对话框如

再次点击按钮“改变数值”修改数据的汇编代码就出现了

 点击详细信息修改代码如下

 把这行代码替换成什么都不干的空指令直接右键选择“使用空指令替换”

会弹个框出来

 直接点击确定代码就修改完成了

 可以看出用了两条nop来替换是因为一条nop指令只占一字节而上面的“mov [rax],edx”占了两个字节的地址所以需要两条它的效果和"nop 2"是一回事。

 替换完成以后再点击改变数值时下面的值将不会再改变。

另外我们可以把当前的数据保存起来文件名为Tutorial-x86_64.ct。

这样做的目的是什么

目的就是把CE关闭后再重新加载Tutorial-x86_64.exe文件进程时会弹一个框出来

点击yes后界面会出现一个“高级选项”的界面这里面就有刚才替换的那行代码的信息。

这个对话框也可以手动加载那就是“文件”菜单中的“读取”可以打开已保存的ct表。

回到刚才的话题在这行代码上右键选择“使用空指令替换”

 

替换后点击“改变数值”的按钮数字便不会改变。当然可以继续右键“还原代码”那么“改变数值”按钮会再次生效。这样就可以来回切换相当方便。 

 

步骤 6: 指针

 在明白指针是做什么之前先要明白内存地址分为基址和动态地址。

基址不管是谁的电脑打开多少次都不变的地址。

动态地址会随着环境的改变而变化的地址。

如果某个数据是由一个动态的地址指令来改变的我们是不是每次都要重新再寻找一次地址

当然不是这就是指针发挥作用的时候了。

用不变的地址定位会变化的地址即用基址定位动态地址。

 前面的步骤都是一样的在此省略。我们直接找到修改数值的这行代码然后查看详细信息如图

 

 “012380F0”是一个动态地址我现在要做的就是往回找去找基址。

回到CE主界面查找16进制地址

 可以看到左边绿色的地址就是基地址。

CE中绿色的地址是基址黑色的地址是动态地址。

下面我们要做的就是做一个指针通过这个基址来找出这个动态的地址。这样做的目的就是不用每次加载游戏的时候都来重新找一遍动态地址因为这个基址是不变的。

点击“手动添加地址”如图

 上面“指针”的0代表偏移量由“mov [rdx],eax”可知没有偏移量所以直接填0.

当点击“改变指针”按钮3s内把指针后面的值改为5000即可。

 可以看出上面的指针指向的地址也发生了变化但是我们修改这个指针的值时依然能修改到最开始时想要修改的数据是不是很有意思

步骤 7: 代码注入

 通过修改反汇编代码实现以下目标

你将有一个健康值和一个每按一次将减少 1 点健康值的按钮你的任务是利用"代码注入"使每按一次按钮增加2点的健康值。 

同样先找出是这个地址然后右键“找出是什么改成了这个地址” 

然后再点击“打我”后就会出现修改数值的这行代码再点击“显示反汇编程序”

双击这行代码可以直接修改成

add dword ptr [rsi+000007E0],02  // 增加2

 不过这个只能叫修改代码谈不上注入。注入代码是指注入一块代码片断比起单行修改这种操作空间更大更利于发挥。要注入代码需选择“自动汇编”菜单 

 选择后会弹出一个“自动汇编”的窗口选择“CT表框架代码”

 然后会出现一个框架代码段

 这个【ENABLE】表示作弊代码激活时执行而【DISABLE】表示作弊代码未激活时执行相当于我们随时可以开关闭作弊代码。

然后再选择“代码注入”

 选择需要修改代码的地址10002DB57与"Tutorial-x86_64.exe"+2DB57其实是一回事"Tutorial-x86_64.exe"是基地址或者说叫模块地址。

 

把sub(减法)改成add加法即可

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048,"Tutorial-x86_64.exe"+2DB57) 
label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:
//sub dword ptr [rsi+000007E0],01
add dword ptr [rsi+000007E0],02  // 增加2

exit:
jmp returnhere

"Tutorial-x86_64.exe"+2DB57:
jmp newmem
nop 2
returnhere:
 
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"Tutorial-x86_64.exe"+2DB57:
sub dword ptr [rsi+000007E0],01
//Alt: db 83 AE E0 07 00 00 01

 改好以后点击文件菜单中的“分配到当前的CT表”不要点下面的"Execute"。再后面我们就可以知道如果点击“execute”的话我们就不能对作弊代码实现打开、关闭的自由切换。

 回到CE主界面下面的地址栏会多出一行名字叫“自动汇编脚本”

 如果把前面的激活框选中则点击“打我”数值会增加2。如果去消激活框则数值会减少1.

步骤 8: 多级指针

 多级指针和上面说的指针是一回事步骤6的指针只查找了一次就把基地址找出来了。现实情况是基地址可能需要多查找几次才能找出来这就需要多个指针来作为中转站。

第一次查找时还是右键选择“找出是什么改写了这个地址”找到地址的可能值是011310F0偏移量18.

 第二次查找的时右键要选择“找出是什么访问了这个地址

 单击“改变数值”按钮显示有两条指令访问这个地址。那我们要寻找的到底是哪个地址呢

 

指令“mov rsi,[rsi]”有个问题就是esi原始的值被覆盖了而我们需要的是之前的值所以要选择第一条的地址指向的值02D1A530偏移量是0。

第三次查找依然有两条指令访问这个地址还是选择第一条找出的地址是02CC5F20偏移量是18

 第四次查找地址是011186C0偏移量是10

 第五次查找

 找了五次终于把这个绿色的基地址找出来了然后点击“手动添加地址”

 上面的界面只需要填5个地方从最下面开始往上填即先填基地址然后填第四次、三次、二次、一次的偏移量右边蓝色的地址是根据偏移量自动计算出来的。

然后把指针指的值改成5000

 再回到训练教程Tutorial-x86_64.exe步骤8界面点击“改变指针”按钮就可以激活“下一步”按钮过关了。

 再多说一点当改变数值时出现多条指令访问同一地址的情况。比如上面第二次查找时查出了两条访问了此地址的指令到底该选哪一条指令的问题。

其实还一种方法那种就是每条指令都点进去看一下比如查找16进制地址02CC89E0后有两条指令访问了这个地址我们先点第二条指令mov rsi,[rsi]进去看看发现它指向的地址居然还是我们查找的地址02CC89E0所以通过这条指令是找不到基地址的

我们再点第一条指令进去看看它指向的是02D1A530这个地址和原地址不一样所以可以沿这个地址继续往下找。

步骤9就不在这里讲了有点复杂有机会单独写一篇文章。

参考文章

CE修改器使用教程 [基础篇]

【CheatEngine基础教程】三、Cheat Engine Tutorial实战 - 哔哩哔哩

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6