加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

封包挂入门——第一章:什么是封包

(2013-01-05 05:11:22)
标签:

封包挂

网络游戏

游戏修改

外挂编写入门

基础教程

杂谈

    前些时候发表了一篇《网游封号封外挂封线下交易封按键精灵终极攻略》,引来不少菜鸟过来咨询问题,还是那句话,太菜的问题就别打扰我了,但非常欢迎高手们加QQ来探讨指正小弟的不足!
    为了满足众人对封包挂的神秘感,这里白话一篇封包的原理,觉得好的送花送银币啊,真的高手扔鸡蛋也可,扔完了要说明下鸡蛋里是什么!
    
    关于游戏脚本的种类可以参考前些时候我发的帖子:(此帖在开篇对各种脚本的种类有一个通俗的讲解)
    网游封号封外挂封线下交易封按键精灵终极攻略  http://bbs.anjian.com/thread-398240-1-1.html  
        
    都知道现在封杀脚本非常厉害,封杀与反封杀的斗争将会更加残酷,兄弟们,任重而道远啊!
    要想在游戏脚本的开发中做到百战百胜,是需要相当丰富的计算机知识的,很多计算机高手就是从玩单机游戏,修改单机游戏中,逐步对计算机产生浓厚的兴趣,慢慢成长起来的。不要一味的羡慕别人能做到这能实现那,别人能够做的你也能够!相信看过本人相关帖子的人,都会恍然大悟!本人的帖子更注重从开发的实战中出发,所有的心得也均是本人亲自在开发中突破而来,更加贴近大家的实际困难。

    不过要想从修改游戏中学到知识,增加自己的计算机水平,可不能只是靠修改单机游戏呀!要知道,修改单机只是一个验证你对你所了解的某些计算机知识的理解程度的小测试,只能给你一些发现问题、解决问题的机会,起到帮助你提高学习计算机的兴趣的作用,而决不是学习计算机的捷径。捷径得看我的帖子,哈哈^_^! 

一:什么叫脚本? 

    脚本也不完全局限于网游,各种单机或者局域网的游戏都可以开发对应的脚本,也都有人开发相应的脚本,比如红警,星际,魔兽的修改器,小游戏有改愤怒的小鸟,改仙剑奇侠传的,改植物大战僵尸的,这些东西想必大家都不陌生吧!更改单机的工具,9X年就有了,什么金山游侠,GameMaster等等,我上大学那会儿就特喜欢更改单机游戏,玩仙剑98,不想让林月如死,在林月如死后再让她复活,修改李逍遥的和赵灵儿,林月如的攻防血,其乐无穷!  
    但是,现在的很多游戏都是基于Internet上客户/服务器模式,游戏服务器上运行服务端程序,由运营商控制,游戏的设计者在创造一个庞大的游戏空间和相应的游戏规则,各地的玩家可以下载客户端安装到本地电脑,通过运行客户端程序同时登录到游戏中,大家都在这些服务器上虚拟出来的世界里交流、玩乐、PK。抽象的说,网络游戏就像网游公司虚拟出来了一个纳威星(被告诉我你没看过阿凡达),玩家通过自己的电脑同时进入到这个虚拟的世界里,扮演自己的那个阿凡达。玩家在相对公平的游戏规则中,相对自由和开放地对游戏人物进行操作。
    那么既然在网络游戏中有了服务器这个概念,传统的修改游戏方法就显得无能为力了。单机版游戏中,随心所欲地通过内存搜索来修改角色的各种属性,这在网络游戏中毫无作用。因为我们在网络游戏中所扮演角色的各种属性及各种重要资料都存放在服务器上,在我们自己机器上(客户端)只是临时的显示角色的状态,所以通过修改客户端内存里有关角色的各种属性是不切实际的,就算能修改也都是暂时的。难道我们就没办法像修改单机一样的修改网游数据,任意达到我们的目的吗?我的回答是"当然有!"。
  客户端-服务器的网游模式的通讯一般采用TCP/IP通信协议,数据交换是通过IP数据包的传输来实现的,一般来说客户端向服务器发出某些请求,比如移动、战斗等指令都是通过封包的形式和服务器交换数据。那么我们把本地发出消息称为SEND,意思就是发送数据,服务器收到我们SEND的消息后,会按照既定的程序把有关的信息反馈给客户端,比如,移动的坐标,战斗的类型。那么我们把客户端收到服务器发来的有关消息称为RECV。知道了这个道理,接下来我们要做的工作就是分析客户端和服务器之间往来的数据(也就是封包),这样我们就可以提取到对我们有用的数据进行修改,然后模拟服务器发给客户端,或者模拟客户端发送给服务器,这样就可以实现我们修改游戏的目的了。
  目前除了修改游戏封包来实现修改游戏的目的,我们也可以修改客户端的有关程序来达到我们的要求。因为硬件能力的限制,目前各个服务器的运算能力是有限的,特别在游戏中,游戏服务器要计算游戏中所有玩家的状况几乎是不可能的,所以有一些运算还是要依靠我们客户端来完成,这样又给了我们修改游戏提供了一些便利。比如我们可以通过将客户端程序脱壳来发现一些程序的判断分支,通过跟踪调试我们可以把一些对我们不利的判断去掉,以此来满足我们修改游戏的需求。 在后续的帖子中,我会陆续将给大家讲述封包的概念和修改跟踪客户端的有关知识,请拭目以待!

