Главная страница
    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.003 c
15-1309379404
Юрий
2011-06-30 00:30
2011.12.11
С днем рождения ! 30 июня 2011 четверг


15-1314004716
pointerman
2011-08-22 13:18
2011.12.11
Графический интерфейс программы


4-1251202011
ivanoff
2009-08-25 16:06
2011.12.11
прочесть что написано в Label другого приложния


15-1313785804
Юрий
2011-08-20 00:30
2011.12.11
С днем рождения ! 20 августа 2011 суббота


2-1314256395
Gevs
2011-08-25 11:13
2011.12.11
DBGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский