9.什么是send或者WSASend?


各位亲爱的朋友:
我们又在VIP辅助基础课程相会了,那么,这节课,我将与你分享什么是send或者WSASend?


TCP协议使用的send、recv、WSASend和WSARecv,
UDP协议使用的sendto、recvfrom、WSASendTo 和WSARecvFrom。

TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。
UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!

什么是send?
中文翻译就是发送,
具体作用:用于向一个已经连接的socket发送数据,如果无错误,返回值为所发送数据的总数,否则返回SOCKET_ERROR。

Socket是什么?
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。

Send是API函数
什么是API函数?
API的英文全称(Application Programming Interface)应用程序编程接口。微软提供 不同API函数功能不一样。
MSDN send
int send(
  _In_       SOCKET s,  //一个用于标识已连接套接口的描述字。
  _In_ const char   *buf, //包含待发送数据的缓冲区。封包数据内存地址
  _In_       int    len,  //缓冲区中数据的长度。封包数据大小
  _In_       int    flags //调用执行方式。
);

有发送send那就有接收recv (中文“接受”的缩写:receive)

int recv(
  _In_  SOCKET s,
  _Out_ char   *buf, //封包数据地址 服务器发给客户端的数据。
  _In_  int    len,
  _In_  int    flags
);


什么是WSASend?

作用:在一个已连接的套接口上发送数据。

int WSASend(
  _In_  SOCKET                             s,  //标识一个已连接套接口的描述字
  _In_  LPWSABUF                           lpBuffers,//一个指向WSABUF结构数组的指针。每个WSABUF结构包含缓冲区的指针和缓冲区的大小。  //00401000  
  _In_  DWORD                              dwBufferCount,//lpBuffers数组中WSABUF结构的数目。
  _Out_ LPDWORD                            lpNumberOfBytesSent,//如果发送操作立即完成,则为一个指向所发送数据字节数的指针。
  _In_  DWORD                              dwFlags,  //标志位。
  _In_  LPWSAOVERLAPPED                    lpOverlapped,//指向WSAOVERLAPPED结构的指针(对于非重叠套接口则忽略)。
  _In_  LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine //一个指向发送操作完成后调用的完成例程的指针。(对于非重叠套接口则忽略)。
);

typedef struct __WSABUF {
  u_long   len;   //封包数据大小
  char FAR *buf;  //封包数据内存地址
} WSABUF, *LPWSABUF;

00401000   10封包数据大小
00401004   00501000封包数据内存地址


有发送WSASend那就有接收WSARecv
int WSARecv(
  _In_    SOCKET                             s,
  _Inout_ LPWSABUF                           lpBuffers,
  _In_    DWORD                              dwBufferCount,
  _Out_   LPDWORD                            lpNumberOfBytesRecvd,
  _Inout_ LPDWORD                            lpFlags,
  _In_    LPWSAOVERLAPPED                    lpOverlapped,
  _In_    LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);


功能CALL实现的整个流程:
游戏里操作功能后---游戏向服务器发送封包数据---服务器接受到数据---根据数据解析后向游戏客户端发送数据---游戏客户端接受数据后执行相关功能。



怎么找游戏里功能CALL?

根据上面流程:

未知功能CALL1()
{
未知功能CALL2()
{
     未知功能CALL3()
 {
           打坐功能CALL4()   *
 	   {
            未知功能CALL5() 
             {
 Send功能CALL6()---向服务器发送封包数据
                     }
       }

 }
}

}


所以可以下bp send或者bp WSASend 或bp sendto或者bp WSASendto来实现找功能CALL。
win7以上系统有时候要下 bp ws2_32.send 才能下对地方。



没有向游戏服务器发包的功能怎么办?


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值