之前已经写了3篇有关于Cheat Engine的教程了,或许你已经感觉到了CE的魅力所在。但仅仅只是这样,在实际使用的时候仍然会有许多的迷茫。所以,你现在才会看到这篇文章。我会力求用最简洁易懂的语言,把使用CE所需要的相关内容讲清楚,希望你能够喜欢。
Cheat Engine(以下简称CE)是一款如此强大的游戏修改器,甚至可以用伟大来形容。他的出现,着实令我这个顶多只会用用GameMaster的玩家眼前一亮。但是相对的,CE又是一个如此复杂的修改器,他需要很多的相关知识的支持,尤其是汇编方面。这也令许多人对此望而却步。
在继续阅读之前,我希望每个打算深入研究CE的朋友们,都能够明白一件事。
当你打开CE的那一刻开始,你就不再是一个普通的游戏玩家的了:在这之后,各种不同类型的计算器是你最友好的伙伴,一个接一个打开到占满整个屏幕的额外信息窗口将会成为你的座上宾;每次都不同但是每次都会出现的错误提示和随机的游戏致命崩溃是你的常客;以后你再也不会看到诸如“if,let,for”等等亲切的语言,只有“mov,add,jmp”这样冰冷的汇编语言与你同在。
当你真正做好了心理准备,我们开始吧。
如图所见,这里是一个典型的在用CE进行修改时的状态。接下来的教程,都将会以这个图为基准进行。
正中间靠下的是CE的主窗口,我们已经很熟悉了;
左上角的是内存查看器,同时也是操作码查看器,以后,这个窗口的重要性会越来越高,甚至需要比CE的主窗口更加重视;
右边的三个小的是额外信息窗口,通常是在追逐修改针对指定地址的操作码时所找到的结果,在这个窗口中有许多有用的内容,等下会逐一解释;
左下角的是追踪器,一般常见的是上面刚刚提到的追踪内存地址时出现的,而现在图中出现的,则是追踪操作码的窗口,这两种窗口只能出现一个。
现在你可能会有一个疑问,为什么他会有两种追踪?其中一种是针对内存地址,而另外一种是针对操作码的,这两者有什么区别吗?
这是非常重要的一点。要回答这个问题,就需要先了解计算机的基本工作原理。
通常我们的修改,所针对的都是内存,这个相比有一些修改基础的人已经很熟悉了。不过,游戏从根本上来说,是CPU在执行的,而CPU是不能直接读写内存的,他所能控制的只有寄存器。所以,才有了指令。
如图便是一个额外信息窗口中所提供的指令。一条典型的指令是这样的:
0045583e – mov [esi+54], eax
其中,0045583e 是操作码,这仅仅相当于一个执行的序号,不过需要注意的是,CPU有时并不是完全严格的按照顺序依次执行的,因为有可能会遇到jmp等跳转指令,而在追踪窗口中所显示出的则是他真正的执行顺序。
至于后面的 mov [esi+54], eax 则是地址码。这一条地址码的用处,在于告诉CPU他应该做出怎样的动作,是这套完整的指令中的关键部分。
需要注意的是,就像之前所说,CPU是不能直接读写内存的,而必须要通过指令才能够对内存地址进行操作。所以,在一条指令中,是严格区分寄存器地址与内存地址的。这一点CE也有特别的进行强调过,所以你也需要注意,所有使用方括号“[]”括起来的内容,都是内存地址。
mov是汇编语言中最常见的指令,意思是数值在寄存器与寄存器或是内存与寄存器之间的移动,也可以理解为修改。在当前这一条指令中,他的意思为将内存中地址为[esi+54]的值改为寄存器中eax的值。
其中,esi与eax都是寄存器的数值。寄存器实际上一共只有这么几种,但是CPU进行的运算量是非常巨大的,所以寄存器的数据也在不断的更新着,所以才需要单独打开一个额外信息窗口来查看当前指令时寄存器的值。比如现在可以看到,esi=007AD8F4,eax=00004FB0
这里不得不再强调一次内存地址与寄存器地址的区别,也就是方括号的重要性。“[]”中出现的只可能是内存地址;而一个寄存器中的值有可能是内存地址,也有可能仅仅是一个四字节的数值。不要搞混了。
比如刚才的[esi+54],他的意思是007AD8F4+54也就是指向了一个内存地址为007AD948里的值,这有可能是一个指针。而后面的eax,他表示的就是这个00004FB0的16进制4字节整数,也就是20400。
现在就好理解了,这一条指令的准确意思是:将内存地址007AD948的值改成20400。
是不是有些晕呢?呼呼,不要放弃,因为这就是汇编。
任何的高级语言,无论Java、Delphi、C还是C++等等,最终都需要转化为机器码才能让CPU进行计算。不过这个机器码绝对不是人类可以看懂的东西,但是所有的机器语言都可以被反汇编为汇编语言,以方便理解。
而这就是我们现在在做的事情。如果有可能的话,我推荐那些真正要做到极致的朋友们简单的自学一下汇编语言,很有帮助的。不需要学到能用汇编写出程序的地步,只要能看懂即可。
Now, hold your brave and let’s go on.
刚才,我提到了一个概念:指针。关于这个,之前也专门写过一个关于指针修改的教程。不过,或许你修改成功了,也仍然不明白为什么要如此费尽的修改一个指针吧。
指针是我们的修改中一个非常重要的概念。他的出现源自于一种很流行的技术:动态内存分配(Dynamic Memory Allocation, 简称为DMA)。有兴趣的朋友可以自行搜索相关内容,这里我们只需要知道他的作用,那就是让你搜索到的值每次都出现在不同的地址。
也许你已经有过这样的经历了,不过我还是要重复一下。比如某游戏,你第一次搜索,成功找到了他的钱都保存在001ADBF0这个地址里,但是开始了新游戏之后,存钱的地址居然跑到了002CD900这个地方。这岂不是每次都要重新修改了吗?
答案是,不需要。无论这个地址怎样变化,始终有一个更上级的东西,告诉CPU,这次他的地址在什么位置。而这个更上级的负责指路的东西,就被称作指针。
指针的地址是不会变的。如果他仍然跑了,说明还有更上一级的二级指针没有找到。
现在你明白指针的重要性了。
知道了以上的这些知识,现在对于CE的应用就已经不会再有那么迷茫了吧。本来只是基础篇的,没想到只是介绍了两个主要概念,就已经不知不觉已经写了这么多,果然基础也不是件容易的事情啊。
承蒙许多朋友的错爱,把我当做高手。其实我真的不能算高手,充其量只是比刚入门的人稍微多研究了一些时间罢了,所以也就比较喜欢和大家一起分享自己的经验。谢谢大家对我的关注。
最后感谢EZ论坛上amd2200朋友的支持,让我有动力写下这篇类似于前传性质的文章。谢谢你。
让我们一起期待CE5.6吧^_^



