Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2011.12.11;
Скачать: [xml.tar.bz2];

Вниз

По два раза приходят перехваченные пакеты через WM_COPYDATA.   Найти похожие ветки 

 
AKomander   (2010-06-22 21:07) [0]

Перехватываю пакеты у приложения и отправляю его клиентской программе через Dll инжектинг.

Две проблемы:
1) Данные приходят по два раза (причем когда как, иногда один)
2) Длинна принимаемых данных больше, чем само сообщение. Т.е. в cbData при приеме сообщения WM_COPYDATA, больше, чем реальные данные и я принимаю дофига левых данных.
Помогите.

Функция передачи данных:

procedure SendData(Data:Pointer; len:integer);
var
 d:TCopyDataStruct;
begin
 d.lpData := data;
 d.cbData := len;
 d.dwData := 0;
 SendMessage(FindWindow(nil,"Sniffer"), WM_COPYDATA, 0, LongInt(@d));
End;


Функция заменяющая Recv:

function NewRecv (s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
begin
 Result := OldRecv (s, Buf, len, flags);
 SendData(addr(string(buf)), len);
end;


Принимаю сообщения у себя в программе:

private
   procedure SniffMessage(var Msg: TWMCopyData); message WM_COPYDATA;
...
procedure TMainForm.SniffMessage(var Msg: TWMCopyData);
var
 ReceivedText: string;
begin
 SetString(ReceivedText, PChar(Msg.CopyDataStruct.lpData),Msg.CopyDataStruct.cbData);

 MessMemo.Lines.Add(ReceivedText);
 MessMemo.Lines.Add("-------------");
end;


 
KilkennyCat ©   (2010-06-22 21:12) [1]

http://msdn.microsoft.com/en-us/library/ms649009%28v=VS.85%29.aspx


 
KilkennyCat ©   (2010-06-22 21:13) [2]


> d.dwData := 0;
>  SendMessage(FindWindow(nil,"Sniffer"), WM_COPYDATA, 0,
> LongInt(@d));
> End;

и как всегда никакой обработки результата...


 
AKomander   (2010-06-22 21:30) [3]

И что я должен был увидеть в msdn?
>и как всегда никакой обработки результата...
А зачем? Пришло оно или нет, какая мне разница. Я не теряю сообщения, а получаю их в избытке.


 
_Юрий ©   (2010-06-22 22:54) [4]

Вероятно, там отсутствует терминирующий ноль.

Зачем кастить к строке при SendData, тоже не очень ясно


 
Leonid Troyanovsky ©   (2010-06-23 08:08) [5]


> AKomander   (22.06.10 21:30) [3]

> И что я должен был увидеть в msdn?

http://msdn.microsoft.com/en-us/library/ms740121(VS.85).aspx

со всеми остановками.

> _Юрий ©   (22.06.10 22:54) [4]

> Вероятно, там отсутствует терминирующий ноль.

Скорее null внутри буфера:

> 2) Длинна принимаемых данных больше, чем само сообщение.

бо, кастится к string.

--
Regards, LVT.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2011.12.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.004 c
15-1314011606
MonoLife
2011-08-22 15:13
2011.12.11
Не работает aligment, D7


15-1313511154
Псарь
2011-08-16 20:12
2011.12.11
Delphi XE2


2-1314685531
Patrick1968
2011-08-30 10:25
2011.12.11
Проверка состояния сервиса Windows


15-1314016337
dreamse
2011-08-22 16:32
2011.12.11
Вопрос форма с тенью или обрез формы по png картинке


1-1276837690
Kukolev
2010-06-18 09:08
2011.12.11
Кнопки на панели задач





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский