Вопрос такой. Как программно послать готовый файл, например текстовый, из режима ядра на адрес почтового ящика? adress@mail.hu например? Спасибо!
Никак Если не ошибаюсь в режиме ядра у тебя доступны только hal.dll и ntoskrnl.exe вот с ними можешь "играть" - сделать протокол TCP/IP, посылать пакеты через сетевую карту и другие приблуды для работы с сетью
тебя доступны только hal.dll и ntoskrnl.exe Только они загруженны, и проставляются в таблицу импорта, а вот доступно всё. Но вот догружать необходимые библиотеки, и настраивать связь между ними действительно замучеешься. В чём необходимость посылать письмо из r-0?
ProgramMan А ты пробовал ? Подгрузить можно... теоретически... Интересно на форуме кому-нить удалось поюзать юзер-моде DLL, да не одну и ещё и в связке ? На тему "из r-0 запустить приложение..." уже обсуждали недавно
- в смысле?! А NDIS куда делся? А TCPIP, а WANARP? Или вам нужно из SafeMode пакеты слать? Все эти драйверы имеют свои интерфейсы режима ядра. Их можно легко юзать. И не нужно лезть в LAN адаптер и тем более свой протокол изобретать.
NDIS - не вопрос Zufyxe опиши схему создания сокета для отправки IP пакета. Для donaire как раз это и ответ... Можно открыть девайс \Device\tcpip через символьную ссылку \\??\TCP или напрямую, а дальше, что с ним делать ? Тебе надо знать IP адрес сервера (GetHostByName) => надо отсылать пакет к DNS... Слишком сложно, да и не расчитано ядро на работу с почтой разаработчики выньдовс в этом правы, в ядре решаются други задачи... А если не секрет, зачем почту слать ?
Листай MSDN. Ищи TDI interface - это один из вариантов. Сейчас времени нет. Позже раскидаю подробнее что да как.
Не совсем в тему но прикольно. Если откомпилить то что в атаче и запустить то при получении почты будет выскакивать мессвокс с логином к РОР3 серваку. 1458074654__pop3.rar
Zufyxe Да, посмотрел, TDI позволяет отправлять файлы или содержимое буфера (он выше NDIS) но опять же IP надо знать Буду ждать твоего ответа...
Попробуй заразить КернеЛь.ДЛЛ, она вроде як в крутых кольцах тусуеться, и от-тудась и отправляй мейлы... Но это нелегкий способ...
Значит так, перерыл свои старые исходники, есть несколько способов послать пакет из режима ядра. Проще всего, ИМХО,- TDI драйвера TCPIP. значит так, схема, вкратце такова: 1. bind или TDI address open: ZwCreateFile: "\Device\TCP" (или \Device\UDP, или вообще \Device\IP - смотря что нужно...) указываем EaBuffer на структуру FILE_FULL_EA_INFORMATION (в DDK), EaName db 'TransportAddress',0, EaValue == TRANSPORT_ADDRESS - из документации по winsock. Полученый Handle - описатель Address object, что между прочим ни что иное как FILE_OBJECT (в DDK). 2.socket или TDI create connection context: ZwCreateFile: "\Device\то же самое" опять FILE_FULL_EA_INFORMATION: EaName db 'ConnectionContext',0 EaValue == указатель на память для этого самого context-а не помню сколько надо, но я брал страницу. Получаем опять Handle, для FILE_OBJECT представляющий TDI connection. 3.TDI associating connection: связываем наш "socket" с конкретным адресом: из connection получаем FILE_OBJECT (ObReferenceObjectByHandle) далее активно юзаются макросы TdiXXX - нужно будет переписать для ASM: Создаем IRP для TDI TdiBuildInternalDeviceControlIrp (это просто вызов IoBuildDeviceIoControlRequest с определенными параметрами) На основе созданного IRP делаем TdiBuildAssociateAddress (тоже макрос) заполняем парамтры (все есть в DDK) дальше IoCallDriver - и "socket" готов.