Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание драйверов в Delphi 
V
    Опции темы
ASGDeveloper
  Дата 24.7.2006, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Кто знаком с этой статьей:
http://www.rsdn.ru/article/delphi/kmdelphi.xml
и пытался сделать subj? 
PM MAIL   Вверх
bazzzman
Дата 24.7.2006, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 24.7.2006

Репутация: нет
Всего: 2



Наверное, всю интересующую тебя информацию найдешь в комментариях к статье:
http://www.rsdn.ru/forum/?mid=876459 
PM MAIL WWW   Вверх
ASGDeveloper
Дата 24.7.2006, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Цитата(bazzzman @  24.7.2006,  08:05 Найти цитируемый пост)
Наверное, всю интересующую тебя информацию найдешь в комментариях к статье:

Видел. И даже пытался списать с автором статью.
Плюс пытаюсь разобраться с DDDK. 
PM MAIL   Вверх
Alexeis
Дата 24.7.2006, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 16
Всего: 459



Цитата(ASGDeveloper @  24.7.2006,  09:40 Найти цитируемый пост)
Видел. И даже пытался списать с автором статью.Плюс пытаюсь разобраться с DDDK. 

А в чем собственно вопрос? 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
ASGDeveloper
Дата 24.7.2006, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Цитата(alexeis1 @  24.7.2006,  09:57 Найти цитируемый пост)
А в чем собственно вопрос?

Не знаю как ставить хуки на функции.
В какую сторону рыть - тоже непонятно. 
PM MAIL   Вверх
drkot
Дата 24.7.2006, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



бррр. может я чего не понимаю но какие хуки ты (ASGDeveloper) собираешся ставить?
и собственно драйвер чего пишеш.
имхо надо сначала с задачами определится, а то непонятно о чем разговор. 


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Alexeis
Дата 24.7.2006, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 16
Всего: 459



Цитата(ASGDeveloper @  24.7.2006,  10:49 Найти цитируемый пост)
Не знаю как ставить хуки на функции.

Для установки хуков, драйвер не нужен, достаточно dll.
Драйвер обычно пишут для прямого обращения к портам различных устройств. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
BUGOR
Дата 24.7.2006, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 2
Всего: 16



Цитата

Для установки хуков, драйвер не нужен, достаточно dll.


А для установки хука на NativeAPI ядра? Куда ж тут без драйвера?
 


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
ASGDeveloper
Дата 24.7.2006, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Цитата(alexeis1 @  24.7.2006,  12:19 Найти цитируемый пост)
Для установки хуков, драйвер не нужен, достаточно dll.

Да, dll injectiing пробовал.
Теперь конкретно задача: перехват, проверка и модификация (если надо) POP3-трафика 
Метод внедрения не катит. Ставил хуки и на WSARecv и на recv, В обоих вариантах на последних версиях бата выпадает ошибка. Посмотрел список загруженных батом модулей - ни wsock32.dll,  ни ws2_32.dll нету  smile  
PM MAIL   Вверх
BUGOR
Дата 24.7.2006, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 2
Всего: 16



ASGDeveloper, бат загружает эти модули после того, как уже непосредственно начинает соединяться с сервером, до этого их там нет. Что касается апи, то бат передаёт с помощью send, а принимает с помощью WSARecv. Ошибка скорее всего где-то в твоей длл.  

Это сообщение отредактировал(а) BUGOR - 24.7.2006, 13:11


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
dumb
Дата 24.7.2006, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 7
Всего: 158



Цитата(ASGDeveloper @  24.7.2006,  13:01 Найти цитируемый пост)
Посмотрел список загруженных батом модулей - ни wsock32.dll,  ни ws2_32.dll нету

плохо смотрел. wsock32.dll, ws2_32.dll, ws2help.dll, mswsock.dll - все там.

Цитата(ASGDeveloper @  24.7.2006,  13:01 Найти цитируемый пост)
Метод внедрения не катит. Ставил хуки и на WSARecv и на recv, В обоих вариантах на последних версиях бата выпадает ошибка.

