【CheatEngine】三、内存修改进阶 您所在的位置:网站首页 qqsvipid怎么改 【CheatEngine】三、内存修改进阶

【CheatEngine】三、内存修改进阶

2023-12-22 02:02| 来源: 网络整理| 查看: 265

我是星夜,今天带来的教程很难

但这是ce的初入门径而已,一般的ce教程不会涉及下面这些

如果习惯了懒惰或者害怕面对困难,本教程不适合你

进阶我将分两天来讲,今天是第一天

免责声明:本教程仅供交流学习,禁止用于任何商业用途  

今日主题:ce进阶操作 

完成目标:因人而异

引言:

从本章开始,你就开始接触 CE 的一些进阶用法了,如果只是初步的修改,那么 CE 根

本不能算得上一款优秀的数据修改软件,从本章开始,难度也开始上升了,来吧,准备好迎

接挑战了吧

1. 汇编代码查找

教程重述:

某些游戏重新开始时,数据会存储在与上次不同的地方, 甚至游戏的过程中数据的存储

位置也会变动。在这种情况下,你还是可以简单几步搞定它。

这次我将尽量阐述如何运用"代码查找"功能。

下方的数值每次启动教程的时候都会存放在内存不同的位置,所以地址列表中的固定地

址是不起作用的。

我们要先找到这个数值当前的存储地址(要如何去做,相信不用我再啰嗦了)。

当你找到了地址就添加在下方的地址列表中,然后右健单击该地址,在弹出的菜单中选

择"找出是什么改写了这个地址",将弹出一个空白的窗口。

接着点击本教程窗体上的"改变数值"按钮,并返回 Cheat Engine 。如果操作没问题 在 刚才弹出的空白窗口中会出现一些汇编代码。

选中代码并点击"替换"按钮,将它替换成什么也不做的代码(空指令),同时,修改后的

代码也将放置在"高级选项"的代码列表中去(保存地址列表时会同时保存)。

点击"停止",游戏会以正常的方式继续运行下去,点击"关闭"按钮,关掉窗口。

现在,再次点击教程窗口上的"改变数值",没问题的话,"下一步"将变为可点击的状态。

提示:如果你以足够快的速度锁定住该地址,"下一步"按钮也会变为可点击的。

步骤演示:

第一步,找到100这个数值的地址(相信你已经非常熟练了)

第二步,将其添加进下方的地址列表,然后右键->找出是什么访问了这个地址

(出现提示直接确认就好。)

会弹出一个新的窗口(内存调试器)

第三步,回到 Tutorial,点击改变数值,然后 我们会看到,内存调试器找到了改写这个地址

的汇编代码(这里就开始涉及汇编了,想想就有点刺激)

(对这个地址所储存数值,进行了汇编操作MOV [rax],edx,意思是把 edx寄存器里面的值 放进rax这个变量内)(我知道你们听不懂。。。不过不影响)

第四步,右键->使用空指令nop替换,然后回到Tutorial,点击改变数值,好了,可以进入 下一关了

本小节貌似什么都没讲,恰恰相反,这里讲了如何找到控制游戏内这个数值变化的方法,假

如我能让这个变化不是用寄存器(也就是某个东西里面的数值)来改变,而是直接把99999

作为这种变化呢,是不是下次再改变这个数值的时候,这个数值就会直接增加99999了呢?

(其实这就是所谓的反汇编呀)

2. 指针

 所谓的指针,就是储存有游戏数值地址的地址

划重点,为什么这样说,我想你也发现了,同一个数值储存的地址,每次进入游戏都是

不一样的,但是,有没有办法能直接找到这个地址呢,这就要用到指针了,指针分为多级指

针与人造指针,人造指针非常强大,但这里不会这么早讲,因为讲了也听不懂,必须要先有

指针的基础才可以,所以还是老实学吧。不要想着一步登天,而且,找到指针是会很有成就

感的。

 这里跟Tutorial的关卡顺序不一样,本小节,我会直接将一级指针与多级指针一起讲授。

一.一级指针

 顾名思义,就是一次就能找到的指针(嗯没错,多级指针就是要找多次的指针)

教程重述:

上一步阐述了如何使用"代码查找"功能对付变化位置的数据地址,但这种方法往往不能

达到预期的效果,

所以我们需要学习如何利用指针。

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

这一步,你不需要懂得汇编,但如果懂的话会很有帮助。

首先找到数值的地址,然后再查找是什么改写了这个地址。

再次改变数值,CE 便可以列出找到的汇编代码。 双击一行汇编代码(或选择它并点击

"详细信息")并打开"详细信息"窗口以显示详细的信息,用来告诉你当这个指令运行时发生

