完整word版CE修改器傻瓜教程第9关.docx

上传人:b****8 文档编号:28639072 上传时间:2023-07-19 格式:DOCX 页数:26 大小:925.75KB
下载 相关 举报
完整word版CE修改器傻瓜教程第9关.docx_第1页
第1页 / 共26页
完整word版CE修改器傻瓜教程第9关.docx_第2页
第2页 / 共26页
完整word版CE修改器傻瓜教程第9关.docx_第3页
第3页 / 共26页
完整word版CE修改器傻瓜教程第9关.docx_第4页
第4页 / 共26页
完整word版CE修改器傻瓜教程第9关.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

完整word版CE修改器傻瓜教程第9关.docx

《完整word版CE修改器傻瓜教程第9关.docx》由会员分享,可在线阅读,更多相关《完整word版CE修改器傻瓜教程第9关.docx(26页珍藏版)》请在冰豆网上搜索。

完整word版CE修改器傻瓜教程第9关.docx

完整word版CE修改器傻瓜教程第9关

CheatEngine6。

2TutorialStep9教程

作者:

NGKiller@Gmail。

Com原创。

转载请注明作者!

第9关说明:

Step9:

Sharedcode:

(PW=31337157)(密码在此)

Thisstepwillexplainhowtodealwithcodethatisusedforotherobjectofthesametype

Oftenwhenyou'vefoundhealthofaunitoryourownplayer,youwillfindthatifyouremovethecode,itaffects

enemiesaswell。

Inthesecasesyoumustfindouthowtodistinguishbetweenyourandtheenemiesobjects.

Sometimesthisisaseasyascheckingthefirst4bytes(Functionpointertable)whichoftenpointtoauniquelocation

fortheplayer,andsometimesit’sateamnumber,orapointertoapointertoapointertoapointertoapointertoa

playername。

Italldependsonthecomplexityofthegame,andyourluck

Theeasiestmethodisfindingwhataddressesthecodeyoufoundwritestoandthenusethedissectdatafeatureto

compareagainsttwostructures。

(Yourunit(s)/playerandtheenemies)Andthenseeifyoucanfindoutawayto

distinguishbetweenthem。

(注意红色部分,已经提示我们要使用解析资料、结构这个功能,找到敌我分组数据)

Whenyouhavefoundouthowtodistinguishbetweenyouandthecomputeryoucaninjectanassemblerscriptthat

checksfortheconditionandtheneitherdonotexecutethecodeordosomethingelse。

(Onehitkillsforexample)

Alternatively,youcanalsousethistobuildasocalled”Arrayofbyte”stringwhichyoucanusetosearchwhichwill

resultinalistofallyourortheenemiesplayers

InthistutorialIhaveimplementedthemostamazinggameyouwilleverplay.

Ithas4players.2Playersbelongtoyourteam,and2Playersbelongtothecomputer.

YourtaskistofindthecodethatwritesthehealthandmakeitsoyouwinthegameWITHOUTfreezingyourhealth

Tocontinue,press”Restartgameandautoplay”totestthatyourcodeiscorrect

Tip:

Healthisafloat(生命值是一个浮点数据)

Tip2:

Therearemultiplesolutions

下面先用CE加载进程,并查询浮点数100XXX

点击教程中的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)//2kbshouldbeenough

label(returnhere)

label(originalcode)

label(exit)

newmem:

//thisisallocatedmemory,youhaveread,write,executeaccess

//placeyourcodehere这里开始写我们的代码

originalcode:

原始代码是这个,要注意下面有个fldz,如果自己写代码,最后一句要把这个加上,至于为什么下面说明

mov[ebx+04],eax

fldz

exit:

jmpreturnhere

”Tutorial—i386。

exe”+250C6:

jmpnewmem

returnhere:

最后从这儿退出

下面是我写的代码,说明继续为蓝色(如果复制的话请把蓝色字全删除掉)。

alloc(newmem,2048)//2kbshouldbeenough

label(returnhere)

label(originalcode)

label(exit)

newmem:

//thisisallocatedmemory,youhaveread,write,executeaccess

//placeyourcodehere

cmp[ebx+10],1对比组,记得分析窗口里的偏移量吧,+10是组,队友是1,敌人是2

jeexit如果是队友,则跳转到exit处

originalcode:

如果不是队友而是敌人,上面的je不会跳转,会继续执行这儿

mov[ebx+04],eax原始的语句,让他减血

fldz

jmpreturnhere跳转退出

exit:

队友的话会跳转到这儿

nop什么也不做(即不减血)

fldz这个要加上,为什么加上,可以在注入后查看内存查看器窗口中,250C6下面的那一行在注入后消失了!

而这一行的代码就是fldz为了不使程序出错,这一句一定要手动加上

