CE详细教程.pdf

上传人:小*** 文档编号:77341693 上传时间:2023-03-13 格式:PDF 页数:7 大小:479.66KB
返回 下载 相关 举报
CE详细教程.pdf_第1页
第1页 / 共7页
CE详细教程.pdf_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《CE详细教程.pdf》由会员分享,可在线阅读,更多相关《CE详细教程.pdf(7页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、CE 详细教程CHEAT ENGINE(以下简称 CE)是我见过的最优秀的游戏作弊工具。它的优点多不胜数,虽然单独从搜索游戏里面的数值来说,它并不比其他同类软件强多少,但它不仅仅是个游戏修改工具,它还有其他游戏修改软件所没有的一些特点,例如:它有强大的反汇编功能,这个是别的游戏工具中几乎没有的;还有,它本身就自带了外挂制作工具,可以直接由它生成外挂。而它的界面非常简洁朴素,这也是我喜欢它的原因之一。同类软件中,我觉得 TSEARCH可以和它媲美,但TSEARCH 的界面比较混乱,操作过于复杂,所以我个人并不喜欢TSEARCH。在这个教程里面,你不会看到任何图片,因为我觉得我能用纯文字教你使用C

2、E,如果你觉得没有图片就一定学不会,我想你没必要看下去了,因为我没空做图片,并且我觉得文字已经足够表达,没必要用多余的图片。还有如果你喜欢这个入门教程,你可以把它转载到任何地方,但在转载之前,请你征得本人的同意,并且在转载时注明作者为CCB。好了,废话少说,进入正题吧。其实,使用 CE 的基本步骤,可以简单到一句话:1.运行 CE-2.运行游戏-3.在 CE 中指定要修改的游戏-4.首次搜索一个数值-5.回游戏中让这个数值增加或减少-6.回 CE 按数值增减的情况再次搜索-7.重复5 和6 直到得到一个或很少的几个结果-8.在这几个结果中判断哪一个是真正的结果。而下面的这个教程,就是要对上面说

3、的这些步骤进行详细的解释,然后再用一个具体的例子来让大家真正掌握CE的用法。当然,要用一个具体的例子来讲解CE 的用法,需要一个游戏,以这个游戏的修改来讲解。不过,如果真正的用一个游戏来做例子,那么大家也得找到我用的游戏,就算找得到,还有可能要安装,确实比较麻烦。幸好,CE 本身带了一个 TUTORIAL,就是教程的意思,不过这个 TUTORIAL,本身也是一个程序,它是作者为了让使用的人进行练习而编写的,它不但会一步一步地教你怎么用CE,而且它本身也和游戏差不多,除了没有游戏的画面。如果你能使用 CE 按这个 TUTORIAL 的要求对它进行修改,我想你也应该能用CE对真正的游戏进行修改了。

4、OK,LETSGO!-CE 操作入门 一,如果你还没安装 CE,那么开始这一切之前,当然是把它安装上,CE 的安装也和其他的软件一样,很简单,没必要再罗嗦。安装后,在开始菜单上会有 CE 的程序组,而在桌面上会有 CE 的快捷方式。二,安装好之后,就可以运行 CE 了,运行后,会看到 CE 的主界面。其实 CE 的主界面真的非常非常简单,简单到不能再简单了,以至于我本来想给它做汉化,结果看到它的主界面上的 英语单词少得可怜,根本不需要汉化。如果你连这几个单词都没办法或者不想去弄懂,我想,你的智商应该不足以用来修改游戏,那么赶快把CE 删了吧,这不是你玩的东西。三,现在我来描述一下 CE 的主界

5、面,并且解释上面的各个部分的功能和简单的用法介绍,至于使用上的具体细节,请看后面的实例。在 CE 主窗口的标题栏下面,左上方有三个按钮。第一个按钮,是指定进程的按钮。在刚运行CE,还没指定所要修改的进程时,它的外框会不停地闪动,这个是作者提醒你,使用 CE 要做的第一件事,就是指定一个进程(什么叫进程?简单地说,就是你系统当前正在运行的程序)。这样CE 才知道你要修改的是正在运行的程序中的哪一个。点击之后,会出来一个新窗口,窗口的标题是Process List,就是当前在你的系统上运行的所有进程的列表。这个窗口的下方,还有几个按钮,你暂时不用管(一个好的学习方法,就是在接触一个新的东西的时候,

6、先弄懂那些非知道不可的东西,然后再更细致地学习,当然最后是要什么都知道。就是说要分主次先后来学。如果一开始就去注重很多暂时不需要知道的细节,结果反而会忽略了最需要先弄懂的东西,这样的学习方法就不好了)。在这里可以找到并选择你要修改的游戏,然后点OK 按钮,或者简单地就双击要修改的进程。左上方另外的两个按钮,图标就象其他的软件一样,一个是打开的文件夹,这个是用来打开以前保存的CE 的地址列表(*.CT)的打开按钮,另一个是一张软盘的图标,这个是把地址列表保存下来的。在这三个按钮的右边,上面是一行英文,下面是一个进度条,上面的英文,当 CE 还没选择要修改的进程时,它会显示“No ProcessS

7、elected”,表示你还没选择进程,如果已经选择了一个进程,那么它会显示你选择的进程的ID 和进程名,进程 ID 是一个由8 个十六进制代码组成的标识号,后面的进程名就是你所选择的程序,即游戏的名称。而下面进度条,是当你在进行扫描的时候,显示当前的进度。然后,在左上角三个按钮的下方,有个英文 FOUND 后面有个数字,这个是表示找到的结果的数目,当还没开始扫描或最后的扫描结果是0 时,显示 FOUND:0。如果某次扫描时,找到的结果很多,也暂时不会显示,但在这里可以看到目前为止找到的结果数量是多少。在主窗口中间的左边,是一个扫描结果的地址列表,一般找到的结果少于某个数(默认的设置是少于50

8、个)时,找到的结果会全部显示在这个列表中,而如果目前找到的结果多于设置的数量时就暂时不显示。这个列表有两个栏,Address 是内存地址,而 Value 是该地址当前的数值。地址当然是十六进制表示的,而数值是十进制的。在主窗口中间的右边,是 CE的扫描部分,上面是三个按钮,First Scan,Next Scan 和 Undo Scan。下面是一个输入数值的地方 Value,再下来,是选择扫描方式的Scan Type,选择数据类型的Value Type,再下面是设置内存扫描选项的 Memory Scan Options,这里一般不需要修改,暂时不用管它。还有右边有个 Enable Speedh

9、ack 的选项,这个也先不管。第一次扫描时选择好扫描类型,输入好数值后点 First Scan,这是开始一个全新的扫描,当数值变化之后输入新的数值再点NextScan 直到找到正确的内存地址。扫描后First Scan 会变成 New Scan,如果想开始一个新的扫描,点 New Scan 之后会清除以前扫描的结果,并且释放上次扫描所占 用的内存,这样你就能重新开始。而有时当你在扫描中间选错了而影响了结果,可以点Undo Scan,这样会清除掉最后一次你做的选择,并把结果恢复到前一次扫描时的状态。在主窗口的下方,又是一个地址列表,这个和上面那个不一样,上面那个是 CE 扫描的临时结果,而下方的

10、这个,是你选择了的地址。它有五个栏,Frozen 是对地址进行锁定用的,Description 是对该地址的注释,Address 是地址,Type 是数值的类型,Value 是该地址的数值。在主窗口的中间,有一个斜向右下的红箭头的按钮,这个用于从左边的地址列表中把地址移到下方的地址列表的。你可以在左边列表中选择一个或多个地址,然后按这个按钮把它们移到下方的地址列表中。当然,你双击左边的地址列表,也能把它移动到下方的列表中。在中间还有另一个红色停止符号的按钮,这个是清除下方地址列表中所有的地址的。最后,在下方地址列表的左上和右上,各有一个按钮。左边的一个是 Memory View,这个是 CE

11、最有用的按钮之一,它是用来查看和修改内存的,而它的功能还不仅仅是查看和修改内存,CE 的最有用的一个功能反汇编,也是在这个里面,不过暂时不想详细介绍这个按钮里面的功能,你知道它是做什么的就行了。右边的一个Add address manually,这个是用于手工向下方的地址列表添加地址的,如果你以前找到过某个地址,知道具体的地址,可以不用扫描,手工把地址加上。CE 的主界面基本就是这些,其实你用一秒钟就能看清楚,我却要打字打了半天:)其实到现在为止,你还没真正掌握 CE 的使用,当然了,如果你会了,我就不用再继续写下去了,我早就去睡觉了。不要紧,下面结合实例来说明,你会真正掌握CE 的使用的。-

