Cheat Engine基础教程:软件汉化及Tutorial通关思路

2023-10-10 13:30

本文主要是介绍Cheat Engine基础教程:软件汉化及Tutorial通关思路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CE从下载到汉化:

这里提供了官网的下载链接和我自己上传的7.4版本的安装包。

官网链接:Cheat Engine

安装好后的CE是英文,修改中文的方式如下:

在官网中有提供汉化包:

 点击下载这个压缩包,解压后得到文件夹:

 然后进入CE所在的文件下,选择language文件夹,然后将解压后的汉化包放入language文件夹中

进入文件夹后打开名为language.ini的配置文件:

 将*删除改成汉化包的文件夹名,保存文件之后程序就汉化好了。

工具安装好后尝试运行程序:

上图是Cheat Engine的操作界面,左上角被框中的电脑图标就是选择进程按钮,点击它可以选择想要修改的游戏的进程。 

在CE所在的文件夹中官方提供了两个练习程序(Tutorial、gtutorial),Tutorial比较简单,在这个程序中总共设置了八个关卡,通关完前五个关卡基本就可以在一些简单的单机游戏中为所欲为了,以下是Tutorial的通关思路:(以下的实例用的都是64位程序)

 Tutorial通关思路:

 这里直接下一步就好,然后回到CE程序,选择训练程序的进程:

1.精确数值扫描:(密码=090453)

这一关要做的就是把健康这个变量的数值改成1000。

首先在CE操作界面的数值里输入100,扫描类型为精确数值,点击首次扫描。 

 点击完后CE就会在练习进程中扫描整形变量数值为100的地址,并在左边罗列出来,下图可以看到总共扫描出了64个结果。

 这么多个地址我们无法确定到底那个才是健康值时哪个,但是上面有提示过可以点击打我 这个按钮来消耗健康值:

 点击后可以发现健康值发生了变化,这时我们再次在数值中输入97,点击再次扫描,CE软件就会去搜索刚开始为100然后又变成了97的变量所在的地址:

这个时候可以发现我们就找到了这个健康值所在的内存地址,双击它,它就会出现在下面的地址列表中:

 鼠标双击97,弹出改变数值选项卡。

 

将数值改变成1000就可以通过此关。 

2.未知的初始值:(密码=419482)

这关要找的数值在0~500之间,我们依旧能通过打我 这个按钮来消耗健康值。

通关方法是将扫描类型改为值介于···两者之间 ,填写数值为0~500:

 然后进行扫描之后,点击打我,再将扫描方式选择为减少的数值再进行扫描,这个步骤重复多次就可以找到健康值所在的地址:

3.浮点数:(密码=890124)

和精确数值那关一样只是将数值类型分别改为单浮点和双浮点。

4.代码查找:(密码=888899)

先看关卡描述:

某些游戏重新开始时,数值会存储在与上次不同的地方, 甚至游戏的过程中数据的存储位置也会变动
在这种情况下,你还是可以简单几步搞定它。

这关的目的是要让改变数值按钮失去作用,首先找到数值当前所在的地址,具体方式不再过多赘述。

 然后放入下方地址列表,右击找到的地址,选择找出是什么改写了这个地址(也可以直接按F6):

然后将弹出一个空白的窗口,在点击次改变数值按钮,就可以看到窗口中出现了一些汇编代码: 

选中指令点击替换,在弹出的窗口中输个名字就行。

这里再次点击改变数值就可以发现数值已经无法修改。

这里的原理是mov [rax],edx,这串代码的作用就是改写数值,然后将这串代码所在的几个字节全部替换成另外一个汇编代码nop (这个汇编代码的作用是不做任何事情,单纯用来填充空间),这样程序再次执行改变数值时执行的代码就是啥事也不干。

5.指针:(密码=098712)

关卡描述:

在本关的 Tutorial.exe 窗口下面有两个按钮,一个会改变数值,另一个不但能改变数值而且还会改变数值在内存中存储的位置。

首先找到数值的地址,然后再查找是什么改写了这个地址并调出改变地址的汇编代码,选择详细信息按钮。

 

可以看到这里列出的是改变地址的汇编代码以及它前后的代码,下方的RAX这些以R开头的是CPU的寄存器名。不过不懂这些也没关系,官方给的解释是如果打开详细信息中的汇编代码有中括号就找对了。

这里我们关注详细信息中的中间那句话:您要查找的该地址的指针数值可能是015EE630