плохо ставил... smile 
PM MAIL   Вверх
ASGDeveloper
Дата 24.7.2006, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Цитата(dumb @  24.7.2006,  13:20 Найти цитируемый пост)
плохо смотрел. wsock32.dll, ws2_32.dll, ws2help.dll, mswsock.dll - все там.

Версия бата? На САМОЙ последней нету.

Цитата(dumb @  24.7.2006,  13:20 Найти цитируемый пост)
плохо ставил...   

Пробовал и madCodeHook и AdvAPIHook.

Цитата(BUGOR @  24.7.2006,  13:10 Найти цитируемый пост)
Ошибка скорее всего где-то в твоей длл.  

Как же тогда хук ставить? Отлавливать LoadLibrary и только затем грузить? smile  
PM MAIL   Вверх
BUGOR
Дата 24.7.2006, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 12.3.2006

Репутация: 2
Всего: 16



Цитата

Версия бата? На САМОЙ последней нету.


Их в не на самой последней нет, я же говорю они при соединеиии грузятся.

Цитата

Как же тогда хук ставить? Отлавливать LoadLibrary и только затем грузить? 


Да, как вариант сначала перехватывай LoadLibarary и смотри, что передаётся в его параметр, если это ws2_32.dll, то после выполнения LoadLibrary снимай с неёё хук и ставь хуки на send и WSARecv в ws2_32.dll, остальные сокетные библиотеки все ссылаются на функции из ws2_32.dll, их трогать незачем.
 


--------------------
Живу недоумевая, всё время хочу понять...
http://hunger.ru 
PM MAIL WWW ICQ   Вверх
dumb
Дата 24.7.2006, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 7
Всего: 158



Цитата(ASGDeveloper @  24.7.2006,  13:33 Найти цитируемый пост)
Версия бата? На САМОЙ последней нету.

3.62. значит сделали подгрузку, что, в общем, правильно - прога жирная, и отправка/получение почты занимает малую часть времени работы в ней.

Цитата(ASGDeveloper @  24.7.2006,  13:33 Найти цитируемый пост)
Как же тогда хук ставить? Отлавливать LoadLibrary и только затем грузить?

именно. хукай LoadLibrary и после подгрузки расставляй хуки по функциям. 
PM MAIL   Вверх
bems
Дата 24.7.2006, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 21
Всего: 88



Цитата(ASGDeveloper @  24.7.2006,  13:33 Найти цитируемый пост)
Как же тогда хук ставить? Отлавливать LoadLibrary и только затем грузить?
madCHook это уже делает. Если библиотека не загружено, и ты ставишь хук на функцию, она захучит ее при загрузке библиотеки. Кроме того, если бы хука не было, то счего это проге крашиться? Внедряемый код (callback) у тебя кривой
 


--------------------
Обижено школьников: 8
PM MAIL   Вверх
drkot
Дата 24.7.2006, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



Вобще, если касаться перехвата трафика, то написаный драйвер ставится в цепочку NDIS  и весь трафик через него идет. 
А чтоб не мучится с драйверами можно и winpcap использовать.

PS: чето я непойму откуда у народа такая любовь к хукам на сокеты. 
http://www.wasm.ru/article.php?article=netfilter 


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
ASGDeveloper
Дата 24.7.2006, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Вот код перехватчика. Бага в том, что данные не сразу попадают в буфер. Не знаете в чем проблема?

Код

library injmod;

uses
  WinSock2,
  WinDows,
  madCodeHook;

var
  WSARecvNextHook: function(s: TSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD; var lpNumberOfBytesRecvd: DWORD; var lpFlags: DWORD;
    lpOverlapped: LPWSAOVERLAPPED; lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): Integer; stdcall;

function StrLCopy(Dest: PChar; const Source: PChar; MaxLen: Cardinal): PChar; assembler;
asm
        PUSH    EDI
        PUSH    ESI
        PUSH    EBX
        MOV     ESI,EAX
        MOV     EDI,EDX
        MOV     EBX,ECX
        XOR     AL,AL
        TEST    ECX,ECX
        JZ      @@1
        REPNE   SCASB
        JNE     @@1
        INC     ECX