12、CE 使用实例:现在,我们来开始一步一步学习 CE 的使用吧,通过完成 CE 带的那个 TUTORIAL,按它的要求一步一步做完,如果你做得到,你就基本上算是掌握了CE 的用法了。CE 带的 TUTORIAL,是英文的,不过没关系,我在教你使用 CE 来完成这个 TUTORIAL 的同时,会把 TUTORIAL上面的所有英文都翻译出来让你看明白,所以不用怕。CE 带的这个 TUTORIAL,是 CE作者做的用来让你练习的一个程序,它里面也和游戏一样,在每一个步骤都会有一些类似血(HEALTH)或子弹数量的东西,并且你点了上面某个按钮之后,这些数值也会象游戏中一样减少,这样让你象是修改游戏一样,

13、去找到它的地址,并按 TUTORIAL 上面的要求修改,当你按它的要求做到了,才让你做下一步。而在第一步时那个输入密码的地方,不是说这个TUTORIAL 要输入密码才能运行,而是有时你需要从中间某一步开始时,输入相应的密码会直接从某一步开始,而不用每一次都从第一步开始的。而你每完成一步之后,它也会给你相应的密码。好了,也许你等不及了,那么我们现在就开始吧。第一步:先在开始菜单上找到 CE 的程序组,找里面的“Cheat Engine Tutorial”(以下简称 TUT),点击运行。这个时候就出来这个 TUT 的对话框,上面一大段英文,而 Next 这个按钮是灰的,为什么呢?让我翻译一下上面的

