在网上找了一串用钩子函数替换send函数的代码。
请问,用delphi如何读出 Buf 的内容,并转换成string呀,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;  

解决方案 »

  1.   

    var
    pBuf: PByteArray;pBuf := @Buf;pBuf[0]
    pBuf[1]
    这么访问。
    你要转成String的话用 IntToStr(pBuf[0])
      

  2.   

    谢谢,我已经找到答案了。
    buf 是一个 指向 char 的指针
    要定义一个 
    var ptr      :pchar;
    begin
    ptr:=@buf;
    s1:=StrPas(ptr);
    这样,s1就是 buf 缓冲区的内容了
      

  3.   

    setlength(str,length(buf));
    move(buff[0],str,length(buf));
      

  4.   

    应该还有协议。我是在做RTX的拦截试验