在网上找了一串用钩子函数替换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;
请问,用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;
pBuf: PByteArray;pBuf := @Buf;pBuf[0]
pBuf[1]
这么访问。
你要转成String的话用 IntToStr(pBuf[0])
buf 是一个 指向 char 的指针
要定义一个
var ptr :pchar;
begin
ptr:=@buf;
s1:=StrPas(ptr);
这样,s1就是 buf 缓冲区的内容了
move(buff[0],str,length(buf));