14、英文吧,你就明白。TUT 上面的英文的译文,我会用【】号把它们括起来。【欢迎你来到 CE 的教程(V2.4)这个教程试图解释在游戏中作弊的基本步骤,并让你更熟悉 CE 的使用。首先运行 CE,如果你还没运行的话(CCB:因为还没运行,所以 Next按钮才是灰色的:)。然后点击open process按钮(在左上角那个有电脑图标的那个)当进程列表窗口打开后,找到这个教程,进程的名字应该是“tutorial.exe”,除非你把它改名了。选择它,并点击 OK。现在先不要管其他所有的按钮,如果你喜欢,以后再研究它们。当这一切都做对了之后,进程选择窗口将会消失并且在CE 上方会显示进程名。现在,点击NE

15、XT 按钮继续到下一个步骤(或者输入密码而进到你想去的其他步骤)。】好了,上面的这些英文,我翻译过来了,所以这一步应该不需要我再补充什么,看这些译文应该能明白怎么做,就是开 TUT,开 CE(哪个先开都没关系),然后点击 CE 左上的那个选择进程的按钮,选择这个 TUT 的进程,这样就可以点 NEXT 进到下一步了。第二步:【第二步:精确数值扫描(密码:090453)现在你已经在 CE 中打开了 TUT,让我们进入到下一步吧。你看到在这个窗口的下方的文字Health:XXX 每次你点击Hit me(打我)时,你的 Health(血)会减少。要进到下一个步骤,你必须找到这个数值并把它改为1000

16、 要找到这个数值,有几个不同的方法,但我会告诉你一个最简单的,Exact Value(精确数值扫描):首先确认数值类型设置为 2 字节或4 字节,1 字节也可以的,但当你最后在修改它时你会遇到麻烦(虽然很容易解决)(CCB:大家不会忘了吧?1 字节表示的最大数值是255,而这里要你改为1000,所以虽然用1 字节能找到,但要改却要连前一字节一起改,所以有点麻烦,不过不是大麻烦)。8 字节可能也可以,如果这个地址后面是 0 的话,不过我不敢打赌。Single,Double,以及其他的扫描方式不行,因为它们储存数值的方式不同。当数值类型设置正确后,确认扫描方式设置在Exact Value 把血的数

