procedure HookSend;
var
  hModule: THandle;
  dwSize: cardinal;
begin
  hProcess := GetCurrentProcess;//返当前句柄虚拟句柄
  hModule := LoadLibrary('ws2_32.dll');
  //AddSend := MyGetProcAddress(hModule, 'send');
  AddSend := GetProcAddress(hModule, 'send');  JmpCode.JmpCode := $B8;
  JmpCode.MovEAX[0] := $FF;
  JmpCode.MovEAX[1] := $E0;
  JmpCode.MovEAX[2] := 0;  ReadProcessMemory(hProcess, AddSend, @OldSendCode, 8, dwSize);
  JmpCode.Address := @NewSend;
  WriteProcessMemory(hProcess, AddSend, @JmpCode, 8, dwSize);
  OldSend := AddSend;
end;
function NewSend(s: TSocket; var Buf; len,
                 flags: Integer): Integer; stdcall;
var
  dwSize: cardinal;
  Data: TCMTDATA;
  s_i: WinSock.TSockAddrIn;
  tempSize: Integer;
  itm: TListItem;
  tmp:string;
begin
  //这儿进行发送的数据处理
  MessageBeep(1000); //简单的响一声
  //调用直正的Send函数
  WriteProcessMemory(hProcess, AddSend, @OldSendCode, 8, dwSize);
  Result := OldSend(S, Buf, len, flags);
  JmpCode.Address := @NewSend;
  WriteProcessMemory(hProcess, AddSend, @JmpCode, 8, dwSize);
  setlength(tmp,len);
  move(buf,tmp[1],len);
  //form1.Memo1.Lines.Add(tmp);
end;  //form1.Memo1.Lines.Add(tmp); 这行代码 运行一段时间的话就会报内存错误 ,有什么方法,我把获取的数据,显示在窗口上,用了很多组件,只要显示就会报内存错误 ,要是我保存在配置文件,就不会.