一切从零开始系列教程

上传人:大米 文档编号:498358812 上传时间:2023-06-04 格式:DOCX 页数:10 大小:86.75KB
返回 下载 相关 举报
一切从零开始系列教程_第1页
第1页 / 共10页
一切从零开始系列教程_第2页
第2页 / 共10页
一切从零开始系列教程_第3页
第3页 / 共10页
一切从零开始系列教程_第4页
第4页 / 共10页
一切从零开始系列教程_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《一切从零开始系列教程》由会员分享,可在线阅读,更多相关《一切从零开始系列教程(10页珍藏版)》请在金锄头文库上搜索。

1、一切从零开始系列教程第一课初识CE本课内容:了解内存的作用,单机游戏的数据搜索与修改内容简记:内存是程序与CPU进行沟通的桥梁 内存:存贮数据(临时)。用工具搜索这里面我们想要的数据存放的地址CPU内存程序现在血是9,如果我们找到了这个值存放的内存的地址,那么我们就可以监视这个地址里边的值 的变化。当这个值变化了,我们就可采取一定的措施。比如:加血。搜索内存的专用工具:CE。1. 确定我们要搜索的进程(程序),附加上。.I I=:E-rr.jl.- | i-i J-fr-j 出: 鬼 | 出| El |00000540-MariaP,exe2.搜索:扫描结果:21B地址数值二004242COg

2、1004265E4g004265F8g004266A49ririd-pftF.rd这么多结果里面,只有一个才是真正的存放“血”的地址。其他的呢?3. 从众从结果当中,“筛选”出那一个唯一的地址。怎么筛选?改变(黄金法则)。再次扫描在“结果”当中搜索筛选。4. 必要的时候可以采取“修改”的办法,来判断哪一个才是真正的地址。第二课 易语言写出单机游戏的简单外挂初识易语言1. 读取内存地址里面的值,就可以知道人物的血,子弹,人个数等等数据.读取内存地址里面的值这是今天的一个知识点.怎么读取呢?A. 明确你要读取那个程序(进程)的内存.进程的标识(唯一的)marioxp.exeB. 明确你要读取的是这

3、个程序(进程)的哪一个地址里的值.内存地址.C. 你要读取的是什么类型的数据.(整数型)2. 时钟周期事件,就是每隔一个时钟周期的时间,就执行里面的代码.第三课 初步认识网络游戏数据存放1. 学习用CE找出网络游戏中“血”存放的动态地址。2. 复习用易语言把游戏内存数据读取出来.3. 认识动态内存地址和静态内存地址的区别.我们在这里找到的存放的血的地址,它是一个动态的地址?怎么理解呢?就是说,存放血的地址,它是会变化的?什么时候变化?就是当游戏重新打开过,存放的地址就会变化。第四课 CE寻找游戏动态内存地址的来源血基址的寻找1再次熟悉CE对数据搜索。2. 了解汇编指令 mov 表示的作用 3能

4、理解口表示的意义。EBP=00AggiF8ESP=0012FA匚口EIP=004DB172课程简记:004dbl65 -匚胡 004b905a004dbl6a - jmp 004db204 aptMdbidf- noy ecxedi+400Ci4dbl72 - moj/edxjii-bOOTOeO4db 178 - oun era Copy memoryThe vlue of/he pointer needed to find this address is probably 06ME630EDX=fflOg7BB68ESI=OyOgA30EDI=08AAE630EAK=000M274EBX=

5、oaopooooSZ K=00000260寄存黯是运行之后显示在这里的,表示在执行之前没有被调试寄存 器所存取确定像eax,ebx,ecx,edx这些,我们把它们叫做寄存器。Ecx里的值是260(16进制的),这是当前血值。 解释: mov ecx,edi+40 表示的意思:Mov其实就是move的缩写,move就是移动的意思。Mov参数1,参数2. 把参数2移动给参数1,使参数1 =参数2Mov ecx,edi+40表示把edi+40(内存地址)里的值传给ecx。Mov ecx,edi+40 表示把edx+40,这个值传给ecx.传址,传值。第五课 基址和偏移详解(获取网络游戏的血值)1.

6、复习一下:读内存地址() 内存读整数型 ()2. 根据基址来读取血值(无论哪台机器都能够正确的获取)第六课 利用CE和OD找经验的基址理解基址的作用1. 再次复习CE的用法。2. 初次接触OD找基址。(再次熟悉mov指令)3. 通过本课的经验的基址与第四课的血的基址相比较,理解基址的作用。课程简记:A. 用CE找一下血的基址。B. 再用CE、OD找经验的基址。C. 比较两个基址,看一些规律。CE找血:mov eax,edi+40Mov edi,ecx+53CMov ecx,a9a948血: a9a948+53C+40CE、0D找经验: 0045a957 mov ecx,esi+1152mov

