Добрый день.
Необходимо локально отслеживать всю сетевую активность.
Достаточно просто фиксации факта обращения программы в сеть.
В этой связи несколько вопросов:
— Можно ли это сделать без драйвера и сниффера?
— Если нельзя, то
— есть ли пример сниффера, который ловит не только входящие?
— обязательно ли переводить сетевую в режим promisc...?
— Какие еще есть варианты решения?
"MichaelMaslov" <49970@users.rsdn.ru> wrote in message news:1579338@news.rsdn.ru... > — Можно ли это сделать без драйвера и сниффера?
Можно.
> — Если нельзя, то > — есть ли пример сниффера, который ловит не только входящие? > — обязательно ли переводить сетевую в режим promisc...? > — Какие еще есть варианты решения?
Здравствуйте, MichaelMaslov, Вы писали:
MM>Добрый день. MM>Необходимо локально отслеживать всю сетевую активность. MM>Достаточно просто фиксации факта обращения программы в сеть. MM>В этой связи несколько вопросов:
MM>- Можно ли это сделать без драйвера и сниффера? MM>- Если нельзя, то MM> — есть ли пример сниффера, который ловит не только входящие? MM> — обязательно ли переводить сетевую в режим promisc...? MM>- Какие еще есть варианты решения?
Вот что придумал:
Предполагаем, что в сеть лезут через winsock. Тогда можно
1) Подменить адреса функций в таблице импорта процесса при его старте на свои — заменить что-нибудь вроде connect() или даже WSAInit () (или как там её)
2) Если не хочется патчить процесс при запуске, написать заглушку ws2_32.dll и winsock.dll, которые тупо транслируют вызовы в вызовы настоящих функций, и подсунуть вместо настоящих. Например, в папки подозрительных программ.
Но лучше таки (ИМХО) патчить при запуске.
В общем, идея ясна, надеюсь, что помог.
А вот как это tcpview sysinternal-овский делает?
Ни у кого нету исходников?
Еще вопросик : заменять адреса функций — это
для системы "сильно неприятно"? Особенно, если
это не разово, а все время.
И, кстати, а как то же самое фаерволы делают?