复制这串十六进制数到CE的主窗口选择新的扫描,然后对这串十六进制数值进行扫描

将这个地址加入到下方的地址列表: 

 100325AD0就是我们要找的基址。

搜索到了这个指针可以发现地址是绿色字体,如下图选择手动添加地址按钮:

 在弹出的对话框中勾选指针,对话框就会从左图变成右图的样子:

 下面的操作直接套用官方原话

"添加地址"窗口将发生变化,多出了"Address of Pointer(指针地址)"和"Offset (Hex)(偏移量(16进制))"的文本框,以便您键入一个指针的地址和偏移量。
请尽量填入刚才扫描到的地址。
如果汇编指令中的方栝号里存在计算(例如:[esi+12])则把数值部分填在"Offset (Hex)"的文本框中,如果不存在,则让它保持为 0 。

这里的方括号里的计算就是一开始找到的详细信息:

很明显这里并没有偏移直接在将基址输入框中就行,然后点击确定: 

 

 可以看到地址列表中多了一个p→ 指向的地址,如果后面的地址等于第一行一开始找到的数值地址相同,就代表找到指针了。

这关的通关条件需要将指针地址的数值锁定为5000,锁定这个功能就是在地址列表中的激活那一列的单选框选中即为锁定数值: 

改变指针这一关寻找基址这个步骤需要记住的是基址都是绿色字体显示的,而黑色字体显示的字体都是动态地址,如果找到最后有多个绿色地址,在一般情况下选择第1个。

到这里CE的基本使用就差不多都了解了,其实只要会精确数值查找操作就已经可以应付一些植物大战僵尸这类古早的小游戏了,之后的挑战就需要会一点汇编语言的知识才容易理解了。

6.代码注入:(密码=013370)

关卡描述:

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

直接从汇编代码这步开始分析:

 

找到了改变健康值的代码后,这里是使用的sub命令实现减一的效果,直接将其修改为add再将1改为2,就可以做到健康值从减一变成了加二。

右击指令,选择在反汇编程序中显示地址

 双击需要修改的代码,修改好后点击确定。

 

 这里顺便贴一下官方的教程:

查找这个地址,然后看看是什么在改写它("找出是什么改写了这个地址")。 当你看到那条减少数值的汇编代码后,选择"显示反汇编程序",然后打开"自动汇编窗口"(菜单-工具->自动汇编 或 按下快捷键 Ctrl+a ),选择"模板"中的"代码注入"。CE 将自动生成一部分汇编代码并为你输入指令做好准备(如果 CE 没有给出正确的地址,你也可以手工输入它)。 注意 alloc 这部分代码,它会为你的代码分配出一小块空白的内存,过去,在 Win2000 之前的系统,这种行为存在安全隐患,很可能导致系统崩溃,幸运的是,这种情况在 win2000 以后的操作系统得到改善。 也要注意line newmem: 、originalcode: 以及用文本"此处放置你的代码"标示出的空白部分 正如你猜测的, 在这儿可以写下每次增加2点健康值的代码。 在这种情况下推荐你使用 "ADD" 汇编指令, 下面是一些示例: "ADD [00901234],9" 使 [00901234] 地址的值增加9 "ADD [ESP+4],9" 使地址指针 [ESP+4] 的值增加9 在本关的情况下,你可以使用相同的手法处理减少健康值的那条原代码方括号之间的部分。

7.多级指针:(密码=525927)

关卡描述:

在第 6 步,你已经清楚 1 级指针的概念和用途,并可以利用数值的首个地址找到存放数据真正的基址。
在本关中,你将看到 4 级指针,它由第一个指针指向第二个指针,再由第二个指针指向第三个指针,由第三个指针指向第四个指针,最终指向健康值的真正地址。

前面第五关找一层就找到了基值,但一般的单机游戏中往往都是要往上找三到四级指针才能找到基址,这关就是这样层层套娃,一层一层剥吧:

找到数值所在地址,之后查看到其指向的指针为:

 

 这里建议使用记事本将关键信息记录下来:

 然后是搜索搜索地址01655450

将其加入地址列表,右击地址之后选择查找是什么访问了这个地址

tips:这里记得不是选择改变而是访问。

 

 到了这里发现出问题了指针基址又指向了01655450,这时不要谎,看下图015D1960地址处的数值为01655450也就是说当程序要改变健康值时就一定为访问015D1960这个地址。

