Cita:
Empezado por egostar
Esto me huele a capturar lo que se escribe en el messenger
|
Los mensajes comienzan todos por "MSG", y ya no digo mas ...
Y ya que estamos, si cambiamos las siguientes funciones, tendremos una visión un poco mas clara de lo que esta pasando, eliminando los caracteres no imprimibles o extraños:
Código Delphi
[-]
function BufToString(Buf: PChar; Len: Integer): String;
var
i: Integer;
begin
Result:= EmptyStr;
for i:= 1 to Len do
begin
if (Buf^ in [#32..#126]) then
Result:= Result + Buf^
else
Result:= Result + '.';
inc(Buf);
end;
end;
function newSend(s: TSocket; Buf: PChar; len, flags: Integer): Integer; stdcall;
begin
OutputDebugString(PChar('Send: ' + BufToString(Buf,len)));
if @OldSend <> nil then
Result:= OldSend(s,Buf,len,flags)
else
Result:= -1;
end;
function newWSASend(s: TSocket; lpBuffers: PWSABUF; dwBufferCount: DWORD;
lpNumberOfBytesSent: Pointer; dwFlags: DWORD; lpOverlapped: Pointer;
lpCompletionRoutine: Pointer): Integer; stdcall;
var
i: DWORD;
P: PWSABUF;
begin
i:= dwBufferCount;
P:= lpBuffers;
while i > 0 do
begin
OutputDebugString(PChar('Recv: ' + BufToString(P.Buf,P.len)));
dec(i);
inc(P);
end;
if @OldWSASend <> nil then
Result:= OldWSASend(s,lpBuffers,dwBufferCount,lpNumberOfBytesSent,dwFlags,
lpOverlapped,lpCompletionRoutine)
else
Result:= -1;
end;
function newWSARecv(s: TSocket; lpBuffers: PWSABUF; dwBufferCount: DWORD;
lpNumberOfBytesSent: Pointer; dwFlags: DWORD; lpOverlapped: Pointer;
lpCompletionRoutine: Pointer): Integer; stdcall;
var
i: DWORD;
P: PWSABUF;
begin
if @OldWSARecv <> nil then
Result:= OldWSARecv(s,lpBuffers,dwBufferCount,lpNumberOfBytesSent,dwFlags,
lpOverlapped,lpCompletionRoutine)
else
Result:= -1;
i:= dwBufferCount;
P:= lpBuffers;
while i > 0 do
begin
OutputDebugString(PChar('Recv: ' + BufToString(P.Buf,P.len)));
dec(i);
inc(P);
end;
end;