马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册帐号
×
玩过网络游戏封包的都应该知道常用的封包工具有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
我们先用封包助手拦截下封包,如图: 封包助手拦截的封包
今天为了给大家直观的演示怎么用代码编写出这个功能,我自己写了一个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发送封包
效果图: 效果图 提醒:必须注入游戏后,才可以利用send api发送封包哦,否则不会成功的!
|