17、值填在数值输入框上,并点击First Scan(首次扫描)过一会儿(如果你有一个非常慢的电脑的话)扫描完成并且扫描的结果会显示在左边(如果找到的地址的数量少于设置的数值的话)。如果你找到多于一个地址而你不知道哪一个是正确的地址的话,点击 TUT 上的Hit me,并把新的血的数值填到数值输入框,并点Next Scan(再次扫描)重复这些步骤直到你确认你已经找到它的地址了(在地址列表上只有一个地址)现在双击左边列表上的地址,这样会让这个地址移动到下方的列表上并显示它的当前数值。双击(下方列表的)数值栏(或者选择它,并按回车),并把它修改为1000。如果一切都 OK,NEXT按钮将会变成可点击的了

18、,你就准备好了进入下一步了。】这一步,也不用我再补充什么了,这个 TUT 已经说得很清楚,这是使用 CE 的最基本功能,即找到数值,如果扫描结果太多,试图改变数值然后再次扫描,直到结果剩下很少或者1 个为止,这样你就找到了要修改的数值的地址,并且也就能修改它了。到这一步,你已经能对付很简单的游戏了,不过现在的大多数游戏都没这么简单,但至少你已经学到最基本的一步,就是精确数值的扫描和修改了。现在就点击 NEXT 进入下一步吧!第三步:【第三步:未知初始数值(密码:419482)OK,看来你已经理解了怎样使用精确数值扫描找到一个数值了,让我们进入下一步吧。在上一步中我们知道初始数值所以我们进行了精

19、确数值扫描,但现在我们有一个进度条,我们不知道它开始时的数值。我们只知道这个数值是在0 到500 之间,并且每次你点Hit me之后你会减一些血,每次减的血量会显示在进度条的上方。同样的有好几个方式找这个数值,(例如使用“减少了什么数值”的扫描方式),但我只解释最简单的方式,“Unknown initial value”(未知初始数值)和“Descreased value(减少了的数值)”。因为你不知道现在它的数值是多少,所以使用精确数值不行了,所以选择扫描方式为Unknown initial value,同样的,数值类型选择4 字节,(大多数 WINDOWS 应用程序使用4 字节数据)点击F

20、irst scan并等它扫描完成。当扫描完成后点击Hit me,你会掉一些血(掉的血量多少会在血条上方显示几秒然后消失,但你不需要这个数值)现在回到 CE,并选择Decreased Value(减少了的数值),并点击“NextScan”当扫描完成后,再次点击Hit me,并重复上面的步骤,直到你找到了若干地址。我们知道这个数值是在0 到500 之间,所以选择比较象我们要的那个地址是,并把它加到下边的列表。现在,把它改为5000,才能进到下一步。】这一步,稍为复杂一点了,这是对那些血条之类的东西的扫描。作者说知道数值是 0 到 500 之间,但没说是怎么知道的。我的看法是,这东西一方面靠猜,另一

21、方面靠试。你也许会说,比如血条或蓝条,上面或下面不是有数字吗?是的,有些有,有些没有,但有时,血条上面有个表示血的数字,说血是548,但你就知道它是真的按这个值存在内存的吗?不一定的哦,很多游戏的开发者,可能会用某一个方式存真正的血的数值,而用另一个方式显示,例如,最简单的就是,真正的血是你看到的数值的3倍,例如上面说的548,其实在内存可能是1644,而当它要显示的时候才把1644除以3 然后显示出来,所以如果你受这个显示数字的误导,结果就有可能找不到真正的地址。所以关于那些以长度表示的数值,一般还是靠猜,然后根据猜测来找。还有,CCB 友情提醒一下,其实有时在找到的数值比较多的时候,试试在

22、扫描的过程中,确认数值确实没改变的情况下,多加几次Unchange(无变化)扫描,这样可以再减掉一些无关的结果。另外,其实在这一步,如果你够聪明,每次点了Hit me 之后记住血条上面显示的减少的数字,再在CE 中输入刚才的数字(负号不要,负号只是表示它是减少的),并选择Decreased value by,即“减少了什么数值”,这样也能更快地找到准确的地址,但这种方式是在要知道减少了多少这个具体数值才有用。好了,继续下一步吧。第四步:【第四步:浮点数(密码:890124)在前面的教程中,我们使用字节来扫描,但有些游戏使用了叫做“浮点数”的记数方法。(可能是为了防止简单的内存扫描)浮点数是带有