@@1:    SUB     EBX,ECX
        MOV     EDI,ESI
        MOV     ESI,EDX
        MOV     EDX,EDI
        MOV     ECX,EBX
        SHR     ECX,2
        REP     MOVSD
        MOV     ECX,EBX
        AND     ECX,3
        REP     MOVSB
        STOSB
        MOV     EAX,EDX
        POP     EBX
        POP     ESI
        POP     EDI
end;

function StrPCopy(Dest: PChar; const Source: string): PChar;
begin
  Result := StrLCopy(Dest, PChar(Source), Length(Source));
end;

function AnsiLowerCase(const S: string): string;
var
  Len: Integer;
begin
  Len := Length(S);
  SetString(Result, PChar(S), Len);
  if Len > 0 then CharLowerBuff(Pointer(Result), Len);
end;

function WSARecvHookProc(s: TSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD; var lpNumberOfBytesRecvd: DWORD; var lpFlags: DWORD;
  lpOverlapped: LPWSAOVERLAPPED; lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): Integer; stdcall;
var
  str: string;
begin
  Result := WSARecvNextHook(s, lpBuffers, dwBufferCount, lpNumberOfBytesRecvd, lpFlags, lpOverlapped, lpCompletionRoutine);
  str := PChar(lpBuffers.buf);

  if Pos('subject: ', AnsiLowerCase(str)) > 0 then
  begin
    //str := 'X-Application: Test' + #13#10 + str;

    StrPCopy(lpBuffers.buf, str);
    lpBuffers.len := Length(str);
     lpNumberOfBytesRecvd := Length(str);
  end;
end;

procedure EntryPoint(Ac: dword); stdcall;
begin
  if Ac = DLL_PROCESS_ATTACH then
  begin
    HookAPI('ws2_32.dll', 'WSARecv', @WSARecvHookProc, @WSARecvNextHook);
  end;
end;

begin
  DLLProc := @EntryPoint;
  EntryPoint(DLL_PROCESS_ATTACH);
end.

 

Это сообщение отредактировал(а) ASGDeveloper - 24.7.2006, 17:07
PM MAIL   Вверх
dumb
Дата 24.7.2006, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 7
Всего: 158



гы... smile почитай msdn на тему WSARecv.

посмотри что возвращает WSARecv - WSA_IO_PENDING? smile
тут одним хуком не отделаешься. в данном случае WSARecv только инициирует прием, непосредственно получение данных сопровождается либо вызовом lpCompletionRoutine(если она не NULL при вызове), либо "выставлением" эвента(lpOverlapped.hEvent).
похукать lpCompletionRoutine не проблема. а вот если получение ожидается на эвенте, тогда сложнее. никаких "простых" решений в голову не приходит... 
PM MAIL   Вверх
ASGDeveloper
Дата 25.7.2006, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Цитата(dumb @  24.7.2006,  17:42 Найти цитируемый пост)
никаких "простых" решений в голову не приходит... 

Угу. Кроме драйвера.  smile 

Хм, какие еще будут предложения? Желательно для дельфы или борландовского билдера. 
PM MAIL   Вверх
drkot
Дата 25.7.2006, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



Насколько я понимаю в нт системах можно написать сервис и установить его как драйвер без хитрых манипуляций описаных на МАСМе.
И перехватывать думаю надо не вызовы функций, а непосредственно поток пакетов в стеке протоколоа TCP\IP. 
Цитата(ASGDeveloper @  24.7.2006,  13:01 Найти цитируемый пост)
 перехват, проверка и модификация (если надо) POP3-трафика

ето как раз та задача которая решается NDIS фильтрами. 


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
ASGDeveloper
Дата 25.7.2006, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Цитата(drkot @  25.7.2006,  10:12 Найти цитируемый пост)
ето как раз та задача которая решается NDIS фильтрами.

а примерчик не знаешь где можно взять?

ЗЫ ВинПКап не подходит в виду того, что автор хочет его платным сделать  smile (мы с ним списывались) 
PM MAIL   Вверх
drkot
Дата 25.7.2006, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



Цитата(ASGDeveloper @  25.7.2006,  10:47 Найти цитируемый пост)
ЗЫ ВинПКап не подходит в виду того, что автор хочет его платным сделать

