![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: нет Всего: 8 |
Вобще, если касаться перехвата трафика, то написаный драйвер ставится в цепочку NDIS и весь трафик через него идет.
А чтоб не мучится с драйверами можно и winpcap использовать. PS: чето я непойму откуда у народа такая любовь к хукам на сокеты. http://www.wasm.ru/article.php?article=netfilter -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
| ASGDeveloper |
|
|||
|
developer ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 1.4.2006 Репутация: нет Всего: 1 |
Вот код перехватчика. Бага в том, что данные не сразу попадают в буфер. Не знаете в чем проблема?
Это сообщение отредактировал(а) ASGDeveloper - 24.7.2006, 17:07 |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
гы...
посмотри что возвращает WSARecv - WSA_IO_PENDING? тут одним хуком не отделаешься. в данном случае WSARecv только инициирует прием, непосредственно получение данных сопровождается либо вызовом lpCompletionRoutine(если она не NULL при вызове), либо "выставлением" эвента(lpOverlapped.hEvent). похукать lpCompletionRoutine не проблема. а вот если получение ожидается на эвенте, тогда сложнее. никаких "простых" решений в голову не приходит... |
|||
|
||||
| ASGDeveloper |
|
|||
|
developer ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 1.4.2006 Репутация: нет Всего: 1 |
||||
|
||||
| drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: нет Всего: 8 |
Насколько я понимаю в нт системах можно написать сервис и установить его как драйвер без хитрых манипуляций описаных на МАСМе.
И перехватывать думаю надо не вызовы функций, а непосредственно поток пакетов в стеке протоколоа TCP\IP. ето как раз та задача которая решается NDIS фильтрами. -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
| ASGDeveloper |
|
|||
|
developer ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 1.4.2006 Репутация: нет Всего: 1 |
||||
|
||||
| drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: нет Всего: 8 |
таки исходники есть. В любом случае платным он станет с какойто конкретной версии, а все предудущие должны распространятся GNU, как и было. http://www.wasm.ru/article.php?article=netfilter http://www.wasm.ru/comment.php?artcode=netfilter Встречал статью по реализации фильтра на си тока ссылочку не помню. примеров сервисов на форуме полно. -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
| ASGDeveloper |
|
|||
|
developer ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 1.4.2006 Репутация: нет Всего: 1 |
||||
|
||||
| drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: нет Всего: 8 |
-------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
lpCompletionRoutine можно и не хукать. А в хуке на WSARecv использовать свою lpCompletionRoutine, в ней делать обработку и вызывать переданную вызывающим кодом. И с событием поступать аналогично. При вызове использовать свое, отлавливать его и манипулировать с тем, которого ожидает вызывающий код -------------------- Обижено школьников: 8 |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
тупим-с...
|
|||
|
||||
| ASGDeveloper |
|
|||
|
developer ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 1.4.2006 Репутация: нет Всего: 1 |
||||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
||||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
это оно в принципе на поверхности. Конкретная реализация будет не слишком простой, если учитывать возможное количество одновременных вызовов WSARecv из разный потоков/прцессов. Мой вариант этого кода уже почти всегда корректно работает, но не дам, тк автор темы мне конкурент
-------------------- Обижено школьников: 8 |
|||
|
||||
| ASGDeveloper |
|
|||
|
developer ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 1.4.2006 Репутация: нет Всего: 1 |
||||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |