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

这篇具有很好参考价值的文章主要介绍了Cheat Engine7.4 训练教程(非常详细)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一.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界面的“编辑”菜单下点击“设置”,然后选择语言:

ce7.4,CE,java,html,开发语言

三.训练教程

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

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

步骤 1: 加载进程

打开训练教程,如图:

ce7.4,CE,java,html,开发语言

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

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

ce7.4,CE,java,html,开发语言

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

ce7.4,CE,java,html,开发语言

 注意,上图的右下角可以输入通关密码,比如昨天你已经进行到第9关了,今天再玩的时候,不想再玩前面8关,就可以输入第9关的通关密码:31337157,这样就可以直接跳转到第9个步骤界面。

默认的是090453,即第2个步骤的界面。

步骤 2: 精确值扫描

ce7.4,CE,java,html,开发语言

 在CE里面,设置如下:

 ce7.4,CE,java,html,开发语言

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

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

ce7.4,CE,java,html,开发语言

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

ce7.4,CE,java,html,开发语言

步骤 3: 未知的初始值

ce7.4,CE,java,html,开发语言

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

ce7.4,CE,java,html,开发语言

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

 ce7.4,CE,java,html,开发语言

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

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

ce7.4,CE,java,html,开发语言

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

 ce7.4,CE,java,html,开发语言

步骤 4: 浮点数

ce7.4,CE,java,html,开发语言

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

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

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

ce7.4,CE,java,html,开发语言

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

步骤 5: 代码查找

ce7.4,CE,java,html,开发语言

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

做法如下:

1.找到数据的内存地址;

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

ce7.4,CE,java,html,开发语言

 此时会弹出一个对话框,如:

ce7.4,CE,java,html,开发语言

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

ce7.4,CE,java,html,开发语言

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

ce7.4,CE,java,html,开发语言

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

ce7.4,CE,java,html,开发语言

会弹个框出来:

ce7.4,CE,java,html,开发语言

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

ce7.4,CE,java,html,开发语言

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

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

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

这样做的目的是什么?

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

ce7.4,CE,java,html,开发语言

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

ce7.4,CE,java,html,开发语言

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

ce7.4,CE,java,html,开发语言

最简单的方法是,直接点击左下角的“高级选项”菜单:

ce7.4,CE,java,html,开发语言

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

 ce7.4,CE,java,html,开发语言

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

 ce7.4,CE,java,html,开发语言

步骤 6: 指针

ce7.4,CE,java,html,开发语言

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

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

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

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

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

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

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

 ce7.4,CE,java,html,开发语言

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

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

ce7.4,CE,java,html,开发语言

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

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

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

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

ce7.4,CE,java,html,开发语言

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

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

ce7.4,CE,java,html,开发语言

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

步骤 7: 代码注入

ce7.4,CE,java,html,开发语言

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

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

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

ce7.4,CE,java,html,开发语言

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

ce7.4,CE,java,html,开发语言

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

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

ce7.4,CE,java,html,开发语言

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

ce7.4,CE,java,html,开发语言

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

ce7.4,CE,java,html,开发语言

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

ce7.4,CE,java,html,开发语言

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

然后,再选择“代码注入”:

ce7.4,CE,java,html,开发语言

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

 ce7.4,CE,java,html,开发语言

把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

注意1,32位和64位的操作系统,alloc分配空间的方式略有不同: 

alloc(newmem,2048) //32位的操作系统,分配空间 

alloc是CE脚本语句,表示我们要为自己的脚本分配一段空间,与之对应的是dealloc,取消分配空间。alloc(newmem,2048)是说,我们分配一个2048字节的空间,并将其命名为newmem。 

X64版本教程的这一关中,CE自动生成的注入脚本有微妙的不同,其中分配内存的语句类似这样:

alloc(newmem,2048,"Tutorial-x86_64.exe"+2DB57)  //64位的操作系统,分配空间 

