WPE|52wpe|我爱WPE

 找回密码
 注册会员
搜索
  • 2858查看
  • 1回复

主题

好友

46

积分

新手上路

发表于 2016-9-5 13:16:08 |显示全部楼层
教程是某网站的收费教程,学习下或许有点用处哦。
封包加密解密-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位
AL
AX
MUL BL
16位
AX
DX-AX
MUL BX
32位
EAX
EDX-EAX
MUL ECX
  有符号数乘法指令 IMUL (Signed Integer Multiply Instruction)
指令的格式:
IMUL
寄存器/内存地址
IMUL
寄存器, 立即数
IMUL
寄存器, 寄存器, 立即数
IMUL
寄存器, 寄存器/内存地址
受影响的标志位:CF和OF(AF、PF、SF和ZF无定义)
1)、指令格式1——该指令的功能是把显式操作数和隐含操作数相乘,所得的乘积按表5.2的对应关系存放。
2)、指令格式2——其寄存器必须是16位/32位通用寄存器,其计算方式为:
寄存器 ← 寄存器 × 立即数
3)、指令格式3——其寄存器只能是16位通用寄存器,其计算方式为:
寄存器 1 ← 寄存器 2 ×立即数 或 寄存器 1 ← 内存地址×立即数
4)、指令格式4——其寄存器必须是16位/32位通用寄存器,其计算方式为:
寄存器 1 ← 寄存器 1 ×寄存器 2 或寄存器 1 ← 寄存器 1 ×内存地址
在指令格式2~4中,各操作数的位数要一致。如果乘积超过目标寄存器所能存储的范围,则系统将置溢出标志OF为1。


主题

好友

2302

积分

荣誉贵宾

发表于 2016-9-12 20:11:56 |显示全部楼层
发就发吧  还搞些黑字  看着都费劲
回复

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册会员

手机版|Archiver|WPE|52wpe|我爱WPE ( 闽ICP备15009081号 )

GMT+8, 2024-5-6 19:48 , Processed in 0.069088 second(s), 16 queries .

返回顶部