我是这样搜索的,但是只找到时间,没找到格斗的血地址,有些有些地址要附加一些变量,就是找到的地址+几位地址,香md的战斧就是,我乱猜才知道的,这个怎么解决。你能做个风色幻想3,4的修改器码,
一般不需要那么麻烦,你应该适当的利用Unchanged,也就是在时间减少的时候血不掉,这样就可以有效区分了
你还是写个教程,我第2戏搜索老是要我输入数值,或者出现什么错误,找不到,老是找到时间地址。
拜托了,我真的不懂阿,用ec会,但用这e就不会了。
楼主,我真Tmd的失败,连97拳皇的血都找不到,可能我方法不对,麻烦你写个教程,我卡住了。还有这修改器只能查找地域100的数字,高了就找不到。而且中文版有bug,会程序什么的。
呃,抱歉,因为我手头还真没有KOF的ROM没办法测试。
通常来说,模拟器的内存数值类型和PC游戏是不一样的,PC游戏中双字节数值在内存是高位取反的,而游戏机则不是这样,比如说500这个数,在PC游戏中会表现为F4 01,而游戏机里则是01 F4。
不过因为没有条件测试,我不能确定这是否和你搜索不到结果有关系,所以可能的话还是优先使用EC比较好。。。
我测试拳皇,只是为了知道血的搜索方法。
你随便以电脑格斗游戏为列子,我就是要知道搜索血的方法,要模糊那种搜索的。
呃,等我明天换老电脑之后给你截图,那边有几个格斗游戏
谢谢,因为我要找个电脑格斗游戏的血地址。
@extinz
可恶,嵌套7层评论还是到上限了么……
怎么没看到教程阿
你好啊。wettuy!我是一个游戏修改的新手。
百度,google多个论坛都有看到你的帖子。很棒。现在关于cheat engine的文章也不多。学习起来还是有点苦难。以前只耍过FC模拟器里面自带的金手指查询。原理差不多。
但,我在游戏里变量的查询遇到了一个问题。如:一个游戏分数显示为2000,但不管用什么方式都无法搜索出来。扫描方法我敢肯定没问题。精确值出不来换模糊也不行。
但攻击力,防御力,等级,经验都能搜索到。还有,这个分数是要提交去服务器的。是不是真像ccb教程里说的。内存里的值实际值跟显示值不一样??那对于这样的东西。我们应该如何找到呢??
就写这么多了,再多怕看累了你的眼睛。哈哈
361801580 如果你愿意请加我的QQ,以便讨教,谢谢。
你说的这种情况原因很多,我也不能确定,不过通常来说,即使内存数值和显示不同,他也是会随之增长的,这样的话模糊搜索应该是可以找到的。
既然会把这个分数提交到服务器,恐怕就会有一些特别的加密措施,最可能的一个是直接将分数用封包传送到了服务器,另外一个就是直接将分数进行了一些加密运算然后再储存,这样就不会直接在内存中表现出相同的数值增减,只有挨个尝试了
老兄,我曾在许多论坛上看到你的文章,顺便来到你的家。我现在遇到一个难题,百思不得要领,恐怕通过邮箱无法祥述,希望你可以加我QQ好友,以便我请教,或者把你号码发我邮箱,我来加你,我号码:1079124557.
谢谢你的支持啊,不过我觉得如果你要改的是网游的话,我真的爱莫能助。。。
仁兄好像谦虚了,用CE来寻找内存基址,对于网游或单机来说,我觉得并无太大区别,二者皆为游戏与学习.竟然仁兄无意涉及网游,我也不好强求,但还是希望向仁兄学习交流.对了我是手机党,看不到你的邮箱,所以无法向你发邮件询问,不知可否将邮箱地址发到tangya1990@163.com,顺便发个汉化版的CE,嘿嘿,不过分吧(低头,抓墙,害羞)。哦,对了,不知仁兄对于血蓝值每变化一次,内存基址就变化一次的问题有何见的?
手机党不容易啊,手动拍转。
不知道老兄玩过网易的游戏没,实在是变态啊。人物的血蓝还有钱都是找不到,偶尔有也没用。不仅在窗口运行时检测,对调用内存函数时也检测,然后就被强制退出游戏。我哭了,安慰我一下吧,手动拍砖,手机党不好搞表情。哦,对了,我探索的是”天下贰”,网易的游戏,不知老兄可否指点一二。←手抽了→ :(
wettuy 啊,你能不能做个校内踢屁屁距离修改的简易教程啊
那是啥。。。。。。。。。
校内人人网里提屁股游戏
这位好人你好
能见你这样的大侠真是荣幸啊 一般这等功力的人物都已经闭关忙着飞升呢。。。 
,现在走运碰到您这样的隐藏人物绝不能放过了! 
我碰到的两款都是东方的二次同人游戏 【幻想少女大戦紅 体験版】游戏和机战一模一样 还有个是东方版的不可思议迷宫。。我从你着学了CE的基本用法(确实是很萌的工具
) 我抱着是我以前的修改器没搜索0~fffffffffffff内存的原因的希望,又用CE用鼓捣了半天 但是结果很杯具。。。
指针的话我也勉强理解 但是我现在连个有用的地址都找不到 这类游戏也太诡异了吧。。。
啊对了 以前我用内存修改器去改RPG XP什么制作大师弄出来的游戏 和这情况就很像 也是什么都找不到。。。
到底是我有什么还没做到 还是就是有这种不能修改的单机游戏存在? 我想我操作应该是没出错。因为我很爱修改游戏 而且这几个游戏我都改过很多次
应该只可能是我有什么不会的 或者是这游戏加密什么的太萌了。。。这游戏动态还有办法修改吗?CE还有没有什么大招?。。
我是修改不了游戏急的乱转晕到这里来的……
我一直以来都有个难题想求解 但是情况都像游戏里一样没一点头绪
我的问题就是我碰到很多游戏都找不到地址。。。精确不行 连模糊搜索只搜变和不变 也不能找到游戏里任何钱、HP、物品、技能的数据。。。这应该是不可能的吧?全是单机游戏~~你也是东方众吧?
话说你这气氛太好了 我很喜欢这啊 宅的 萌的 技术的 给人一种要啥有啥的感觉
往后就往这晃悠了 我那问题纠结很久了 不是因为不会 那还可以学 问题是不知道这东西到底有没有动态修改的可能性,对于我这大半宅来说很无语 该学点什么把他解决了还是 干别的去犹豫不决啊。。。
果然是加密喽?
真可恶啊
难道是为了剥夺我们修改的乐趣?
还是顺手就剥夺了我们的乐趣?。。。
加密的对应。。。难道是破解?
嗯,确实是被加密了,内存地址不停的变化,十分的汗,目前还没找到好的切入点>_<
我晕 真的是地址在不停的变啊?!
倒 我之前也是这么猜想的诶 但是还真不想相信他们会这么变态啊。。。。 ~~~
哈哈~~~
不知道作者用心何在啊~~~~如果不是针对修改 说不定会有什么捷径?。。
真是的~看来暂时碰到这种游戏只有绕着走了。。。
这游戏不能用即时S/L大法 让数据变起来很费事诶
q+w+enter?会回主页面吗~我总觉得一读档 就算是正常点的游戏也会换地址耍人。。
恩 多试式多惊喜 ~~不过一个游戏要是改不了我都有种怕玩的感觉。。。怕被虐,,
我已经走上了一条极端的道路。。
不光是因为一些游戏猥琐,改游戏本身也太有趣了
跳出圈外的感觉。
wettuy兄可以加下QQ吗?最近碰到一个游戏使用指针修改一直不成功,后面在网上找了下资料是找二级指针的结果还是一样,不知道是我操作有误还是其他问题 麻烦你加下我QQ 向你请教下 我QQ 229095645
你好,有问题可以直接给我发邮件的,左边有我的邮箱^_^
怎么让找到的地址在下次进入游戏时还可以用啊