后面多了一个参数,表示我们希望在"Tutorial-x86_64.exe"+2DB57(要注入的位置)附近分配新的内存区域。这么做的原因在于,即使是64位环境,CPU也只支持32位的寻址,如果不这么做,可能会导致程序错误。

 注意2,上面代码中,我们用"jmp+nop"两条指令替换了原来的sub指令:

jmp newmem
nop 2

 这个细节很重要,首先我先要知道“sub dword ptr [rsi+000007E0],01”这条指令到底占了多少个字节?如下:

ce7.4,CE,java,html,开发语言

 5E-57=7个字节,所以我们如果要替换这行代码,那么替换的代码也只能占用且必须占满7个字节。而jmp newmem属于段间跳转,占5个字节,所以我们必须要用两条nop指令来把空间占满,不然内存出现空缺,肯定会报错。至于newmem那段代码,属于新分配的空间,可以不管。

要想知道汇编各指令的长度,也可以看看下面的这个文章:

汇编语言指令长度 - 走看看

注意,如果需要修改的指令所占的内存长度小于jmp所占的长度5,那又该怎么办呢?比如下图中,我们要将jne这条指令修改成jmp指令,但是它只占了2个字节:

ce7.4,CE,java,html,开发语言

 有种巧妙的处理方法就是,将下面的那条指令一起包含进来,看是否达到了5个字节,而上图红框中,第二条指令所占的空间是2C-25=7,加上原来的空间2,一共有9个字节,完全够用了,而且还超出了4个字节,所以要用“nop 4”来填满:

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

originalcode:
jne Tutorial-x86_64.exe+2B858
mov rcx,[rbx+000007D0]//第二条指令在这里重新包含进来

exit:
jmp returnhere

"Tutorial-x86_64.exe"+2B823:
jmp newmem
nop 4
returnhere:

注意,在新代码中,要把刚才替换的第二条指令一起包含进来执行。 

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

ce7.4,CE,java,html,开发语言

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

ce7.4,CE,java,html,开发语言

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

步骤 8: 多级指针

ce7.4,CE,java,html,开发语言

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

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

ce7.4,CE,java,html,开发语言

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

ce7.4,CE,java,html,开发语言

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

 ce7.4,CE,java,html,开发语言

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

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

ce7.4,CE,java,html,开发语言

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

ce7.4,CE,java,html,开发语言

 第五次查找:

ce7.4,CE,java,html,开发语言

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

ce7.4,CE,java,html,开发语言

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

然后把指针指的值改成5000:

ce7.4,CE,java,html,开发语言

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

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

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

ce7.4,CE,java,html,开发语言

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

ce7.4,CE,java,html,开发语言

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

参考文章:

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

【CheatEngine基础教程】三、Cheat Engine Tutorial实战 - 哔哩哔哩文章来源地址https://www.toymoban.com/news/detail-786788.html

