用户登录  | 
首 页技术文章软件发布广告价格
当前位置:传奇游戏服务端下载站传奇站长论坛资源网站程序技术文章文章资讯游戏架设教程传奇3技术

传奇3封包结构解析编码的详细过程

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2014-10-03 18:15:33

一 封包加密方法
传奇3的封包加密方法和2是一样的,都是用的6BIT编码。每个封包以#开头,紧接着是一个数字(从1-9递增,到了9再返回1),作为封包验证,目的是想杜绝恶意封包。最后是以!结尾。
在那个数字和!之间就是封包内容。在客户端截获的SEND封包中,那段内容是经过了前面所说的6BIT编码的。这个编码过程是这样的:未加密代码以每3个字节为一段,一共就是24位。然后每6BIT(位)一段分开,在前面加2bit(00),然后每个字节再加3C,这样3个字节的封包数据就扩展成了4个字节的封包数据,也就达到了加密的目的。知道了加密的方法,其实解密的方法也就很简单了,大家自己写程序吧。我写了一个,如果大家需要回帖多我就发上来。

二 封包结构
在讨论封包结构的时候我们以未加密的封包内容为目标,并且除开#,数字,和最后的那个!
传奇(传奇3和2)的封包格式是这样的:
DWORD DW; //(4字节)
WORD W1; //(2字节)
WORD W2; //(2字节)
WORD W3; //(2字节)
WORD W4; //(2字节)
--------------------------------
//以上是必须有的,属于命令编码
CHAR *charbuffer;//长度不定
//这个不一定有
--------------------------------
前面那12个字节是必须有的,表示命令的编码;后面的那个字符串不一定每个封包都有,要看具体的命令。比如如果前面的命令是SAY,那么后面的字符串内容就是你说的话。
前面12字节的内容视具体指令的不同而不同,但是W1这个字节一般都是命令编码。比如建东西的指令在传3中预定义是1000,换算成16进制就是3E8,那么在他的封包的W1处就是0X(表示16进制)3E8.
而其他各个成员变量所代表的东西是时常变化的,没有固定的格式。在这里智能给大家几个比较常用的范例。DW处或者W2,W3处很多时候用作代表动作执行时的X坐标和Y坐标;W3处很多时候用作代表动作进行的方向。根据我个人的经验,如果该动作和方向有关,那么DW处应该就是代表X和Y坐标,而W3处就时代表方向;如果动作和方向无关,那么DW处不确定,W2,W3处代表坐标。
在中,方向的代码如下规定:
7 0 1
6 +2
5 4 3
其中+代表任务所在位置,他周围的8个方向代码就是像上面那样规定的。

三 封包解析方法
既然有那么多的动作,而我们又不知道他们的命令的具体格式,那么我们就只有脚踏实地的分析了。
首先,我们要自己写一个封包解析的工具,作用是用来把我们在客户端截获的SEND封包内容解析成未加密形式。
接着我们就要在中不断重复我们要分析的动作,并同时用WPE等工具截获SEND封包。
然后退出来处理SEND封包,先把数据还原成未加密形式,再开始分析。
比如,我在中不断重复说话这个动作,在不加任何参数的时候,截获的封包为:>>>>>ITG>>>>>>>>...........(后面说话的内容省略)
经过分析,数据还原后为(这里不用字符表示了,用16进制码表示)
00 00 00 00 (2字节“说话”动作代码)00 00 00 00 00 00.......(省略号表示还原出来的说话内容)
所以我们可以分析出来,说话这个动作的动作详细代码为:
DW=00 00 00 00;
W1=2字节“说话”动作代码;
W2=W3=W4=00 00;
*Charbuffer=bufferof(说话内容);

商业完整版游戏发布站程序免费下载:www.98youx.com

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
传奇资源网提供最新传奇开区一条龙版本下载,本站声明:只更新最新最好的传奇服务端分享给大家。