CE修改器傻瓜教程-第9关_第1页
CE修改器傻瓜教程-第9关_第2页
CE修改器傻瓜教程-第9关_第3页
CE修改器傻瓜教程-第9关_第4页
CE修改器傻瓜教程-第9关_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CheatEngine6.2TutorialStep9教程作者:NGKiller@Gmail.Com原创。转载请注明作者!第9关说明:Step9:Sharedcode:(PW=31337157)(密码在此)ThisstepwillexplainhowtodealwithcodethatisusedforotherobjectofthesametypeOftenwhenyou'vefoundhealthofaunitoryourownplayer,youwillfindthatifyouremovethecode,itaffectsenemiesaswell.Inthesecasesyoumustfindouthowtodistinguishbetweenyourandtheenemiesobjects.Sometimesthisisaseasyascheckingthefirst4bytes(Functionpointertable)whichoftenpointtoauniquelocationfortheplayer,andsometimesit'sateamnumber,orapointertoapointertoapointertoapointertoapointertoaplayername.Italldependsonthecomplexityofthegame,andyourluckTheeasiestmethodisfindingwhataddressesthecodeyoufoundwritestoandthenusethedissectdatafeaturetocompareagainsttwostructures.(Yourunit(s)/playerandtheenemies)Andthenseeifyoucanfindoutawaytodistinguishbetweenthem.(注意红色部分,已经提示我们要使用解析资料、结构这个功能,找到敌我分组数据)Whenyouhavefoundouthowtodistinguishbetweenyouandthecomputeryoucaninjectanassemblerscriptthatchecksfortheconditionandtheneitherdonotexecutethecodeordosomethingelse.(Onehitkillsforexample)Alternatively,youcanalsousethistobuildasocalled"Arrayofbyte"stringwhichyoucanusetosearchwhichwillresultinalistofallyourortheenemiesplayersInthistutorialIhaveimplementedthemostamazinggameyouwilleverplay.Ithas4players.2Playersbelongtoyourteam,and2Playersbelongtothecomputer.YourtaskistofindthecodethatwritesthehealthandmakeitsoyouwinthegameWITHOUTfreezingyourhealthTocontinue,press"Restartgameandautoplay"totestthatyourcodeiscorrectTip:Healthisafloat(生命值是一个浮点数据)Tip2:Therearemultiplesolutions下面先用CE加载进程,并查询浮点数100PAGEXXX点击教程中的Attach减少数值,然后加入变化的搜索结果。同理查找500(浮点)并点击Attach,加入敌人的HP数值段,如下(不同电脑地址可能不同!):右击P1,选择:什么改写了这个地址。点击教程中Player1处的Attach,调试窗口出现如下变化点详细信息,打开图中红色就是改写的代码,意思是将eax中的数值写入ebx+04这个地址指向的地址,注意用“[]”括起来的地址是一个指针,指向另一个地址。这里我们记住偏移量是+04,后面解析数据时要用到回到CE主窗口,点击任一一个地址,选择:浏览相关内存区域,会发现都指向250C6这个地址(不同电脑地址可能不同!)。说明当攻击敌人或者队友时,都是通过同一个程序调用输出数值(为什么可以用同一个程序调用指向不同的地方?因为ebx可以存储不同的位置指针,所以可以指向不同的地方,这个学过编程就明白了)到这里,我们就要开始分析数据了,这是最重要的一个环节。在内存查看器窗口中点击工具-解析资料、结构这里要把先前查询到的4个地址都填写进去(不同电脑地址可能不同!),用来分析这4组数据有什么共同、不同点,然后为自动注入代码做准备。回到CE主窗口,看到这4个地址在结构分析窗口,点击文件-加入额外的地址,再加3个,一同是4个,分别将先前的4个地址填写进去,记得前面我让你记住的偏移量吗?是+04(不同电脑偏移地址可能不同!),这里要注意把这个偏移量减掉结构分析窗口还可以进行分组,这个自己尝试,我们将敌我分2个组,最终效果见图:点击结构-定义新的结构,一路点确定(3个对话框),开始结构分析。当看到这个窗口,相信大家已经有了大概的修改框架,如图,玩家的名字、以及队伍分组(现在只能是猜测),都一目了然,这里要注意,我们要记下玩家分组的偏移量是10,即+10(不同电脑偏移地址可能不同!),这个是区别队友与敌人的标识,当然目前来说是我们的猜测,但实际上确实如此。这里大家也许有个疑问,为什么要在地址后面-04呢?那么用player1举例说明。我们回头来看:什么改写了这个地址窗口-详细。如图,打开Windows自带的计算机,选择程序员类型,改为十六进制,计算机一下018B7FE8+04=018B7FEC,你能看出什么?这里你要懂一些编程方面的知识了。如果把一个人物的信息用编程语言来表示,那么就应该有如下结构:structpeople{ stringname; floatlife; ……};这里,当一个结构开始,偏移量为0,name的偏移量+2,life的偏移量+4,依次类推,往后就是偏移量+数字了。这里我们看:018B7FE8+00 开始018B7FE8+04 =018B7FEC 血量018B7FE8+10 组018B7FE8+15 名字这下明白了吗?我们要从这个结构的最开始进行分析,那么就要从018B7FE8开始,而这个怎么得来呢?从018B7FEC-04就可以了。其他玩家也是一样的。但在游戏中可能要比这个复杂得多,因为这个教程本来就是面向初学者,再不多说。下面我们就开始代码注入,进行修改并完成这个教程。这里有2种方法。先说一种比较简单的。现在我们已经确定,250C6这个地址(不同电脑地址可能不同!)是把计算的结果显示出来的,那么我就可以在这里下手进行判断,如果是队友,那么就不执行这个操作,直接用nop代替不做任何事,如果是敌人就按原来的代码执行,减去血量。在内容查看窗口,选中250C6这一行,然后选择工具-自动汇编,然后选择模板-代码注入,弹出的对话框点确定。自动生成的代码如下,我的说明是蓝色字体:alloc(newmem,2048)//2kbshouldbeenoughlabel(returnhere)label(originalcode)label(exit)newmem://thisisallocatedmemory,youhaveread,write,executeaccess//placeyourcodehere这里开始写我们的代码originalcode:原始代码是这个,要注意下面有个fldz,如果自己写代码,最后一句要把这个加上,至于为什么下面说明mov[ebx+04],eaxfldzexit:jmpreturnhere"Tutorial-i386.exe"+250C6:jmpnewmemreturnhere:最后从这儿退出下面是我写的代码,说明继续为蓝色(如果复制的话请把蓝色字全删除掉)。alloc(newmem,2048)//2kbshouldbeenoughlabel(returnhere)label(originalcode)label(exit)newmem://thisisallocatedmemory,youhaveread,write,executeaccess//placeyourcodeherecmp[ebx+10],1对比组,记得分析窗口里的偏移量吧,+10是组,队友是1,敌人是2jeexit如果是队友,则跳转到exit处originalcode:如果不是队友而是敌人,上面的je不会跳转,会继续执行这儿mov[ebx+04],eax原始的语句,让他减血fldzjmpreturnhere跳转退出exit:队友的话会跳转到这儿nop什么也不做(即不减血)fldz这个要加上,为什么加上,可以在注入后查看内存查看器窗口中,250C6下面的那一行在注入后消失了!而这一行的代码就是fldz为了不使程序出错,这一句一定要手动加上jmpreturnhere跳转退出,返回原程序继续执行"Tutorial-i386.exe"+250C6:jmpnewmemreturnhere:注入代码结束位置点击运行,然后返回教程点击RestartgameandAutoplay,会看到自己的队友不减血而敌人一会儿就挂了。下面说第2种注入方法。先来考虑一种情况,如果要队友、敌人减血,那么至少应该有一个“减”运算操作吧,那么我们在内存查看器窗口中,从250C6处往上翻,如果没有程序调用(call*****这样的代码),那么往上第一个减运算一定是减血操作了。我们往上看,到2509D(不同电脑地址可能不同!)这儿果然看到了fsubr(这代表什么意思请自觉汇编语言):好了,现在开始另一种注入方法,直接改写这儿的代码,如果是敌人就减血,如果是自己的队友就加血,而且可以实现一击必死(直接减敌人100W的血,他不死才怪)。选中2509D这一行,点工具-自动汇编,然后点模板-代码注入。这里直接上我自己写的代码并附解释:alloc(newmem,2048)//2kbshouldbeenoughlabel(returnhere)label(originalcode)label(exit)newmem://thisisallocatedmemory,youhaveread,write,executeaccess//placeyourcodeherecmp[ebx+10],1判断是否是队友jeexit如果是队友则跳转到exit处,否则继续往下执行originalcode:原始语句fsubrdwordptr[ebx+04]如果是敌人,直接减血fstpdwordptr[ebp-30]jmpreturnhere减血完毕,返回原程序exit:如果是队友来到这儿fadddwordptr[ebx+04]改fsubr为fadd,执行加血命令fstpdwordptr[ebp-30]jmpreturnhere加血完毕,返回原程序"Tutorial-i386.exe"+2509D:jmpnewmemnopreturnhere:返回原程序好了,点击Restartgameandautoplay,看到如下结果,队友不仅没减血,而且还加血了。搞定!如何实现一击必死呢?可以参考如下代码,是CE论坛上找到的,不做说明,自己看吧。//MadebysvchostwithCheatEngine6.2RC1//4thMay,2012[ENABLE]alloc(StoreHealthAddress,2048)label(StoreHealthAddressReturn)alloc(WriteHealthAddress,2048)label(WriteHealthAddressReturn)globalalloc(Player1_Dave,4)globalalloc(Player2_Eric,4)globalalloc(Enemy1_Hal,4)globalalloc(Enemy2_Kitt,4)label(WriteOrignal)label(IsPlayer1_Dave)label(IsPlayer2_Eric)label(IsEnemy1_Hal)label(IsEnemy2_Kitt)////ReadAndStoreAddressForLaterComparison////At"tutorial-i386.exe"+2504Caddress,ebxisconstantforHealthAddressCalculation"tutorial-i386.exe"+2504C:jmpStoreHealthAddressnopnopnopnopnopnopStoreHealthAddressReturn:StoreHealthAddress://FrombelowIcalculatedManuallyHealthAddress//AndstoredattheCustomAddress//Note:-ForHealthaddress,add4toit.eg.add[Player1_Dave],4//meansvalueatthe[Player1_Dave]istheHealthAddress.pushecxmovecx,[ebx+49C]//Offset->49CPlayer1mov[Player1_Dave],ecxpopecxpushecxmovecx,[ebx+4A0]//Offset->4A0Player2mov[Player2_Eric],ecxpopecxpushecxmovecx,[ebx+4A4]//Offset->4A4Enemy1mov[Enemy1_Hal],ecxpopecxpushecxmovecx,[ebx+4A8]//Offset->4A8Enemy2mov[Enemy2_Kitt],ecxpopecx//Frombelowitisorignalcodeatthe"tutorial-i386.exe"+2504Cmovebx,eaxmovesi,edxmov[ebp-3C],00000000jmpStoreHealthAddressReturn////WriteAddress////AtthisAddressFriendlyaswellasEnemyHealthisDecreasing"Tutorial-i386.exe"+250C6:jmpWriteHealthAddressWriteHealthAddressReturn://NowI'mcheckingtheHealthaddressForeachplayerseperately.WriteHealthAddress:cmpebx,[Player1_Dave]jeIsPlayer1_Davecmpebx,[P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论