23、小数点的一些数字(如5.12 或11321.1)如下边你看到你的血(Health)和子弹(Ammo)。两者都以浮点数储存,但血是储存为float(浮点数)而子弹是储存为 double(双精度浮点数)(CCB:这是数据类型的术语,float 和 double 都是浮点数,但 float 为单精度数,而 double 为双精度数,它们在电脑里面占用的字节数长度不同,而所能表示的精度也不同,看不懂不要紧,反正知道这是两种不同的浮点数就行)。点击 Hit me 可以减少一些血,而点击 shoot(CCB:其实是 Fire)可以用掉0.5 的子弹。你得把这两者都修改到5000 或者更多才能进下一步。精确

24、数值扫描方式在这一步能工作得很好,但也许你想试试其他的扫描方式。(CCB 友情提示:扫描子弹的时候试试Decreased value by方式就不错,数值填入0.5,很快就能找到)】这一步,其实也没什么,只是让你熟悉不同数据类型的扫描。再次提醒一下,其实有时游戏的开发者为了不让你太容易扫描到数值的地址,所以有时故意颠倒黑白,例如你看到有小数的地方,有时在内存却是用整数来保存,而你明明看到是显示为整数的数值,却有可能在内存中是用小数来保存,所以有时不要轻易地被你看到的东西误导,特别是在多次搜索不到结果的时候,有时要换换别的方式,不要让狡猾的游戏开发者骗了:)。第五步:【代码寻找(密码:88889

25、9)有时一些东西的保存位置在你重新开始游戏时会改变,甚至是在你玩的时候也会变,在这种情况下,你用二件事仍然能做出可以用的内存列表。在这一步我会描述怎样用寻找代码功能。下面的数值每次你开始这个 TUT 的时候会存放在不同的位置,所以一个普通的内存地址列表将会不适用。首先找到这个数值的内存地址(你能进到这一步,我假设你已经知道怎么做了)当你找到地址后,右击CE 中的这个地址,并选择“Find out what writes to this address”(找到是什么改写这个地址),一个窗口将会出现,上面会有一个空的列表。然后,点击这个TUT 上的Changevalue(改变数值)按钮,回到 CE

26、,如果一切都做得对,会看到一个地址和一些汇编代码。点击这个地址并选择 Replace(替换)选项把它替换成什么也不做的代码,这样还会将代码地址加到高级选项窗口上的代码列表(它将会一起保存,如果你保存地址表的话)。点击 Stop,这样游戏(CCB:指这个 TUT)将会再次正常地运行下去,并点Close 关闭这个窗口。现在,点击这个 TUT 上的 Change value 按钮,如果一切都做对,NEXT 按钮将会变成可点击的了。注:如果你以足够快的速度锁定这个地址,这个 NEXT 按钮也会变成可见的。】越来越精彩了,现在不但教你找地址,还教你找那条修改这个地址的指令了,虽然,你还不太清楚怎样手工修

27、改找到的地址,但至少也比单纯地找数值的地址并修改和锁定要好一些了,不是吗?别急,更精彩的还在后面呢。第六步【指针(密码098712)在上一步我解释了怎样用代码寻找功能对付变化位置。但单独用那个方法不容易找到地址来修改为你要的数值。这就是为什么要用到指针了:在 TUT 下面你会找到两个按钮,一个会改变数值,另一个不但会改变数值并且还会改变数值在内存中的位置。在这一步,你不需要真的懂汇编,但如果你懂的话会很有帮助。首先找到数值的地址,当你找到后,再找找是什么在改写这个地址。再次改变这个数值,这样会找到一个代码地址,双击这个代码地址(或者选择它并点击 More info),这样一个新的窗口会打开并显

