全面剖析网络游戏发送封包原理及编程实现办法!
玩过网络游戏封包的都应该知道常用的封包工具有WPE、封包助手。这个工具的原理就是向网络游戏注入DLL,然后发送封包。网络游戏和它的服务器建立通讯,就是靠这唯一的一个socketid进行通讯。获取socketid的方法:(不完整欢迎补充)[*]hook send api拦截一个封包,这样我们就知道了socketid。
[*]查找内存地址,生成的socketid应该都是储存在游戏的内存中的,我们获取到基址和偏移即可直接读取这个数值。
其实发送封包原理很简单,就是利用send api向游戏发送封包。我们先看下send api的申明:Private Declare Function Send Lib "ws2_32.dll" Alias "send" (ByVal hSocket As Long, Buf As Any, ByVal BufLen As Long, ByVal Flags As Long) As Long
参数共有4个:
[*]hSocket:就是获取到的游戏的socketid
[*]Buf:封包内容
[*]BufLen :封包大小
[*]Flags:标识符,通常为0
我们先用封包助手拦截下封包,如图:http://p9.pstatp.com/large/1c67000152ebcdc9b332封包助手拦截的封包
今天为了给大家直观的演示怎么用代码编写出这个功能,我自己写了一个DLL,然后注入了游戏。注入游戏后,弹出自己的窗口界面,利用send api发送封包。VB6.0编写的DLL发送游戏封包代码:Dim i As Integer, Data() As Byte ‘’‘定义变量
s = Split(Text2, "-") ''处理封包成字节数组
ReDim Data(UBound(s) + 1) ’‘重新定义数组大小
For i = 0 To UBound(Data) - 1
Data(i) = CByte("&H" & s(i))
Next
Send Val(Text3), Data(0), UBound(Data), 0 ’‘利用send发送封包
效果图:http://p3.pstatp.com/large/1c6500054f49dfeaa2d5效果图提醒:必须注入游戏后,才可以利用send api发送封包哦,否则不会成功的!
请问哪有源码,新手想研究一下。谢谢!
页:
[1]