码迷,mamicode.com
首页 > 其他好文 > 详细

游戏外挂原理解析与制作 - [内存数值修改类 篇四]

时间:2017-07-28 22:16:19      阅读:567      评论:0      收藏:0      [点我收藏+]

标签:说明   文章   汇编   tle   heat   改变   简单   ges   制作   

  前三篇的博文结合了C#的Demo对内存数据修改一类的挂剖析了原理,利用C#语言调用Windows API我们其实已经写出了一个简单的内存扫描工具,但是它存在一些缺陷,比如说只能所搜索单一类型数值(整型),只能搜索确定的数值,比如10002000,而不能进行模糊搜索,比如搜索某个值变小了,或者在某某区间内变化了等。

 

  我一直认为语言只是一种工具,只要能够达到修改数值的目的,用什么语言都可以,甚至可以配合着多种语言和工具来完成一项数值的修改。其实实际中通常都是这样,因为每种语言有自己的优势,比如C语言/易语言这类非托管的语言对底层操作的权限非常之大,特别是易语言,容易上手加上不少人已经封装了大量的操作底层的模块,而C#Java等优势就表现在应用层的封装,API的灵活调用。合理的利用语言的优势在它们擅长的领域,对技术保持开放的心态,不被拘束在语言层面才能对各种游戏进行剖析。

  

接下来的几篇文章重点教学[Cheat Engine]这款内存修改器,类似的还有OD、金山游侠(这款工具没有研究的意义,功能单一化、对于指针和汇编的理解帮助颇少),我们自己封装工具耗费时间的成本实际上是很高的,而且这些工具已经拥有很强大的功能了,我们可以利用这些工具更好的理解原理。

 

  本章先讲一下简单的使用,我们这次就不写Demo了,直接找一个小游戏进行测试。

 

  这个是三目童子,我小时候在小霸王游戏上玩的。

  技术分享技术分享

  

  我们目前看到的信息有:

   6格血  技术分享        0个金币 技术分享        2条命技术分享

 

  这就是我们肉眼能看到的一些信息,还有人物坐标、装备道具等是目前无法看到但真实存在的数值。

  

  现在我们打开CE:技术分享

  下图是它的主界面:  

       技术分享

  

  我这个是比较老的版本了,首先点击图标技术分享,打开选择进程的界面。

  技术分享

  从图标或者进程名称中可以看到,我用绿色框出来的这个进程就是我们三目童子的游戏进程。

     技术分享

  这一步的目的很明显就是获取该游戏进程的PID和句柄Handle

  

  我们点击打开,打开之后可以看到右侧控件已经变为可用状态了。

  技术分享

 

  接下来我们就来尝试搜索一下血量(6)这个数值

  技术分享

  

  我们在值中输入6,点击首次扫描,在左侧显示如下的列表,可以看到整个内存块中有2801个值为6 的地址。

   技术分享

  

  现在采用上一章节提到的方法,使得6这个值发生变化,我们去撞一下小兵:

   技术分享

  可以看到血量变成5格了

 

  此时把值修改成5后,点击再次扫描:

  技术分享

  

  下图是搜索结果,没有找到对应的地址, 可以看到数量是 0

  技术分享

  这就尴尬了,其实是因为我们的数值类型选择的是4字节,CE打开默认4字节搜索就是整形数,而以前的游戏机不比现在有那么高的存储容量,一般能以字节存放的变量就定义为BYTE,所以我们重新开始搜索,点击新的扫描技术分享,然后下拉扫描类型为字节

   技术分享

  

  此时按下首次扫描,得到以下扫描结果

  技术分享

  可以看到 字节形式存放的变量高达68696个,我们继续撞一下小兵

  技术分享

  好了,这下变成4格血量了,我们把CE需要扫描的值改为4,然后点击再次扫描

  技术分享

  

  找到4个结果

  技术分享

  其中 地址0x2D00044 的值一直在变化,我们可以排除这个地址

 

  那么在剩下的三个地址中有没有存放血量的地址呢,我们继续改变血量

  技术分享

  血量变成三个格子了,我们对3再次进行搜索

  技术分享

  

  结果如下图:

   技术分享

 

  现在就剩下一个地址0x2D00092中存放的字节值为3,我们来确定下这个地址是否是血量存放的地址,我们点击该地址

  技术分享

  

  然后点击箭头图标技术分享把他添加到待操作的地址列表中

  技术分享

  

  双击此记录的值

  技术分享

  

  我们把值修改为6,我们再来看下游戏中的血量是否跟着变化了,注意界面上的血量可能没有立刻跟着变化,因为这类游戏只有在血量发生变化的时候才会去读取显示它的值,所以我们需要再去撞一下怪。

   技术分享

  可以看到血量变成5格了,这说明修改成功了(修改6格血量后,撞一下怪减了一格血量,所以剩5),我们再来看下CE的界面

   技术分享

  没有问题,数值显示5,这样的话我们就跟着CE这款工具完成了一次最基础数据的修改。大家看其实和我们写代码修改用的原理是一样的,就像破解WIFI密码一样,穷举对比,找到正确的地址或密码。

  

  下一节讲解动态地址指针和偏移的查找。

  

  PS:转载请附带原文路径:http://www.cnblogs.com/lene-y/p/7252446.html  ,我已委托“维权骑士”为我的文章进行维权行动。

  欢迎关注微信公众号[游戏外挂原理解析与制作],对本文有不理解的地方或者不同的观点可以给我留言,互相交流 共同进步。

    技术分享

       扫码关注公众号

 

游戏外挂原理解析与制作 - [内存数值修改类 篇四]

标签:说明   文章   汇编   tle   heat   改变   简单   ges   制作   

原文地址:http://www.cnblogs.com/lene-y/p/7252446.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!