28、示详细的信息告诉你当这个指令运行时会发生什么事(CCB:这个新出来的窗口上,那条指令会是红色的)。如果这个汇编指令里面没有包括一个在方括号中的东西,(CCB:说明这个不是我们要的)那么再看看代码地址列表中另一个代码地址。如果有方括号,就是说 CE 认为找到了数值的指针了。回到 CE 主窗口,(你可以让那个扩展信息窗口开着,但如果你关了,要记住在方括号中间的 内容)(CCB:要关了那个有代码地址列表的窗口,才能回到 CE 主窗口,但扩展信息窗口可以不用关掉),并做一次4 字节的扫描,扫描扩展信息窗口告诉你的十六进制数。(CCB:就是方括号里面的内容,如果方括号里面是eax,那么看看扩展信息窗口下

29、面 EAX=后面的数值)。当扫描完成时它可能返回一个或几百个地址。大多数情况下你要的会是最小(CCB:指地址最小,也就是排在列表的最上面)那一个。现在点击手工添加内存地址(Add address manually)并在pointer(指针)这个选项上打勾。这个窗口将会改变,并允许你填入指针的地址和偏移量。在地址那里填入你刚才扫描到的地址。如果汇编指令在后面有一个计算(例如:esi+12)那么把数值填在后面,否则让它保持0(CCB:就是如果有类似那样的计算,把 12 这个数值填在偏移量(OFFSET)那里,否则那里填 0),如果是更复杂的指令,看看它的算式。举例说明更复杂的算式:EAX*2+ED

30、X+00000310 eax=4C 并且 edx=00801234.(CCB:这时各个寄存器的值到底是多少,要看扩展信息窗口下方,那里有各个寄存器在执行这条指令时的值)在这个情况下 EDX 会是数值的指针,而 EAX*2+00000310 则是它的偏移量,所以你要填的偏移量会是 2*4C+00000310=3A8.(这些都是在十六进制下计算的,使用 WINDOWS 的计算器在科学方式下用十六进制计算)。回到 TUT(CCB:?),点击 OK,这个地址将会加到列表上,如果没搞错,将会显示P-xxxxxxxx,xxxxxxxx 会是你找到的数值的地址。如果不正确,那你一定是哪里做错了。现在,使用那

31、个指针改变数值为 5000 并锁定(就是在下面的地址列表中,点最前面 FROZEN 那一栏的勾)它,然后(CCB:应该是这里才回到TUT吧?),点击Change pointer按钮,如果一切正确,那么NEXT 按钮将变成可见的了。额外信息:在这个 TUT 中,事实上数值是由一个指针指向另一个指针(CCB:再指向真正的数值,就是使用了“指针的指针”,有点象绕口令:),但要完成这个TUT 只需要一个指针。要找到这个指针(CCB:是说要找到指向指针的另一个指针),只要搜索是什么改变那个指针。如果你懂汇编,你可能会看到类似这样的:mov eax,ebp-4 mov eax,eax+310 这些别搞混了

32、,只使用扩展信息窗口告诉你的数值。ebp-4 指向堆栈中保存了指向这个指针的指针,但堆栈的位置总是在变化,所以不要搜索ebp,而要搜索eax 的数值。】这一步,确实就够复杂了,也许你到这一步真的有点想放弃了。不过,如果我告诉你,这是这个TUT 的最后一步了,你还会想放弃吗?呵呵,坚持啊,看不懂就问,把CCB 这家伙问倒了才好呢:)。其实这就是对付 DMA 的方法之一了,就是先找到地址然后找到指针,找到指针就好办了。【做得好,你完成了CE 的教程了,再玩玩这个TUT 并学习一下其他的扫描方法怎样工作的】=如果你一边看一边做,已经做到了这一步,CCB 要恭喜你,你已经领到2005 年第一学期的 G

33、H小学入学证书了,呵呵。以后就是个小学生了,可要听家长和老 C 的话哦,不要捣乱,不要迟到旷课,知道吗?其实,这个教程,本身也并不很详细,而且本身可能由于作者疏忽并且英语也不是作者的母语吧,所以里面也有些不正确的地方,有些地方我是根据我的理解做了修正的,虽然即使你做完成了这个教程,也不是说你就很了不起了,但至少,你已经学会了 CE 的基本操作了,只要再多做练习,熟悉 CE 的操作和各种扫描方式的使用,对付一些简单的游戏,已经是游刃有余了,但要更深入地使用 CE 的更高级的功能,还要再多学习的。其实到这里为止,CE 界面上的一些东西还没有详细的讲过呢,不过在你做完这个教程之前,其实讲了可能你也听

