Перехват трафика приложения
— надо перехватывать все функции WS3_32.dll, чтобы иметь полный доступ к трафику;
— можно учесть только непосредственно сами передаваемые данные, а служебная информация типа TCP/IP заголовков, запростов на соединение и проч. не учитывается.
Ниже уровня для перехвата, чем WS2_32, я не увидел. Есть ещё вариант использовать WFP, но я про него пока только читаю и ничего не понимаю. И не факт, что он лучше подойдёт для моей задачи (но если подойдёт, то дайте знать ☺).
Суть перехвата — просто учёт принятого/отправленного с опциональным сохранением данных. Учтён должен быть весь трафик целевого приложения.
Собственно, вам для чего это надо? Может все таки другими методами воспользоваться? Например, заюзать netflow от cisco, зазеркалировать порт на коммутаторе куда ваш сервер с приложением подключён, к зеркальному порту подключить системник с netflow analyzer.
Нет, таких мощностей я не имею. Тем более, этот способ будет перехватывать весь трафик, а мне нужно только от выбранного приложения, причём приложение может быть какое угодно (т.е. ни порты, ни адреса не предугадаешь). Поэтому хотелось бы, чтобы ответ был всё-таки именно по моему вопросу.
Где-то читал, что при создании raw-сокета, перехватывается весь UDP трафик, но вам нужен TCP, а с ним такое не прокатывает.
Про raw-сокеты знаю, но опять же, они перехватывают абсолютно весь трафик.
AdvOR -- с открытыми исходниками. Качаем, смотрим, как там реализовано. Предварительно можно проверить, действительно ли весь трафик перехватывается.