到了这里,关于Cheat Engine7.4 训练教程(非常详细)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Centos 7 部署Docker CE和docker-compose教程

    ①、安装依赖包 ②、设置yum源 ③、生成并更新系统中的软件包缓存 ④、安装、启动、并设置Docker开机自启 Docker 启动命令 Docker 容器命令 Docker 镜像命令 可选。Docker 官方提供的默认镜像源位于海外,可能下载会很慢,可以通过配置国内的镜像源,加速下载。 ①、使用文本编

    2024年02月07日
    浏览(13)
  • 使用Cheat Engine与DnSpy破解Unity游戏

    使用Cheat Engine与DnSpy破解Unity游戏

    题目连接: 我们是windows系统,所以点击windows game下载游戏 双击运行pico.exe 屏幕上方的一串英文是叫我们找flag,我在这个小地图里走来走去也没flag,我上梯子后才发现突破点 墙外有一个旗帜,但是我们无法出去,有空气墙,我们碰到旗帜就应该能拿到flag了 目前能拿到flag的

    2024年02月05日
    浏览(13)
  • 【详细】解决联想拯救者Y7000p在ubuntu20.04未找到wifi适配器,安装rtl8852ce网卡驱动问题

            联想拯救者 Y7000P 安装 ubuntu 20.04 双系统后发现右上角无 wifi 图标,无法连接无线网络,蓝牙也不能用。说明没有网卡驱动。         返回windows系统在查询无线网卡型号为 realtek 8852ce ,安装相应网卡驱动,问题解决。解决问题后会发现不仅 wifi 模块出来了,蓝

    2024年02月19日
    浏览(11)
  • Docker CE介绍和CentOS7.5.1804离线安装Docker CE

    Docker CE介绍和CentOS7.5.1804离线安装Docker CE

    Docker CE(CE,Community Edition是社区版本的意思)是一个免费、开源的应用容器化平台,可帮助开发人员将应用程序打包成容器,并在任何地方运行,从而将应用与底层基础设施隔离开来,简化了开发流程并提高了应用程序的可移植性、可测试性和可伸缩性。 Docker CE 提供了完整

    2024年02月01日
    浏览(29)
  • Docker相关组件:docker-ce-cli、docker-ce和containerd.io的区别

    docker-ce-cli 是Docker的命令行客户端,用于与Docker守护程序交互; docker-ce 是Docker的社区版,提供了完整的容器化平台;而 containerd.io 则是底层的容器运行时组件,用于管理容器的生命周期和镜像管理。这些组件在Docker生态系统中各自发挥着不同的作用,共同构成了强大的容器化

    2024年03月13日
    浏览(10)
  • CE-Net

    CE-Net

    (1)提出DAC模块和RMP模块,以捕获更多高级特征并保留更多空间信息 (2)将所提出的DAC模块和RMP模块与编码器-解码器结构集成在一起,用于医学图像分割 (b)部分是shortcut mechanism 公式化为: 空洞率r对应于对输入信号进行采样的步幅 密集空洞卷积block的说明,它包含四个分支,能

    2024年02月13日
    浏览(6)
  • 2.安装Docker-ce

    2.安装Docker-ce

    进入centos根目录执行以下命令( 是linux系统种命令换行符,如果命令过长,可以用来换行) 在新主机首次安装 Docker Engine-Community之前,需要设置Docker仓库,之后,您可以从仓库安装和更新 Docker。 设置仓库,需要安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 dev

    2024年02月11日
    浏览(8)
  • Centos7安装Docker CE

    Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。 Docker CE 分为 stable test 和 nightly 三个更新频道。 官方网站上有各种环境下的 安装指南,这里主要介绍 Docker CE 在 CentOS上的安装。 Docker CE 支持 64 位版

    2024年02月06日
    浏览(14)
  • 问题:E: 软件包 docker-ce 没有可安装候选 E: 无法定位软件包 docker-ce-cli ......

    问题:E: 软件包 docker-ce 没有可安装候选 E: 无法定位软件包 docker-ce-cli ......

    最近在vmware上新建了一个ubuntu20.04,出现了上图问题。sudo apt-get update 后依然无法解决 查了一些博客,有的说依次找到 Software Updates - Other SoftWare 找到会发现报错的网址就在此处并取消勾选,但在我的环境上根本就没有找不到报错的网址;也有说进入/etc/apt/sources.list.d/ 目录 ,

    2024年02月03日
    浏览(8)
  • VG-4231CE压控晶体振荡器

    VG-4231CE压控晶体振荡器

    nbsp; nbsp; nbsp; 随着科技的飞速发展,各类电子设备对于稳定且精确的信号需求越来越高。VG-4231CE压控晶体振荡器(VCXO),它能提供稳定的工作环境和高精度信号,助您轻松应对各种高难度信号处理任务。3MHz至50MHz的频率范围,输出频率范围不包括50MHz,满足各种数字、模拟、

    2024年01月24日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包