34、不太清楚,所以我会在大家熟悉了CE 的操作后,再另外写一个相对全面一点的介绍 CE 各个部分和各个功能的帖子。怎么写了一夜,都不觉得是自己在写东西,倒象是在翻译呢?也许是职业病吧,告诉你,在很久很久以前,CCB 还不懂电脑的时候,就是专业做翻译的,不过不是做英语的翻译:)。有时真的搞不懂,我自己三分钟就能做完的这个教程,翻译起来再拼凑上自己的几句,就竟然要花掉我五六个小时?也许,这就是创作和享受的差别吧。种田的人,从一棵谷苗到一把米,要花多长的时间?你却一口就能把它吃下:)最后,欢迎大家提问题和扔臭鸡蛋,当然,扔几个魔功120 的魔灵,我也绝对不反对的。不过一定要记得扔在小青蛇,别的区,你扔了

35、我还不想捡呢:)由于最后一步很多人都搞不清楚,因此我在这里再单独重复一下最后一步的详细过程,关于教程上这一步的文字,大家自己看 CE 里面的英文和主帖里面的翻译,我就不再重复了,我只单独详细地把我自己做这一步的过程记录下来让大家参考,要是还那么多人不清楚我就没办法了。其实有时候大家要从自己这一方面去分析一下做不下去的原因,先想想这一步中教程里面的文字你都看懂了没有?都理解了没有,如果看不懂当然做不下去了。现在我来开始单独做最后这一步。一,运行 CE,运行 TUT,在 CE 中指定 tutorial.exe 这个进程,这个我想大家都会了吧。二,因为是单独做,所以我输入了密码直接跳到最后一步,密码

36、是098712,输入后点后面的 OK 就直接出现最后一步。三,根据 TUT 的要求,我们先找到数值所在的内存地址,现在在 TUT 上面显示的数字是100,于是我在 CE 中直接输入100 然后 FIRSTSCAN,这一步得到了83 个地址(这个并不重要,也许你的情况不是83,也许更多,也许更少)。四,然后,我点 TUT 左下的写着“Change Value”的按钮,现在 TUT 上的变成723,于是我在 CE 中输入723 然后 NEXT SCAN,现在就只得到一个地址了,地址是00BD50BC。五,接下来的一步就是把这个地址加到CE 下边的地址列表中,双击左边的这个地址就自动加到下面的地址列

37、表了。六,根据 TUT 的要求,要我们用 CE 的 Find out what writes to thisaddress,于是我在下边的地址列表中对着这个地址点右键,在弹出菜单上点击 Find out whatwrites to this address。接着会出来一个让你确认的对话框,点 YES,接着 CE 的主窗口右边会多出一个新的窗口,窗口标题是Created processes,它下面的列表框中有一个项目,内容是 FFEA10D7,这个就是 TUT 这个进程的进程号或者叫 PID,双击它或者选择它后点下面的 Select。这样 CE 的主窗口前面又会多一个新的窗口,标题是The fo

38、llowing opcodeschanged the selected address,现在可以把Created processes窗口关掉了。七,回到 TUT,现在仍然是点它左下的Change Value。因为我们现在只想改变它的值,还不想让那个数值的地址也改变,所以只点左边的这个按钮。马上你就能看到在 CE 前面的那个 The followingopcodes.那个窗口里出现一条指令,在我这里它显示的是004560cf 89 10 mov eax,edx。如果是在对游戏进行实际的跟踪而不是在完成这个教程,有时可能这个列表会有三四条指令。事实上这个就是 CE 告诉我们,它找到了是这条指令改变

39、了那个地址上的数值。不过这还不够,所以还要继续。八,现在我们先按The following opcodes 这个窗口右下角的 STOP,先停止 CE 对 TUT 的跟踪,然后如 TUT 所说,双击这条找到的指令,或者单击它然后点右边的 MORE INFORMATION。在出来的 EXTRA INFO 这个窗口,上面说的那条指令显示为红色,在这里我再大概说一下这条指令的意思,它是把 edx 这个寄存器里面的数值,放到一个内存地址里,是哪个内存地址呢?这个内存地址就保存在 eax。记得吧?加了方括号的寄存器就不是指数值,而是指一个内存地址,因此这一步不是把 edx 的值放到 eax 这个寄存器里面