таки исходники есть. В любом случае платным он станет с какойто конкретной версии, а все предудущие должны распространятся GNU, как и было.

http://www.wasm.ru/article.php?article=netfilter
http://www.wasm.ru/comment.php?artcode=netfilter
Встречал статью по реализации фильтра на си тока ссылочку не помню.
примеров сервисов на форуме полно. 


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
ASGDeveloper
Дата 25.7.2006, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Цитата(drkot @  25.7.2006,  11:21 Найти цитируемый пост)
таки исходники есть.

хм, не уточнишь где?


Цитата(drkot @  25.7.2006,  11:21 Найти цитируемый пост)
должны распространятся GNU

К сожалению GNU/GPL меня не устраивает.


Цитата(drkot @  25.7.2006,  11:21 Найти цитируемый пост)
примеров сервисов на форуме полно.

На каком форуме? Васмовском или этом? 
PM MAIL   Вверх
drkot
Дата 25.7.2006, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



Цитата(ASGDeveloper @  25.7.2006,  11:24 Найти цитируемый пост)
хм, не уточнишь где?

http://www.winpcap.org/archive/

Цитата(ASGDeveloper @  25.7.2006,  11:24 Найти цитируемый пост)
К сожалению GNU/GPL меня не устраивает.

жал

Цитата(ASGDeveloper @  25.7.2006,  11:24 Найти цитируемый пост)
На каком форуме?

на этом 


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
bems
Дата 25.7.2006, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 21
Всего: 88



Цитата(dumb @  24.7.2006,  17:42 Найти цитируемый пост)
похукать lpCompletionRoutine не проблема. а вот если получение ожидается на эвенте, тогда сложнее. никаких "простых" решений в голову не приходит...

lpCompletionRoutine можно и не хукать. А в хуке на WSARecv использовать свою lpCompletionRoutine, в ней делать обработку и вызывать переданную вызывающим кодом. 

И с событием поступать аналогично. При вызове использовать свое, отлавливать его и манипулировать с тем, которого ожидает вызывающий код 


--------------------
Обижено школьников: 8
PM MAIL   Вверх
dumb
Дата 25.7.2006, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 7
Всего: 158



тупим-с... smile  
PM MAIL   Вверх
ASGDeveloper
Дата 25.7.2006, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Цитата(drkot @  25.7.2006,  12:59 Найти цитируемый пост)
http://www.winpcap.org/archive/

Дык WinPCap не пойдет. Или можно по-другому?  smile 


Цитата(dumb @  25.7.2006,  17:34 Найти цитируемый пост)
тупим-с... smile   

Это ты о чем? 
PM MAIL   Вверх
dumb
Дата 25.7.2006, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 7
Всего: 158



Цитата(ASGDeveloper @  25.7.2006,  17:47 Найти цитируемый пост)
Это ты о чем? 

это я о том, что решение, лежащее на поверхности(которое указал bems), мне в голову не пришло.  smile smile 
PM MAIL   Вверх
bems
Дата 25.7.2006, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 21
Всего: 88



Цитата(dumb @  25.7.2006,  17:52 Найти цитируемый пост)
решение, лежащее на поверхности
это оно в принципе на поверхности. Конкретная реализация будет не слишком простой, если учитывать возможное количество одновременных вызовов WSARecv из разный потоков/прцессов. Мой вариант этого кода уже почти всегда корректно работает, но не дам, тк автор темы мне конкурент smile Уж извини
 


--------------------
Обижено школьников: 8
PM MAIL   Вверх
ASGDeveloper
Дата 25.7.2006, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Цитата(bems @  25.7.2006,  18:02 Найти цитируемый пост)
тк автор темы мне конкурент smile 

Да ладно тебе! Поделись! smile
Чего у тебя в подписи? Мы за свободный рынок!  smile  
PM MAIL   Вверх
bems
Дата 25.7.2006, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 21
Всего: 88



я могу сходу назвать 10 отличий того, что у меня в подписи и того о чем ты просишь. Но это будет оффтоп. 

Просто "нет". 


--------------------
Обижено школьников: 8
PM MAIL   Вверх
ASGDeveloper
Дата 25.7.2006, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



Цитата(bems @  25.7.2006,  18:11 Найти цитируемый пост)
Просто "нет". 

