第一个:
function MySend(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
var
  dwSize: cardinal;
begin
  //这儿进行发送的数据处理
  MessageBeep(1000);           //简单的响一声
  //调用直正的Send函数
  WriteProcessMemory(ProcessHandle, AddSend, @OldProc[0], 8, dwSize);
  Result := OldSend(S, Buf, len, flags);
  JmpCode.Address := @MySend;
  WriteProcessMemory(ProcessHandle, AddSend, @JmpCode, 8, dwSize);
end;第二个:
function MyRecv(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
var
  dwSize: cardinal;
begin
  //这儿进行接收的数据处理
  MessageBeep(1000);         //简单的响一声
  //调用直正的Recv函数
  WriteProcessMemory(ProcessHandle, AddRecv, @OldProc[1], 8, dwSize);
  Result := OldRecv(S, Buf, len, flags);
  JmpCode.Address := @MyRecv;
  WriteProcessMemory(ProcessHandle, AddRecv, @JmpCode, 8, dwSize);
end;请祥细一点给个方法好吗?

解决方案 »

  1.   

    不大理解什么意思
    是想用socket处理接收,发送?
    直接用send吧
    send():使用连接式的 Socket 传送资料。    格  式: int PASCAL FAR send( SOCKET s, 
                                     const char FAR *buf, 
                                     int len, 
                                     int flags );    参  数: s         Socket 的识别码 
           buf    存放要传送的资料的暂存区 
           len     buf 的长度 
           flags    此函式被呼叫的方式 
      

  2.   

    呵呵 楼主想通过HOOK API扑捉网络封包哦