Тут такая ситация: есть прога и есть драйвер. Прога пишет некоторую инфу в файл и отправляет на мыло. Как можно из драйвера отследить отсылку письма, чтобы вписать в него кое-что. Наудачу поискал в гугле - ничего подобного не встретил. Пока вижу один способ (на мой взгляд не лучший) - перехватить запись в файл и дописать в него. Но это лишние следы. Есть какие-нибудь соображения по поводу?
cresta Не знаю, но может быть исходник SteelRat по поводу Криптодиска тебе поможет? По идее он же с файлом работает!
не понял, при чем криптодиск? Там есть что-то с отсылкой мыла? Если там перехват записи в файл - то не надо.
cresta По сути отсылка это же юзать сетевой драйвер какой нить. следовательно зная формат мыла, то можно и самому сваять че-нить
cresta, а ты не замечал что делает нортон-антивирус? А делает он простую вещь, прослушивает 25 порт, почему бы тебе не попытаться сделать тоже самое и если тебе удасться, то твори все что захочешь с почтовыми сообщениями .
В сетях ничего не понимаю, в принципе сам драйвер Tcpip похукал, вроде хук работает, разные Irp мимо летят, обвешаные ioctl'ами, а что они значат, какие ловить и как обрабатывать - не могу найти. На каком-то форуме нашел, что вроде ioctl'ы свои для каждой версии, и кто их знает - инфой вряд ли поделится. Ну и забуксовал на этом Может какие ссылки есть на примеры прослушивания порта 25?
cresta Посмотри это http://ms-rem.dot-link.net/mysockets.c Это моя реализация TDI клиента. Из этих исходников очень легко понять как именно происходит конект и отправка данных. Ну а далее, лови соответствующие IRP и обрабатывай как тебе надо. З.Ы. ioctl для всех виндовс NT одинаковы, но ходят слухи что в vista будут серьезные изменения в TDI.
Как раз первым делом и посмотрел, есть ли там такие файлы. Поэтому и переспросил на всякий случай, о них ли речь идёт? Как понял из ответа - это они и есть. Спасибо.
Всё, сделал Код (Text): if (pStack->MajorFunction == IRP_MJ_INTERNAL_DEVICE_CONTROL) { if (pStack->MinorFunction == TDI_SEND){ mdlBuffer = MmGetSystemAddressForMdlSafe (irp->MdlAddress, LowPagePriority); if (mdlBuffer){ data = strstr (mdlBuffer,"user"); if (data) strcpy(data,"УСЕР"); } } } Спасибо всем.
кстати, Ms Rem, как себя ведет этот сокет из mysocket.c при отсутствии соединения? Как винсок, вываливает окно подключения, или молча отказывается от посылки?