所以我们这里直接搜索015D1960这个地址。 

 这里出现了两个结果,将这两个结果都放入地址列表,通过点击改变数值按钮来观察最后那个地址是被访问的:

标签一
标签二

 很明显015D6778就是第二级指针的值。

 之后的三级指针和四级指针就没有出现任何意外了都可以通过正常手段找到:

 

 最后搜索四级指针基址:016553D0

就成功找到了基址:100325B00 

手动添加地址:

 

两者相等。 

8.注入++:共用代码(密码=31337157)

关卡描述:

这一步将会解释如何处理游戏中的共用代码, 这种代码是通用在除了自己以外的其他同类型对像上。
常常你在修改游戏的时候, 你找到了一个单位的健康, 或是你自己角色的健康, 你会发现一种情况: 如果你把健康相关代码移除的话,其结果是你的角色无敌, 但你的敌人也无敌了。
在这种情况下, 你必须想办法区分自己与敌人。
有时候很简单, 你只要检查最前面的4个字节(函数指针表), 它通常指向一个独一无二的地址, 代表着游戏玩家角色,而有的时候它是一个团体号码, 或者也可能是一个指针, 它指向另一个指针, 该址针又指向下一个指针,搞不好还指向下下一个指针, 最后指向一个玩家名字。总之完全取决于游戏的复杂度, 以及你的运气

这里的提示说游戏中有些代码是共用的,我们分别定位四个玩家的血量,然后找他们的访问地址,可以发现四个人的访问地址一模一样,也就是说如果我们修改了这里的代码,在对我方阵营生效的同时对敌方阵容也会生效。 

 tips:这里还有一个技巧,向上面这样一个一个查看是很麻烦的事情,这里可以只定位一个,然后选择显示反汇编程序:

在对应的指令上右击显示找出这个指令访问的地址

 然后依次对四个玩家进行攻击,可以发现每个玩家共用的都是同样的代码。

 

通关条件很明显是要左边的两名玩家战胜右边的两名BOSS,这里有几种方法解决战斗,先说第一种。

方法一:动态调试

首先随便点一下各个玩家的攻击按钮,这里可以发现一个规律,每次玩家阵营扣血都是几滴几滴的扣,具体扣多少是随机的,而BOSS阵容扣血每次都只扣一滴。发现这个规律后,开始动态调试程序。

随便找一个操作码访问窗口选择显示反汇编程序 以此调处共用的反汇编代码:

 在访问地址代码处也就是第一行下断点,点击攻击程序会自动停在断点出,这里可以对每个玩家各攻击几次,然后观察参数变化,可以发现对玩家每次攻击的伤害都是大于1的而且伤害的值存在了RSI寄存器。

 上图RSI的值为2,Eric的血量为71,然后点击运行,下图Eric的血量就变成了69。

 发现了这些信息,就可以大概理一下方法一的思路了,在下断点处进行代码注入,当程序执行到这里时,对RSI寄存器的值做判断如果值为一时,就正常执行原来的代码,如果值不为一就什么也不做。思路就是这样具体操作如下:

点击工具选项卡→选择自动汇编→选择模版选项卡→选择代码注入

 

 打开模版后在newmem段中输入要注入的代码:

cmp rsi,1               // 判断扣血量是否为1
jz originalcode         // 如果为一则执行源代码扣一滴血
jmp exit                // 如果不为一则什么也不做。

 完整代码为:

alloc(newmem,2048,"Tutorial-x86_64.exe"+2F25D) 
label(returnhere)
label(originalcode)
label(exit)newmem: //这是分配的内存,你已经拥有读、写、执行的权限。
//在此处输入你的代码
cmp rsi,1
jz originalcode
jmp exitoriginalcode:
movss [rbx+08],xmm0exit:
jmp returnhere"Tutorial-x86_64.exe"+2F25D:
jmp newmem
returnhere:

输入好代码后点击执行,然后就可以按重新启动游戏并自动执行按钮来验证方法可行性:

方法二:官方解法

官方的解法有发在youtube上,点击实例程序右上角的灯可以直到教学链接:

 

还是打开反汇编程序,在当前指令上右击,选择找出这个指令访问的地址,之后会弹出新的窗口: 

 

打开上图窗口后是空的,很简单是因为这时没有选择攻击任何玩家自然没有代码访问该地址,此时回到学习软件,挨个点击一遍四个玩家的攻击按钮,窗口就会出现四条记录: 

 全选四条记录,右击选择打开选中地址的分析数据