7、esi, ecxmov ecx,mov ecx, dword ptr edi+53Cmov edi, dword ptr A9A948 经验: A9A948 +53C +1152比较: 血: a9a948 + 53C+40经验: a9a948 + 53C +1152这样理角基址: 它是游戏的一个总的地址,游戏中的数据,就是通过基址加上不同的偏移得 到的(这个偏移可以有很多层)。第七课 利用遍历工具找人物其他属性1.再次理解一下基址概念。2.理解遍历的原理。3. 学会遍历工具的应用。血: a9a948 + 53C + 40 经验: a9a948 + 53C + 1152 坐标: a9a948 +

8、 53C + ? 蓝: a9a948 + 53C + a9a948 + 53C+1a9a948 + 53C+2a9a948 + 53C+3a9a948 + 53C+4 a9a948 + 53C+10000可以这样理解:a9a948是游戏的总的基址,而a9a948+53C 人物属性的基址,人物的属性 (比如:血、蓝、坐标、当前经验,等级)都是从这个人物属性基址加上相应的偏移得到的。 人物属性的基址是同一个,而只是加上不同的偏移,就得到了不同的属性。角色名称:基址+53C+4X 坐标:基址+53C+2CY 坐标:基址+53C+30 经验:基址+53C+1152升级经验:基址+53C+1162当前血

9、:基址+53C+40 最大血:基址+53C+44当前蓝:基址+53C+1122 最大蓝:基址+53C+1126第八课 用易语言输出人物信息1 .熟悉易语言的用法。2熟悉 读内存整数型() 窗口属性的改变 组件属性的改变 时钟用法第九课用CE找当前选中怪的信息1熟悉CE的变化筛选,知道“搜索未知初始值”。2熟悉 内存查看工具、遍历工具。3 .认识怪ID。UU 十U _LU 一 JI IU00450620 - mov esi+4000450623 - test0450625 - ie 00450658Copy memoryThe value of the pointer needed to Fin

10、d this c 072B44AOEAK=a0000036EDX=009CDE 阳更爭信息| EBX =07358001ESI=072B44A000410462 - jne 004104c200410464 - mov ecx, 00aa65g0 0041046a - mov eax, ecx+0000054000410470 - cmp eax.ebx00410472 - ie 00410478Copy memoryThe vlue of the pointer needed to find this 三 036C2Z60EAX=072B44A0EBX =00000000ECX=035C22

11、60EDX=036C2260ESI=03751720EDI=072B44A0疑似怪物血的地址: aa6590+540+40人物当前血:aa6590+53C+40怪物名:基址+540+4X坐标:基址+540+2C Y坐标:基址+540+30 怪前当血:基址+540+40 怪最大血:基址+540+44 怪物等级:基址+540+9C 怪物 ID:基址+540+28第十课 用易语言输出当前选中怪物的信息知识点同第八课第十课理解什么是call1理解call是什么。2. 为什么要找call?3. call的类型:有参和无参。什么是call:call,其实就是编程者在编写程序的时候,一句调用子程序的代码。而

12、我们通过OD加载 这个程序(游戏)后,在0D中看来,这句代码就成了 call XXXXXX。也就是说:call其实就是调 用子程序的意思。为什么会是call XXXXX呢?我是这样理解的,我们在编写程序时,我们的子程序 有专门的名字,而当程序通过编译后,这些子程序的名字已经不存在了,我们调用这个子程序的时 候,既然不是通过这个名字来调用的,那通过什么调用呢?我们可以这样认为:当程序被编译出来 以后,每个子程序已经存放在相应的内存地址当中(当然这个程序首先应该被打开,系统为其分配 了内存),当程序要调用子程序的时候,就call XXXXX (这里的XXXXX指的就是程序的内存地址) 注意:我这里

13、说的子程序放在内存地址中,不是说一个内存就放一个子程序,其实是一段内存地 址,存放一个子程序。在0D中,我们的程序(或者子程序)已经化作了一句一句的代码。我们可以 从0D中看出每一句代码是存放在哪个内存地址当中。调用 打坐()Call XXXXXXX(不是打坐()这个名字,而一个内存地址)Call 的是内存地址,而这个内存地址存放着子程序。怎么存放的呢?有参 call? 我们选怪,肯定要指明我们要选哪个怪?哪个?靠什么区分?第十二课用0D找打坐call1熟悉0D界面、快捷键等。2 .理解bp send断点.3. 理解找call为什么要断下返回。4学习call测试工具的使用。第十三课 找开启内挂

14、call和关闭内挂call练习简单call的查找,call需要的数据供给开启内挂call:mov ecx,40431bcall 007a4c60关闭内挂call:movcallecx, eax007A4D30第十四课 组合打坐call和内挂call做简单挂机挂1.理解挂机流程。挂机的思路:最主要的是打怪,在打怪的时候,需要检测(可以用时钟,也可以 用判断循环)人物的当前血,如果当前血小于了一定值(可以是我们规 定的多少数值,也可以我们规定的某一个百分比),我们就需要打坐, 如果不小于,就一直打怪。当打坐完毕过后(血满),那么我们又开始打怪。第十五课 挂机过程中打坐思路的优化1.解决人物打坐状态的判断。

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

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号