设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 编程开发 >> 其他开发语言 >> 联众升级协议分析 续篇(一)
精品推荐
其他开发语言点击TOP10
·数字小键盘指法练习
·用C语言编通讯录程序(初学者级别的)
·Modem 常用AT指令集
·单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(源代码)
·C++经典电子书下载
·Thinking in C++ 简体中文第二版
·debug和release的区别
·error LNK2001: unresolved external symbol __ftol2 错误解决
·C库函数手册
·一个简单的C语言编译器
编程开发点击TOP10
·数字小键盘指法练习
·ASP.NET 程序中常用的三十三种代码
·用C语言编通讯录程序(初学者级别的)
·我写的Java学生成绩管理系统源代码
·CHK文件恢复工具
·Modem 常用AT指令集
·java笔试题
·异常java.sql.SQLException: Io exception:The Network Adapter could not establish connection
·单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(源代码)
·C++经典电子书下载
精选专题

联众升级协议分析 续篇(一)

作者: 来源:网络文章 时间:2005-12-17 20:58:23

联众升级协议分析 续篇(一)(1)  

联众升级协议分析 续篇(一)

云网(jimzj@21cn.com

 XML:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

       因为上一次正在做一个项目,所以时间不多,并没有很多的时间去写完关于联众升级协议分析的全过程还有所有协议的全部内容就匆匆在CSDN上发表了《外挂制用 联众升级协议分析》(也可以在CSDN开发高手9月份中的《网络游戏的协议 分析》找到相关内容),在网上发表后,收到很多读者的来信,希望我把联众协议分析的整个过程详细完成,并把关键的协议分析的说明一下;正好现在手头的工作不多(不要告诉我的老板呵,要不他狠不得又把所有任务都放到我这了L)可以去完成这协议的分析说明。

      

       上一篇文章已说明了数据是如何接收的,在这里就不再赘述,如果不了解的朋友可以再找一下这篇文章来读一下。现在我就从协议分析的内容,还有如何从程序中得到数据说明每一个命令的意思,希望大家在读这个文章后,也可以自己去做一个外挂了。

 

       在分析命令之前,还是有必要说明一下如何从接收到的网络数据中提取一个我们要的包的说明(下面内容就是从网络数据中找到一个完整的协议包)

int __fastcall TCltSocket::AnalyLinkRecvPack(int nLen, PCHAR pDataBuff, int & nLastLen, int nSrcPort)

{

    int nCPosition = -1 ;             //包头的开始位置

    int nCmdFlag   = -1 ;          //命令字标志

    lpPackHead pPackHead ;       //包头结构

    int nAppPackHeadSize = sizeof( PackHead ) ;      //包头长度

 

    if( nLastLen < nAppPackHeadSize ) return 1 ;     //网络包剩下长度小于一包头时不是一个完整的包

 

    //找到包头开始位

    for( int i = 0 ; i < nLen - 2; i ++ )

    {

        nCmdFlag = * ( int * )(pDataBuff + i ) ;             //一个个字节搜索网络数据包中的命令字标志

        if( m_GameCmdFlagMap.find( nCmdFlag ) != m_GameCmdFlagMap.end())

        {

            nCPosition = i ;      //找以所要命令字的开始位置

            break ;

        }

}

……………………….

if( pPackHead->nDataLen > ( nLastLen - nAppPackHeadSize ))  //分析是完成包

    {

        memcpy( pDataBuff, ( pDataBuff + nCPosition ), nLastLen ) ;

        return 1 ;

    }

    else         //这里的pPackHead->nDataLen就是上次我说的包长度了

    {

        if ( nLastLen < ( nLastLen - pPackHead->nDataLen - nAppPackHeadSize ))

        {

            nLastLen = 0 ;

        }

        else

        {

            nLastLen = nLastLen - pPackHead->nDataLen - nAppPackHeadSize ;

        }

        try

        {

            DispatchPackets( (PCHAR)pPackHead, nSrcPort );    //在这里就得到了一个完整的协议包了

        }

        catch(Exception &e)

        {

        }

        memcpy( pDataBuff, pDataBuff + nCPosition + pPackHead->nDataLen + nAppPackHeadSize , nLastLen ) ;        //当前剩下的网络数据,下一次接收到其它数据后一起分析

 

        return 0 ;

    }

}        

共2页 9 7 [1] [28 :>

联众升级协议分析 续篇(一) 相关文章:
联众升级协议分析 续篇(一) 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com