Здравствуйте, Аноним, Вы писали:
А>Есть система. В нее приходят сообщения по протоколу (скажем SMTP или POP3). Мне нужно получить их содержимое до того как они дойдут до приложения, которому отправлены. Данную задачу необходимо решить с помощью Winsock. Базовыми знаниями Winsock обладаю. Но идей на счет того КАК контролировать ВЕСЬ трафик по определенному порту пока нет. Может кто подскажет?
Главный вопрос.
Что значит контролировать трафик ? Просто мониторинг подойдет, или задача сводится к тому,
чтобы "резать" или подменять определенные данные ?
Отвечу пока так — ставьте перехватчики на функции Winsock (а также кое-какие еще) во всех
процессах и сможете видеть все, что идет по сети.
Хотя для коммерческих проектов метод так себе, мягко говоря.
Во-первых, намучаетесь с проактивными защитами. Они сами будут частью цепи перехвата
трафика, будут "путать" контекст приложений, отправляющих данные в сеть, не дадут
делать инжект в процессы, особенно свои собственные, и на каждый чих начнут выдавать
пользователю предупреждения.
Во-вторых, программы вроде Skype могут быть достаточно защищены от инжекта и
просто не дадут хукать функции в своих адресных пространствах.
Вспомните еще про UPX, VmProtect и всякие политики безопасности в Vista и выше.
В-третьих, техника перехвата API сама по себе достаточно сложна.
На красивые термины "сплайсинг" и "инжект" покупается только молодняк, а
опытные бегут от них как от чумы. И если в системе будет установлен такой же хук, —
к примеру, с помощью Detours, — то скорее всего, сеть вообще повиснет.
Если надо действительно нормальное решение, которое работает почти везде,
советую смотреть на TDI/LSP/WFP. Иных вариантов попросту не существует.