40、,而是把edx 的数值放到保存在 eax 中的那个地址。因此,我们要看看刚才程序执行到这一条指令时,eax 的数值是多少。在 extra info 这个对方框下半部,我们可以看到 EAX=00BD50BC,因此我们知道 EAX 的值。九,现在我们按 The following opcodes这个窗口下边的 Close 按钮,先把它关掉,这样才能回到 CE 的主窗口。而 EXTRA INFO可以留着。现在根据 TUT 的要求,我们要来做一次十六进制的扫描,点击 CE 主窗口的NEW SCAN,然后把输入数值的前面那个 HEX 的选项打上勾,表示我们要输入的是十六进制数,再把在EXTRA INFO

41、 中看到的数字,也就是00BD50BC 这个十六进制数输入,然后按 FIRST SCAN 进行扫描,马上一个唯一的结果就出来了,在我这里搜索到的结果是00BD4E64。十,现在我们来按TUT 的要求,以指针的方面把这个结果手工加到地址列表中,并且锁定它。在CE 主窗口的右中部有个按钮“add address manually”,点它之后会出现一个添加地址的对话框。在 OK 这个按钮的上方有个 Pointer 的选项,因为我们是要以指针方式添加这个地址,所以这个选项要打勾。打勾之后,上面原来填地址的地方就变成问号不让你输入了,现在是要在下面的输入框中输入地址和偏移量了。地址就是上面第九步扫描得到

42、的结果,即 00BD4E64,而因为指令中方括号中只有一个 EAX,而没有算式,所以偏移量是0,我们不用改动。同时我们也可以注意到,当我们输入完00BD4E64 之后,上面刚才不让输入地址的地方再在就变成00BD50BC,也就是现在数值所在的地址,说明我们这个指针确实是指向正确的位置的了。现在点确定,新添加上的地址就会出现在地址列表上,并且显示为 P-00BD50BC,表示这是一个指针,它当前指向的内存地址是00BD50BC。现在来试试 TUT 下边另一个按钮,就是改变数值同时改变内存地址的那个“Change pointer”按钮,看看地址变了我们的指针是否还会正确指向它新的地址。确实我们按这

43、个按钮之后,地址列表上的地址 P-后面的内容变了,就是说现在TUT 把这个数值放到新的地址了,不过地址表上那个数值仍然和TUT 上显示的数值一样。经过这一步的测试我们也可以更好地增加对 DMA 和指针方面的认识。现在只要按 TUT 的要求把这个地址前面的 FROZEN 打上勾,再把它的数值改为5000,然后点 TUT 上的 Change pointer 按钮,NEXT 就出现了。其实我想大家在这一步卡住 的原因,一方面是可能对 DMA 和指针这方面的内容还不够了解,另一方面是没认真看TUT 上的文字,我相信大家按照我上面说的步骤做一遍应该就觉得不会那么困难了。由于 TUT 中找到的指令比较简单

44、,没有偏移量,因此我在这里再补充一点关于偏移量方面的内容。假设刚才我们上面找到的指令是mov eax+3C,edx,并且假设 EXTRA INFO 窗口上的数值和上面说的一样的话,那么,我们要扫描的就是 eax+3C,也即 方 括 号 中 的 数 值 了。上 面 例 子 中eax的 值 是 00BD50BC,那 么eax+3C=00BD50BC+3C=00BD50F8,在第九步要扫描的就是这个 00BD50F8 了,而在最后手工添加地址到地址列表的时候,地址要填 00BD50BC,偏移量要填3C。还有,在这个例子中,我们可以把 TUT 中那个数值看成是游戏中的 HP 的值,那么,上面的 00BD50BC就是在某一时刻 HP 所在的内存地址,这个地址是会改变的(例如我们点了 Change pointer按钮时它就会变化),而00BD4E64 这个地址就是这个 HP 的指针,不管地址怎么变化,但变化后的新地址都保存在00BD4E64 这个指针位置上。所以我们只要找到指针,不管内存地址怎么变,我们都能找到数值。从这个例子也可以让大家更好的了解指针到底是怎么一回事。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com