Показать сообщение отдельно
  #1  
Старый 01.06.2017, 15:33
TidusX TidusX вне форума
Прохожий
 
Регистрация: 20.10.2013
Сообщения: 19
Версия Delphi: XE10.2 Tokyo
Репутация: 10
По умолчанию Перехват WinSock Send и отмена отправки пакета

Добрый день, внедрил dll в нужный процесс для анализа трафика, установил хук на функцию Send чтобы контролировать передающиеся пакеты,
Код:
var
 TwsSend: function(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;

HookProc('WS2_32.dll', 'send', @NewSend, @TwsSend);

function NewSend(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
begin
   if blockpacket
     then result:=-1
   else
     Result := TwsSend(s, Buf, len, flags);
end;
Вот если я задам blockpacket:=true и процесс выполнит передачу пакетов то они блокируются и не передаются на сервер как нужно, но после этого если установлю blockpacket:=false то все эти блокированные пакеты разом передаются на сервер, получается блокированные пакеты накапливались и потом отправились одним пакетом, каким образом можно очистить эту очередь или правильно отменять их, чтобы запретить так запретить отправку пакетов когда blockpacket=true.
Ответить с цитированием