Реализую через перехват API (пока только WSARecv). Нужно просто заменить входящий траффик на нужный мне.
Код:
function NewRecv(s: TSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD; var lpNumberOfBytesRecvd: DWORD; dwFlags: DWORD; lpOverlapped: LPWSAOVERLAPPED;lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): Integer; stdcall;
var
W: DWORD;
Buffer: string;
begin
...
Result := ... {Тут вызываю оригинальную функцию}
asm Pushad end;
Buffer:=Buffer+copy(lpBuffers.buf, 0, Length(lpBuffers.buf));
if MyPage(Buffer) then {Проверка, нужная ли страница для подмены}
begin
Buffer:='<b>Test Text</b>';
lpBuffers.buf:=PChar(Buffer);
end;
...
asm Popad end;
end;
Пробовал и через Move, но код не заменяется. Буду очень благодарен за решение проблемы.