了什么事情。

如果在这条汇编指令中没看到方括号([])的存在,我们就应该查看下一条汇编代码的

详细信息,

如果看到了方括号,那很可能表示我们已经找到了需要的指针。

返回到主 cheat engine 窗口 (只要你愿意,你可以保持这个额外的信息窗口为打开状 态。如果你要关掉它,那么要记好方栝号中间的代码)并做一次 4 字节的扫描,扫描"详细

信息"窗口中告诉你的一串十六进制数值。

扫描完成时它可能返回一个或几百个地址。大多数时候你需要的地址将是最少的一个。

现在点击"手工添加地址"按钮,并勾选"指针"选项。

"添加地址"窗口将发生变化,多出了"Address of Pointer(指针地址)"和"Offset (Hex)(偏 移量(16进制))"的文本框,以便您键入一个指针的地址和偏移量。

请尽量填入刚才扫描到的地址。

如果汇编指令中的方栝号里存在计算(例如:[esi+12])则把数值部分填在"Offset (Hex)" 的文本框中,如果不存在,则让它保持为 0 。

如果看上去是更复杂的计算指令的话(举例说明一下):

[EAX*2+EDX+00000310] eax=4C 并且 edx=00801234. 这种情况下 EDX 便是数值的指针,而 EAX*2+00000310 则是它的偏移量, 所以你要填在

"Offset (Hex)"的将是 2*4C+00000310=3A8。(这些都是在十六进制下计算的,你可以使用 WINDOWS的计算器,在科学方式下用十六进制计算)。

回到教程,点击"确定"这个地址便会加到 CE 主窗口下方的地址列表中,如果没做错,

在地址栏将显示 P->xxxxxxxx,而 xxxxxxxx 和你扫描到的地址数值是一致的,如果不 一致,那么可能是哪里出错了。

现在, 改变那条指针地址的数值为 5000 并锁定它,然后点击 Tutorial.exe 窗口上的" 改变指针"按钮,如果一切正确,"下一步"按钮将变为可点击

状态。

备注:

你也可以使用"指针扫描"的方式来查找这个指针地址。

步骤演示(比较难,认真看):

第一步,找到该数值的地址

第二步,找出是什么改写了这个地址

(其实“找出是什么访问了这个地址”也能找到,其实思想是一样的,但前提是必须有汇编代码访问了这个地址,我这里遵循教程的思想,就不改了)

第三步,点击详细信息

第四步,虽然ce会告诉你,要查找 的该地址的指针值,是 0154C7F0(不固

定!不固定!每次打开 Tutorial 都不一 样,以自己电脑为准)

但我们还是认真看一下寄存器状态,(rbx=0154c7f0)说明这个寄存器里 面存储地址是 0154c7f0 (再看汇编命令:Mov [rbx],eax 把 eax 的值放进 rbx,所以我们这 样我们就能理解,把 eax的值放进 0154c7f0这个地址里面)(我知道你们还是看不懂)

第五步,找出访问 0154c7f0 这个数值的地址

(为什么说是数值,地址怎么就突然变成 了数值呢?打个比方,这里有一个箱子,里面放着你的数值,箱子的编号就是地址,会有一把罗盘,罗盘只能指向这个编号,我们需要找到这个罗盘,这样我们下一次再来找箱子的时候,直接就能找到了)

回到 ce,直接搜索 0154c7f0得到两个地址(绿色的是基址,每次进入游戏都一样,是不会改变的!跟黑色的不一样)

所以我们选择绿色的这个!

第六步,手动添加地址

偏移为0,等会儿讲多级指针会着重

讲偏移这个概念!

单击确定得到这个地址p->0154c7f0 非常直接,这句话的意思就是告诉我们指向这个地址(或者说1002caa40储存的地址就 是 0154c7f0)

第七步,回到 Tutorial,点击改变指针,我们会发现,健康值变成了 326,但是原地址 0154c7f0的值还是34,可是我们的手动添加的地址变成了326,所以,我们下次打开Tutorial, 这个指针肯定还是有效的!

改成5000直接过关吧。

本小节最后,写个小结,讲讲所谓的指针:ce 里面的指针与 c 里面的指针在某个概念 上是一致的,那就是指针内储存的是地址

由此我们找到所谓的指针,就是找到了存储这个游戏数值地址的地址,是不是有点拗口,

多读几遍你就懂了。

今天的教程就到这里,很难很难,要有耐心,这东西本来就不简单

都看到这了,还不点波关注点个赞?



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有