之后一路选择正确就会打开结构分析窗口(中途出现的4096表示是以当前地址开始向后分析多少个地址可以改小些因为用不了这么多,也可以不用改问题不大):

 到这一步就是找规律了,查看这四列相同偏移的值有何异同(其实看到这里有C语言基础的就可以猜出来每个成员就是一个结构体,这四个结构体成员的结构体类型可能是一样的):

0x08   ----   单字节浮点数,又和健康值一一对应,确认是血量无疑
0x0c   ----   不知道有什么用
0x10   ----   也不确定
0x14   ----   阵容编号
0x18   ----   成员名称的字母个数
0x19   ----   成员名称

这里我们大致猜测了一些结构体成员所代表的意义。到这里就是编写注入代码了,这次选择的突破口是位于偏移0x14的阵容编号,通过判断RAX+0x14处的值来区分阵容,代码和之前的代码类似:

cmp [rbx+14],1      //判断Team Nameber是否为1
jnz originalcode    //不为1则执行原来的减一代码
jmp exit            //否则代表为己方阵容成员,什么也不做相当于跳过了当前语句

 

点击执行,然后回到学习程序选择重新启动游戏并自动执行,就可以验证这个方法成功与否了。 

tips:官方其实在这个方法之前还介绍了一种将两个阵容分成两个Group的方法,但着实是听不懂他们在说什么东西,自动翻译也没翻译出来,感兴趣的可以去youtube上自行了解。 

这篇关于Cheat Engine基础教程:软件汉化及Tutorial通关思路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/180755

相关文章

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

【Jupyter Notebook】汉化

1.打开:Anaconda Prompt 2.输入:"activate Zhui01"(注意:Zhui01是刚创建的环境名字) activate Zhui01 3.输入:"pip install jupyterlab-language-pack-zh-CN" pip install jupyterlab-language-pack-zh-CN 4.打开:Jupyter Noteb

免费也能高质量!2024年免费录屏软件深度对比评测

我公司因为客户覆盖面广的原因经常会开远程会议,有时候说的内容比较广需要引用多份的数据,我记录起来有一定难度,所以一般都用录屏工具来记录会议内容。这次我们来一起探索有什么免费录屏工具可以提高我们的工作效率吧。 1.福晰录屏大师 链接直达:https://www.foxitsoftware.cn/REC/  录屏软件录屏功能就是本职,这款录屏工具在录屏模式上提供了多种选项,可以选择屏幕录制、窗口

三相直流无刷电机(BLDC)控制算法实现:BLDC有感启动算法思路分析

一枚从事路径规划算法、运动控制算法、BLDC/FOC电机控制算法、工控、物联网工程师,爱吃土豆。如有需要技术交流或者需要方案帮助、需求:以下为联系方式—V 方案1:通过霍尔传感器IO中断触发换相 1.1 整体执行思路 霍尔传感器U、V、W三相通过IO+EXIT中断的方式进行霍尔传感器数据的读取。将IO口配置为上升沿+下降沿中断触发的方式。当霍尔传感器信号发生发生信号的变化就会触发中断在中断

HomeBank:开源免费的个人财务管理软件

在个人财务管理领域,找到一个既免费又开源的解决方案并非易事。HomeBank 正是这样一个项目,它不仅提供了强大的功能,还拥有一个活跃的社区,不断推动其发展和完善。 开源免费:HomeBank 是一个完全开源的项目,用户可以自由地使用、修改和分发。用户友好的界面:提供直观的图形用户界面,使得非技术用户也能轻松上手。数据导入支持:支持从 Quicken、Microsoft Money

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文

PDF 软件如何帮助您编辑、转换和保护文件。

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的 PDF 文档软件需求。 不同的 PDF 文档软件程序可以具有不同的功能,因此在决定哪个是最适合您的 PDF 软件之前,请花点时间评估您的

梳理2024年,螺丝钉们爱用的3款剪辑软件

这年头,视频到处都是,就跟天上的星星一样数不清。不管你是公司里的新面孔,还是职场上的老狐狸,学会怎么剪视频,就好比找到了赢的秘诀。不管是给上司汇报工作,展示你的产品,还是自己搞点小视频记录生活,只要是剪辑得漂亮,肯定能一下子吸引大家的目光,让人记得你。咱们今天就来侃侃现在超火的三款视频剪辑工具,尤其是PR剪辑,你肯定听说过,这货在剪辑界可是大名鼎鼎,用它剪视频,既专业又麻利。 NO1. 福昕轻松