之前已经写了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吧^_^



还有 植物大战僵尸如何把造植物的冻结时间弄没 ,能给个思路吗
思路是有,这个非常麻烦
首先用模糊搜索查他的冷却倒计时,找到了之后寻找他的指针,这是一个多级指针,找到之后搜索写入他的操作码,可以看到有一个判断状态的,然后找到这个操作码里提供的指针地址,锁定到1,就没有冷却了
好强大啊 好强大啊~~
老大,你能不能直接 做一个丝路传说的遍历工具?
最近刚开始学。
因为需要才开始学,可是。。。发现 我完全不明白,我好像太笨了一点。。。。。
你很有名呢。。
我在很多网站上都有看到提到你名字的。
说。。。。。
如果 你做外挂 。。。。。可怜滴中国游戏商 。。。。
哈哈。。。。。
我不要你做外挂 ,我只要显示《丝路传说物品》工具,可以吗?
辛苦了。。。。
亲一个。。。。。
虽然 我不是萝莉。。。。
我是御姐。。。。喔 呵呵呵。。。
呵呵 难得这么全面的教程 不过还是有事请教啊 我用ce5.6 最近找游戏的基地址总找不到 也就是说找到那个临时地址并不困难 也能检测出偏移量和上级地址(比如[ecx+34]) 但是问题来了 那个ecx代表的地址 我无论如何也找不到了 用ce搜索ecx代表的地址 根本没有 这个为难死我了 本人邮箱已经填了 希望能给回复下 我在ez论坛发了几个emu cheat的模拟器基地址 现在看来 有两个是没法用的 基地址找的不对 特来求助 另外我无意见到你朋友一个网站 貌似是有你技术支持的 希望以后能联系 我自己弄网站 但是不是很懂技术= =!
你好,谢谢你的支持^_^,已经给你发邮件了
关于植物大战僵尸如何把造植物的冻结时间弄没
请教详细教程
倒数计时器是越来越小吗
是个什么类型的呢?
如果可能请给我发邮件
1111111111111111111111111111111111111111111111
楼主强烈要求加QQ
楼主我QQ:277867354.308541640.
麻烦加下!!!!!!!!!!
楼主加 277867354 这个QQ吧~~~~~~
谢谢………..
膜拜啊 膜拜………
楼主人在哪???????怎么时间不一样……….
难道是潜逃人员?
楼主我好想你……..
我想问下。。我的系统没变, 昨天用CE的SPEED HACK可以把扫雷的时间加速或者冻结为0. 然后昨晚是设置了点什么,我也忘了。现在就不行了。。。试了很久, 可以指点下么?
楼主不厚道
受益非浅啊~~~~~你说的都比较通俗易懂呢,我花了一天时间理解的东西,这里一下子就明白了~~~
今天才开始接触CE和外挂,请问我怎样可以找出游戏人物的红蓝的真实地址呢?用CE找出来的地址重启游戏后就改变了。在TUT上做时是没问题,但去到游戏上,不管我的红蓝怎么掉,CE仍然没显示出是谁在写这个地址。。。。。
谢谢^_^。
这种情况说明你还没有找到真正的地址,这个我也不能肯定,只能再多搜搜一下看看
写的很细致 十分适合新人看 谢了~
为什么我的6.1ce之能改数目罢了,但买时还是显示不足钱,我明明改成1了啊加我fb
http://www.facebook.com/profile.php?id=100000668804294&ref=tn_tnmn
搂主,帮帮忙啊,小弟会感谢不尽的