Ну почему? Да и какие мы конкуренты? Софтинка "заказная". Если хочешь могу поделиться.  smile 


M
Girder
А может через РМ?
PS: Хватит оффтопить!
  
PM MAIL   Вверх
drkot
Дата 25.7.2006, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



Цитата(ASGDeveloper @  25.7.2006,  17:47 Найти цитируемый пост)
Дык WinPCap не пойдет. Или можно по-другому?

береш исходник смотриш что к чему и по образу и подобию ваяеш.
чем не подходит? 
сам же ссылочку просил. 

Это сообщение отредактировал(а) drkot - 25.7.2006, 18:19


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
bems
Дата 25.7.2006, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 21
Всего: 88



ASGDeveloper, на данный момент я не пишу Open Source. Когда начну, сообщу. А если я тебе туда накидаю багов, которые проявляются только в редких случаях, но найти которые невозможно? Короче я призываю тебя кончать флейм - мы идем по кругу.
 


--------------------
Обижено школьников: 8
PM MAIL   Вверх
ASGDeveloper
Дата 25.7.2006, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: нет
Всего: 1



И так. Просмотрев еще раз топик я выделил три метода решения проблемы.

1) Перехват функций WinSock.
2) Написание NDIS-фильтра
3) Создание драйвера

1) С первым частично разобрались, но вдруг bems заявляет, что в принципе такой вариант может начать глючить при какой-то ситуации.
Кроме того этот вариант привязан к фиксированному списку почтовиков.
2) Второй вариант весьма перспективен, но у него есть один важный минус - для его реализации необходим MS Dev Studio + DDK. А это не есть гуд, так как самый простой способ получить и то и другое - это подписка на MSDN. Стоимость подписки - ~3000$. no comments...
3) Третий вариант перекликается с первым, но благодаря этому топику: http://forum.vingrad.ru/index.php?showtopic=70952 некоторые вопросы пропадают и этот вариант становится наиболее перспективным.

Или я что-то не доглядел? 
PM MAIL   Вверх
bems
Дата 26.7.2006, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 21
Всего: 88



Цитата(ASGDeveloper @  25.7.2006,  22:26 Найти цитируемый пост)
но вдруг bems заявляет, что в принципе такой вариант может начать глючить при какой-то ситуации
Первый в твоей жизни драйвер будет глючить в значительно большем числе ситуаций. А относительно "такого" варианта: просто нужно сделать это тред-сейф и для разных процессов. Кроме того очень хорошо задумываться о правах доступа к всем своим/чужим объектам ядра. И вообще - я не заявляю, я говорю что лично у меня получилось не сразу. Может оказаться, что ты лучше.
Цитата(ASGDeveloper @  25.7.2006,  22:26 Найти цитируемый пост)
Кроме того этот вариант привязан к фиксированному списку почтовиков.
Нет, он привязан к четырем апишкам. Но вариантов вызова много, поэтому если остановишся на этом, то при написании кода забудь о там как что делают конкретные почтовики и работай по описанию функций. 

Есть разные там экзотические случаи - например вызывает функцию, передавая ей эвент один процесс, а ожидает его другой (первый к тому времени может уже и завершиться). Первый понастоящему трудный баг во всем этом перехвате я поймал на такой "архитектуре". (Слава Богу это писалось на заказ и не имело широкого распространения) Получилось так, что когда завершается процесс, вызывающий функцию, то исчезают все выделенные мной для этого вызова данные, в том числе и хэндл эвента, которого ждет другой процесс. То есть или у него завершиться таймаут, или (если ждет INFINITE милисекунд) получаем зависшую прогу (не мою!!).

Есть и просто некорректное поведение вызывающего кода.

и об этом всем нужно подумать. Тогда глюков не будет. Ну а потом уже пробывать на почтовиках. (Популярные вроде вышеписаной фигни не творят). Парочку глючных но полурабочих прог, работающих с сокетами сам нацарапай, посмотри как твой перехват - не усугубляет ли.


А если дров ты раньше не писал, то там среда еще менее дружелюбная, чем то, что описал я. Но в конце концов тебе решать 


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0870 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.