Создание устройства.

Тема в разделе "WASM.NT.KERNEL", создана пользователем gevara, 30 апр 2007.

  1. gevara

    gevara максим

    Публикаций:
    0
    Регистрация:
    10 ноя 2006
    Сообщения:
    112
    Адрес:
    г. Пермь
    Драйвер создаёт устройство, символьную ссылку и завершается ошибкой. система его автоматически выгружает. будет ли работать это устройство? Разумеестя, адреса обработчиков валидны и указывают вне драйвера.
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Мм, адреса заполняются же в DRIVER_OBJECT, а после выгрузки его уже не будет...
    имхо дело закончится PAGE_FAULT_IN_NONPAGED_AREA или просто KMODE_EXCEPTION_NOT_HANDLED
     
  3. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    устройство удалится при выгрузке драйвера
     
  4. gevara

    gevara максим

    Публикаций:
    0
    Регистрация:
    10 ноя 2006
    Сообщения:
    112
    Адрес:
    г. Пермь
    Ещё вариант. Предложил Грейт:

    Копируем DriverObject в буфер. создаём для него устройство. тож не работает :dntknw:
     
  5. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    я кажется догадываюсь, почему ты интиресуешься сабжем, и пока вижу тут только два выхода:
    1. создавать устройство путём перелопачивания и модификации вручную целой кучи стситемных структур
    2. использовать другую систему коммуникации драйвера с юзермодным приложением (благо вариантов тут огромное кол-во)
     
  6. gevara

    gevara максим

    Публикаций:
    0
    Регистрация:
    10 ноя 2006
    Сообщения:
    112
    Адрес:
    г. Пермь
    Здесь ты прав.
     
  7. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    лучше поставь свое прерывание :)
     
  8. gevara

    gevara максим

    Публикаций:
    0
    Регистрация:
    10 ноя 2006
    Сообщения:
    112
    Адрес:
    г. Пермь
    Хм.. Есть род программ которым совершенно всё-равно на дырявость системы - главное чтоб БСОДа не было. Так что можно реализовать всё что угодно.
     
  9. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    не понял при чем тут дырявость?)
     
  10. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    ВОТ ОТСЮДА ПОПОДРОБНЕЕ... :)

    Примеры, ссылки... Нужно тоже организовать обмен р3 с р0 без устройства.. ну к примеру через файл или разделяемую память... Но если есть другие варианты, с удов. выслушаю ))
     
  11. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    nitrotoluol
    1. файлы/пайпы
    2. разделяемая память (как ты уже сказал)
    3. lpc
    4. добавление своего сервиса в sdt
    5. установка своего обработчика какого-нибуть прерывания
    6. KeStackAttachProcess и последующие манипуляциями с данными в его контексте
    7. похукать irp-обработчики какого-нибуть чужого девайса, и юзать его

    это только то, что первым пришло в голову, если подумать над этим более основательно, то думаю можно будет ещё много чего напридумывать
     
  12. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    Cr4sh
    оффтоп: что такое "lpc"? я всегда думал, что так просто называется совокупность всех способов: типа файлов/пайпов, разделяемой памяти итд. Или различные обертки типа rpc, если их использовать в пределах одной машины..
     
  13. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Nouzui
    Local Procedure Call
     
  14. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    Nouzui
    http://en.wikipedia.org/wiki/Local_Procedure_Call
    http://www.rsdn.ru/article/baseserv/lpc.xml
     
  15. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    имхо ты намешал способы передачи информации и способы передачи управления
     
  16. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    >> имхо ты намешал способы передачи информации и способы передачи управления
    эти понятия взаимосвязаны и взаимодополняющие ;)
     
  17. gevara

    gevara максим

    Публикаций:
    0
    Регистрация:
    10 ноя 2006
    Сообщения:
    112
    Адрес:
    г. Пермь
    хе.. я тут ещё кое что придумал. вот берём, допустим, NtQuerySystemInformation и добавляем туда свой SystemInformationClass. эту апишку всё-равно перехватывать придётся (для скрытия процессов). ну тут уже всё ясно: при п6ерехвате проверяем первый параметр - если это то что нам нужно, то выполняем комманды (их можно передавать в буффере).

    Дырявость я имею ввиду то, что способ управления может содержать потенциальные дыры. вот, напримар, общая память. если приложение работает в несколько потоков и один из них вдруг освободит эту память, затем дров обратится к ней - произойдёт BSOD.
     
  18. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    gevara
    Ещё один малозаметный способ промаячить драйверу из ring3:
    Драйвер подписывается на события по загрузке модулей, вызывая PsSetLoadImageNotifyRoutine.
    Клиентский процесс в нужные моменты загружает/выгружает длл с определённым именем.

    :)