网站大量收购闲置独家精品文档,联系QQ:2885784924

封包加密解密.docx

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
封包加密解密

封包加密解密-01网络游戏客户端与服务器之间需要数据交换处理,数据包通过TCP网络协议进行传送,这里我们称数据包为封包.之前有教程介绍了如何使用模块中的功能进行封包拦截,修改,替换等功能.本章将完全讲解如何对封包的加密,解密技术.为什么需要解密封包呢?除非那些封包是明文的(即没有加密处理过),否则就得解密,只有解密出来了数据,才能更清楚的了解游戏是如何交换数据处理,分析出封包数据才能够做出脱机外挂,完全脱离游戏客户端,模拟一个客户端来与游戏服务器连接,做你一切想做的事都没问题.所以封包加密解密技术是脱机外挂的第一前提条件.即使不做脱机外挂,封包技术仍然比CALL技术更有用处.学过前章后大家应该也知道分析CALL,找CALL,调CALL都不是件容易的事.若能完全解密封包就可以减少或不需要CALL,模拟,内存操作了.有加密就得有解密,有解密当然要有加密.这是相对立的.对封包数据进行加密与解密的函数过程,称为算法.那封包加密解密技术容易吗?比较讽刺的就是,90%以上的网络游戏的封包都是很容易搞定了.为什么呢?如果算法复杂了的话,会多占CPU性能,而游戏服务器要处理的工作很多,不能把性能全用在加密解密上.举个简单的例子,游戏服务器若同时连接在线的玩家有十万人的话,这些玩家在聊天,打怪,走路等都会产生封包,若算法过于复杂,服务器就很难同时处理得了这么多玩家的封包,何况还得处理数据库中的数据呢.出于服务器的性能考虑,所以若想同时能在线更多玩家,就不能进行复杂的算法来加密封包.不然就得限制减少能同时在线的玩家,不然游戏服务器会一卡一卡的,导致所有玩家都玩起来.而还有很多的游戏在设计时,为了减少服务器的负担,不但算法简单,还放松了很多的一些数据验证处理.最终漏洞百出,以致于产生了全屏吸怪,穿墙,复制,无敌等等各种变态外挂.基本上游戏的加密解密算法,都是采用简单的位运算.位就是比特位,简单的说,只是二进制数据运算处理罢了.所以有必要了解一些常见的位运算汇编指令.在汇编那章的指令那节,有过一些指令的介绍,这里再介绍一下几个重中之重的指令.一.加减指令加法指令 ADD (ADD Binary Numbers Instruction)指令的格式:ADD 寄存器/内存地址, 寄存器/内存地址/立即数 受影响的标志位:AF、CF、OF、PF、SF和ZF指令的功能是把源操作数的值加到目的操作数中。加1指令 INC (Increment by 1 Instruction)指令的格式:INC 寄存器/内存地址 受影响的标志位:AF、OF、PF、SF和ZF,不影响CF指令的功能是把操作数的值加1。减法指令 SUB (Subtract Binary Values Instruction)指令的格式:SUB 寄存器/内存地址, 寄存器/内存地址/立即数 受影响的标志位:AF、CF、OF、PF、SF和ZF指令的功能是从目的操作数中减去源操作数。减1指令 DEC (Decrement by 1 Instruction)指令的格式:DEC 寄存器/内存地址 受影响的标志位:AF、OF、PF、SF和ZF,不影响CF指令的功能是把操作数的值减去1。二、乘法指令计算机的乘法指令分为无符号乘法指令和有符号乘法指令,它们的唯一区别就在于:数据的最高位是作为“数值”参与运算,还是作为“符号位”参与运算。乘法指令的被乘数都是隐含操作数,乘数在指令中显式地写出来。 CPU 会根据乘数是8位、16位,还是32位操作数,来自动选用被乘数: AL 、 AX 或 EAX 。指令的功能是把显式操作数和隐含操作数相乘,并把乘积存入相应的寄存器中。无符号数乘法指令 MUL (Unsigned Multiply Instruction)指令的格式:MUL 寄存器/内存地址 受影响的标志位:CF和OF(AF、PF、SF和ZF无定义)指令的功能是把显式操作数和隐含操作数(都作为无符号数)相乘,所得的乘积按下表的对应关系存放。下表乘法指令中乘数、被乘数和乘积的对应关系乘数位数隐含的被乘数乘积的存放位置举例8位ALAXMUL BL16位AXDX-AXMUL BX32位EAXEDX-EAXMUL ECX(图5.2)有符号数乘法指令 IMUL (Signed Integer Multiply Instruction)指令的格式:IMUL寄存器/内存地址—该指令的功能是把显式操作数和隐含操作数相乘,所得的乘积按表5.2的对应关系存放。IMUL寄存器, 立即数—其寄存器必须是16位/32位通用寄存器,其计算方式为:寄存器 ← 寄存器 × 立即数IMUL寄存器, 寄存器, 立即数—其寄存器只能是16位通用寄存器,其计算方式为:寄存器 1 ← 寄存器 2 ×立即数 或 寄存器 1 ← 内存地址×立即数IMUL寄存器, 寄存

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档