逆向思维 《魔兽世界》封包分析
日期:2007年9月3日 作者: 查看:[大字体 中字体 小字体]-
本人非常欣赏暴雪及他们的游戏,之所以写这个文章,是想让大家了解一些网络封包分析方面的常见方法以及学习暴雪游戏在网络处理方面的经验,偶认为作为一个网络编程者,熟练掌握封包分析的工具和方法应该是其基本功之一。本文所列的所有封包分析内容,全部是采用普通黑箱方式即可得来的,并未涉及对魔兽世界可执行程序的逆向工程。同时,除此文涉及的内容外,本人拒绝向任何人透露更详细的关于魔兽世界封包方面的更多内容,有兴趣者请自己进行相关的试验,本人在此文中也将尽量避免公开敏感的封包内容及相关加解密算法。谨以此文献给忠爱的暴雪!
一、登录模块流程及封包分析
我们先看登录流程。从封包流程来看,魔兽的登录流程是这样的:
1.由Client向登录/账号服务器(Login Server)发送用户名及密码等信息。此数据包的最后部分是用户名(明文表示,未加密),在用户名的前一个字节表示的是用户名的长度。登录/账号服务器向Client返回登录成功及后续连接到游戏服务器服务器所必备的信息等。这中间的两个来往数据包,我还没有看出具体有什么作用。在这个交互过程中,由登录/账号服务器向Client发送所有的游戏服务器列表,服务器列表数据包的内容包括:ip, port, 服务器上所拥有的角色个数等信息,因服务器列表内容过多,被客户端分为两次接收完毕。
2.Client收到Login Server的服务器列表后,根据最近访问的服务器标识(这个信息应该是包含在那个服务器列表数据包中),连接到最近游戏的那个游戏服务器(Game Server)。连接成功后,Game Server首先向Client发送一个8字节的数据包,据以往的常识判断,这个数据包的内容很可能是以后客户端与服务器通信的加密密钥。3.Client向Game Server再次发送自己的账号信息。Game Server与Client经过两个数据包的交互后,向Client发送角色数据包,此包中包括了玩家在该Game Server所创建的所有角色信息,当然这个信息只是部分的,并不是该角色的所有信息。
4.在此后的通信过程中,Client每隔30秒向Game Server发送一个保持连接的包,该包长度为10字节,包的最后四字节是一个递增数字,前面6字节暂时未看出规律。5.只要Client没有点击某个角色进入最终的Game Server,则Client要始终与Login Server保持连接。当Client点击角色进入Game Server时,Client才与Login Server断开连接。在以后的游戏过程中,Client始终与且仅与该Game Server进行数据通信。
通过对登录流程中的数据包初步分析,可以得出以下几个结论:
1.Client向Login Server发的第一个数据包,用户名部分是采用明文的,且该数据包的内容,每次登录都一样,并没有因时间的不同而发生改变。由此可以推算:针对于此数据包中的密码加密算法是固定不变的,换句话说,密码的加密算法是比较容易通过逆向工程被找到的。偶认为,针对于此处,服务器也应该先向客户端发送一个加密密钥,以后的通信可以用该密钥作为安全验证的依据。但暴雪没有这样作,最大的可能是为了提高服务器的效率,在登录服务器上,如果每个客户端一旦连接成功,登录服务器都得向客户端广播一个数据包的话,可能这个量还是比较大的,这可能延长了玩家的登录等待时间,所以他们没有在这块作。
2.Client在登录Login Server的地址,每次Login Server的登录地址都可能是不一样的。偶没有在客户端目录里找到这些地址,只在客户端目录里找到了四个大区的四个域名,我猜想,魔兽世界是用的DNS解析的简单方法来实现Login Server的简单动态均衡的。不知道这个猜想是否正确。3.“根据玩家最近在玩的哪个游戏,由客户端和服务器自动为玩家选择进入这个游戏服务器”,这一项设定充分体现了暴雪一贯的风格:为玩家着想,最大限度地提高游戏的舒适度。再次对暴雪的态度予以肯定!
4.一旦玩家进入了游戏世界,客户端与服务器的通信端口会一直保持不变。即:魔兽世界的游戏世界服务器群设计结构采用的是带网关的服务器集群。
5.偶觉得在整个的登录流程中,让我产生最大疑问的就是Login Server与Client的连接保持逻辑。当Client与Game Server连接了之后,Client并未与Login Server断开,是一直保持连接的。后来,经进一步的抓包分析,Client之所以要与Login Server保持这样的连接,是为了当Client重新选择服务器时,不至于重新连接Login Server。当Client点击了"选择服务器"按纽后,Login Server会每隔5秒向Client发一个当前所有的服务器列表数据包。
- [1] [2] [3] [4] 下一页
-
- 逆向思维 《魔兽世界》封包分析 相关文章:
- ·视频聊天变了“味” 向“裸聊” 色情宣战
- ·Javascript+CSS横向三级导航菜单
- ·C#设计的一个向导程序(Wizard)框架
- ·Cisco路由器安装向导
- ·最真实的数据 年度2.2版电源横向评测
- ·Apache URL重定向指南
- ·什么是面向对象的设计思想?
- ·逆向思维 《魔兽世界》封包分析
- ·格言警句:积极向上
- ·循环不间断向上滚动的文本特效代码
- 逆向思维 《魔兽世界》封包分析 相关软件
- ·冲向柏林(Rush For Berlin)
- ·英汉汉英双向学习词典 V1.0
- ·IP地址及归属地双向查询 V1.43
- ·向明汉语成语词典 2007 Build 1112
- ·北大“面向对象程序设计”上机考试题
- ·冲向柏林
- ·向明汉语成语词典 2007 Build 0390
- ·向日葵股票机械交易系统 V3.71
- ·为中国思想趋向求答案
- ·向明单词连连看 V2007 Build 1190
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
下一篇:玩玩数字图像处理之图像增强
精品推荐
热点TOP10
- ·UML业务建模实例分析
- ·GIF文件格式
- ·代码静态分析工具PC-LINT安装配置
- ·游戏外挂设计技术探讨
- ·开发WDM型的USB设备驱动程序
- ·设计模式探索系列之Bridge模式
- ·LZW压缩算法简介
- ·逆向思维 《魔兽世界》封包分析
- ·Solaris 10 安装及SVC管理及X及Vmware及其它可能遇到的一些问题
- ·1.2 什么是数据挖掘
- ·编写QQ外挂插件的原理和方法
- ·Spring让LOB数据操作变得简单易行
- ·利用API在Windows下创建进程和线程
- ·使用BHO定制你的IE浏览器
- ·在内存中修改数据的网游外挂
- ·正则表达式从入门到精通
- ·网络监听技术概览
- ·电子商务与中小企业竞争战略
- ·原始套接字透析之实现Ping
- ·程序语言效率比较