jmpreturnhere跳转退出,返回原程序继续执行

”Tutorial—i386。

exe"+250C6:

jmpnewmem

returnhere:

注入代码结束位置

点击运行,然后返回教程点击RestartgameandAutoplay,会看到自己的队友不减血而敌人一会儿就挂了。

下面说第2种注入方法。

先来考虑一种情况,如果要队友、敌人减血,那么至少应该有一个“减”运算操作吧,那么我们在内存查看器窗口中,从250C6处往上翻,如果没有程序调用(call*****这样的代码),那么往上第一个减运算一定是减血操作了。

我们往上看,到2509D(不同电脑地址可能不同!

)这儿果然看到了fsubr(这代表什么意思请自觉汇编语言):

好了,现在开始另一种注入方法,直接改写这儿的代码,如果是敌人就减血,如果是自己的队友就加血,而且可以实现一击必死(直接减敌人100W的血,他不死才怪)。

选中2509D这一行,点工具—自动汇编,然后点模板—代码注入。

这里直接上我自己写的代码并附解释:

alloc(newmem,2048)//2kbshouldbeenough

label(returnhere)

label(originalcode)

label(exit)

newmem:

//thisisallocatedmemory,youhaveread,write,executeaccess

//placeyourcodehere

cmp[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:

jmpnewmem

nop

returnhere:

返回原程序

好了,点击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:

jmpStoreHealthAddress

nop

nop

nop

nop

nop

nop

StoreHealthAddressReturn:

 

StoreHealthAddress:

//FrombelowIcalculatedManuallyHealthAddress

//AndstoredattheCustomAddress

//Note:

-ForHealthaddress,add4toit。

eg.add[Player1_Dave],4

//meansvalueatthe[Player1_Dave]istheHealthAddress。

pushecx

movecx,[ebx+49C]//Offset-〉49CPlayer1

mov[Player1_Dave],ecx

popecx

pushecx

movecx,[ebx+4A0]//Offset—>4A0Player2

mov[Player2_Eric],ecx

popecx

pushecx

movecx,[ebx+4A4]//Offset->4A4Enemy1

mov[Enemy1_Hal],ecx

popecx

pushecx

movecx,[ebx+4A8]//Offset—〉4A8Enemy2

mov[Enemy2_Kitt],ecx

popecx

//Frombelowitisorignalcodeatthe”tutorial-i386.exe”+2504C

movebx,eax

movesi,edx

mov[ebp—3C],00000000

jmpStoreHealthAddressReturn

 

//--------—-—-—-—--——-———-—————-————-—-—-—

//WriteAddress

//—-———-——-—--——---—--—--—----——--—-—-----

 

//AtthisAddressFriendlyaswellasEnemyHealthisDecreasing

"Tutorial-i386.exe”+250C6:

jmpWriteHealthAddress

WriteHealthAddressReturn:

 

//NowI’mcheckingtheHealthaddressForeachplayerseperately。

WriteHealthAddress:

cmpebx,[Player1_Dave]

jeIsPlayer1_Dave

cmpebx,[Player2_Eric]

jeIsPlayer2_Eric

cmpebx,[Enemy1_Hal]

jeIsEnemy1_Hal

cmpebx,[Enemy2_Kitt]

jeIsEnemy2_Kitt

jmpWriteOrignal

jmpWriteHealthAddressReturn

//—-——--——--——-——-—-—-————-—-—-————-

IsPlayer1_Dave:

mov[ebx+04],(float)99999

fldz

jmpWriteHealthAddressReturn

IsPlayer2_Eric:

mov[ebx+04],(float)99999

fldz

jmpWriteHealthAddressReturn

IsEnemy1_Hal:

mov[ebx+04],(float)0

fldz

jmpWriteHealthAddressReturn

IsEnemy2_Kitt:

mov[ebx+04],(float)0

fldz

jmpWriteHealthAddressReturn

//—-—-——-—--—---———-——-——-——--—--—-—

WriteOrignal:

mov[ebx+04],eax

fldz

jmpWriteHealthAddressReturn

 

[DISABLE]

dealloc(StoreHealthAddress)

"tutorial-i386.exe"+2504C:

movebx,eax

movesi,edx

mov[ebp-3C],00000000

dealloc(WriteHealthAddress)

"Tutorial—i386.exe”+250C6:

mov[ebx+04],eax

fldz

注意上面的偏移地址有所不同,要记得按自己的实际情况来修改。

第8关、9关视频教程下载地址(下载后设置下载地址为其他颜色即可查看):

下载地址

http:

//pan。

baidu。

com/share/link?

shareid=52597&uk=2802192375

作者:

NGKiller@Gmail。

Com原创.转载请注明作者!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 卡通动漫

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1