基本概念——游戏数据格式和存储: 
  在进行我们的工作之前,我们需要掌握一些关于计算机中储存数据方式的知识和游戏中储存数据的特点。这里是提供给菜鸟级的玩家看的,如果你是高手就可以跳过了,如果,你想成为无坚不摧的杀手,那么,这些东西就会花掉你一些时间;如果,你只想做看客的话,那么这些东西,了解与否无关紧要。是作杀手,还是作看客,你选择吧!
  现在我们开始!首先,你要知道游戏中储存数据的几种格式,这几种格式是:字节(BYTE)、字(WORD)和双字(DOUBLE WORD),或者说是8位、16位和32位储存方式。字节也就是8位方式能储存0~255的数字;字或说是16位储存方式能储存0~65535的数;双字即32位方式能储存0~4294967295的数。
  为何要了解这些知识呢?在游戏中各种参数的最大值是不同的,有些可能100左右就够了,比如,《大唐无双2》中的角色的等级、随机遇敌个数等等。而有些却需要大于255甚至大于65535,如《大唐无双2》中角色的金钱值可达到数百万。所以,在游戏中各种不同的数据的类型是不一样的。在我们修改游戏时需要寻找准备修改的数据的封包,在这种时候,正确判断数据的类型是迅速找到正确地址的重要条件,这一点和找内存数据有雷同,主要是为了在海量的数据中,缩小范围,归类查找。 
  在计算机中数据以字节为基本的储存单位,每个字节被赋予一个编号,以确定各自的位置。这个编号我们就称为地址在需要用到字或双字时,计算机用连续的两个字节来组成一个字,连续的两个字组成一个双字。而一个字或双字的地址就是它们的低位字节的地址。现在xp操作系统中,地址是用一个32位的二进制数表示的。而在平时我们用到内存地址时,总是用一个8位的16进制数来表示它。 
  二进制和十六进制又是怎样一回事呢? 
  简单说来,二进制数就是一种只有0和1两个数码,每满2则进一位的计数进位法。同样,16进制就是每满十六就进一位的计数进位法。16进制有0--F十六个数字,它为表示十到十五的数字采用了A、B、C、D、E、F六个数字,它们和十进制的对应关系是:A对应于10,B对应于11,C对应于12,D对应于13,E对应于14,F对应于15。而且,16进制数和二进制数间有一个简单的对应关系,那就是;四位二进制数相当于一位16进制数。比如,一个四位的二进制数1111就相当于16进制的F,1010就相当于A。 
  了解这些基础知识对修改游戏有着很大的帮助,下面我就要谈到这个问题。由于在计算机中数据是以二进制的方式储存的,同时16进制数和二进制间的转换关系十分简单,所以大部分的修改工具在显示计算机中的数据时会显示16进制的代码,而且在你修改时也需要输入16进制的数字。以上的讲解你都清楚了吗? 
  在游戏中看到的数据可都是十进制的,在要寻找并修改参数的值时,可以使用Windows提供的科学计算器来进行十进制和16进制的换算(windows-开始-附件-计算器)。 
  最后需要告知大家的是,在计算机中数据的储存方式一般是低位数储存在低位字节,高位数储存在高位字节,比如,十进制数50332转换为16进制的数为C49C,但在计算机中这个数被存为9CC4。 
  看了以上内容大家对数据的存贮和数据的对应关系都了解了吗?接下来我要告诉大家在游戏中,封包到底是怎么一回事,来!抑制住兴奋吧,你会发现这些东西居然如此的通俗易懂!
二:什么是封包? 
  怎么截获一个游戏的封包?怎么去检查游戏服务器的ip地址和端口号? Internet用户使用的各种信息服务,其通讯的信息最终均可以归结为以IP包为单位的信息传送,IP包除了包括要传送的数据信息外,还包含有信息要发送到的目的IP地址、信息发送的源IP地址、以及一些相关的控制信息。当一台路由器收到一个IP数据包时,它将根据数据包中的目的IP地址项查找路由表,根据查找的结果将此IP数据包送往对应端口。下一台IP路由器收到此数据包后继续转发,直至发到目的地。路由器之间可以通过路由协议来进行路由信息的交换,从而更新路由表,那么我们所关心的内容只是IP包中的数据信息,我们可以使用许多监听网络的工具来截获客户端与服务器之间的交换数据。并且把这些数据按照你的意愿去修改。
    这些封包数据被修改以后,可以用VB或C,C++做成插件提供给按键精灵或者其他高级语言使用,也可以做成完全的封包挂,就是俗称的脱机挂,有很多菜鸟有个误区,他们找我的时候总是把按键,VB,内存挂,封包挂(脱机挂)严格的分开,其实他们之间是可以互通有无的,按键精灵一样支持内存和封包的,纯的内存工具盒封包工具开发脚本也是非常的吃力的,如果配合按键精灵或者其他高级语言,会事半功倍的!

    那么如何使用这些内存和截包工具来达到我们想要的目的呢,本人在后续的帖子中会有更详细的介绍。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有