как послать файл на майл из режима ядра

Тема в разделе "WASM.WIN32", создана пользователем donaire, 18 янв 2005.

  1. donaire

    donaire New Member

    Публикаций:
    0
    Регистрация:
    8 дек 2004
    Сообщения:
    25
    Адрес:
    k-jarve
    Вопрос такой. Как программно послать готовый файл, например текстовый, из режима ядра на адрес почтового ящика? adress@mail.hu например?

    Спасибо!
     
  2. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    Никак :) Если не ошибаюсь в режиме ядра у тебя доступны только hal.dll и ntoskrnl.exe вот с ними можешь "играть" - сделать протокол TCP/IP, посылать пакеты через сетевую карту и другие приблуды для работы с сетью :)
     
  3. ProgramMan

    ProgramMan New Member

    Публикаций:
    0
    Регистрация:
    13 янв 2004
    Сообщения:
    263
    тебя доступны только hal.dll и ntoskrnl.exe

    Только они загруженны, и проставляются в таблицу импорта, а вот доступно всё. :)

    Но вот догружать необходимые библиотеки, и настраивать связь между ними действительно замучеешься.

    В чём необходимость посылать письмо из r-0?
     
  4. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    ProgramMan А ты пробовал ? Подгрузить можно... теоретически... Интересно на форуме кому-нить удалось поюзать юзер-моде DLL, да не одну и ещё и в связке ? На тему "из r-0 запустить приложение..." уже обсуждали недавно :)
     
  5. Zufyxe

    Zufyxe New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2004
    Сообщения:
    137
    Адрес:
    Russia
    - в смысле?! А NDIS куда делся? А TCPIP, а WANARP? Или вам нужно из SafeMode пакеты слать? Все эти драйверы имеют свои интерфейсы режима ядра. Их можно легко юзать. И не нужно лезть в LAN адаптер и тем более свой протокол изобретать.
     
  6. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    NDIS - не вопрос :) Zufyxe опиши схему создания сокета для отправки IP пакета. Для donaire как раз это и ответ... Можно открыть девайс \Device\tcpip через символьную ссылку \\??\TCP или напрямую, а дальше, что с ним делать ? Тебе надо знать IP адрес сервера (GetHostByName) => надо отсылать пакет к DNS... Слишком сложно, да и не расчитано ядро на работу с почтой :) разаработчики выньдовс в этом правы, в ядре решаются други задачи... А если не секрет, зачем почту слать ?
     
  7. ProgramMan

    ProgramMan New Member

    Публикаций:
    0
    Регистрация:
    13 янв 2004
    Сообщения:
    263
    SteelRat, так я и написал, что подгрузить можно, но "замучеешься" это делать.
     
  8. donaire

    donaire New Member

    Публикаций:
    0
    Регистрация:
    8 дек 2004
    Сообщения:
    25
    Адрес:
    k-jarve
    как зачем почту посылать? если программа только в ядре работает, как ещё данные послать?
     
  9. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    А кто управляет ей, н-р запускает... Если опишешь что надо сделать, может что и посоветуют :)
     
  10. Zufyxe

    Zufyxe New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2004
    Сообщения:
    137
    Адрес:
    Russia
    Листай MSDN. Ищи TDI interface - это один из вариантов. Сейчас времени нет. Позже раскидаю подробнее что да как.
     
  11. Vovane

    Vovane New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2004
    Сообщения:
    58
    Адрес:
    Afghanistan
    Не совсем в тему но прикольно.

    Если откомпилить то что в атаче и запустить то при получении почты будет выскакивать мессвокс с логином к РОР3 серваку.

    [​IMG] 1458074654__pop3.rar
     
  12. Vovane

    Vovane New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2004
    Сообщения:
    58
    Адрес:
    Afghanistan
  13. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    Zufyxe Да, посмотрел, TDI позволяет отправлять файлы или содержимое буфера (он выше NDIS) но опять же IP надо знать :dntknw: Буду ждать твоего ответа...
     
  14. ganes

    ganes New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2004
    Сообщения:
    62
    Адрес:
    Ukraine
    Попробуй заразить КернеЛь.ДЛЛ, она вроде як в крутых кольцах тусуеться, и от-тудась и отправляй мейлы...

    Но это нелегкий способ...
     
  15. Zufyxe

    Zufyxe New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2004
    Сообщения:
    137
    Адрес:
    Russia
    Значит так, перерыл свои старые исходники, есть несколько способов послать пакет из режима ядра. Проще всего, ИМХО,- 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" готов.