在处理hook的返回的数据时出错,这个buf应该怎么取才能稳定。?
下面是hook的发送代码
function MySend(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
var
dwSize: cardinal;
tmpBuf: array of Byte;
i:integer;
outstr,CookieStr:string;
ds: TcopydataStruct ;
begin
try
Setlength(tmpBuf,len);
for i := 0 to len - 1 do
tmpBuf[i] := TByteArray(Buf)[i];
for i := Low(tmpBuf) to High(tmpBuf) do
outstr := outstr + chr(tmpBuf[i]));//这里经常出错,但是不是每次都错。都是报内存问题
。。。。
finally
end;
MessageBeep(2000); //简单的响一声
//调用直正的Send函数
WriteProcessMemory(ProcessHandle, AddSend, @OldProc[0], 8, dwSize);
Result := OldSend(S, Buf, len, flags);
JmpCode.Address := @MySend;
WriteProcessMemory(ProcessHandle, AddSend, @JmpCode, 8, dwSize);
end;
那位大侠有对这个hook的返回buf操作的例子,不胜感谢