Starting a Process from KernelMode

Тема в разделе "WASM.NT.KERNEL", создана пользователем calidus, 29 апр 2008.

  1. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    http://www.codeproject.com/KB/system/KernelExec.aspx
    тут есть статья такая , я сделал обыкновенный месаджбокс прогу и запустил ее с помощью дровины. Она запустилась , все ок.
    Но я не пойму , какие привилегии у этого метода , его плюсы ? .. просмотрев его во всех прогах по просмотру процессов я ничего особого не нашел. Статью я прочитал но все равно как то не понятно .. Обьясните плиз ..
     
  2. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Актуально для руткитов =), зачем нормальному драйверу запускать процессы?
     
  3. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    просто нет доукментированного способа запуска процессов.

    зы. в той статье есть небольшая ошибка, мы с крешем ковыряли это, помнится.
     
  4. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    дык что особенного ??? ...инжект не делает , а просто запуск , а привилегий никаких , мой касперский также спрашивает разрешить или нет с другими прогами ? ... зачем делать сложную дровину для процеса который запускаеца как все ??? Где логика
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    ой иногда просто нужно запустить программку из драйвера
     
  6. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    =) ага ... значит это для того чтобы в дровине скомбинировать 2 приложения .. усер и кернел .. столько гемороя из за этого
     
  7. comrade

    comrade Константин Ёпрст

    Публикаций:
    0
    Регистрация:
    16 сен 2002
    Сообщения:
    232
    Адрес:
    Russian Federation
    Для этого обычно узерское приложения запускается из узермод (типа HKLM\Windows\Run, Startup folder, etc)

    Вообще это статья HACK полный...
     
  8. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    да кстати , тогда получаеца и дровина и приложение ... может и хак , но кто больше + знает ?
     
  9. comrade

    comrade Константин Ёпрст

    Публикаций:
    0
    Регистрация:
    16 сен 2002
    Сообщения:
    232
    Адрес:
    Russian Federation
    как это правильнее сделать? драйвер + узермод сервис.
     
  10. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    =) ну получаецо что так ! Прочитал щас статью про Коллбэк функцию в кернеле , здесь на сайте. Автор гонялся за этим по его словам давно. Но в итоге понял что это не применимо , млин я сразу так подумал
     
  11. comrade

    comrade Константин Ёпрст

    Публикаций:
    0
    Регистрация:
    16 сен 2002
    Сообщения:
    232
    Адрес:
    Russian Federation
    что за статься про callback in kernel mode?
     
  12. soveren

    soveren Дмитрий Петерсон

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    94
    Адрес:
    Россия
    Спешу вас разочаровать. Никак у вас не получится написать запуск процесса исключительно из-под ядра. Для этого требуется специфичный для каждого сервис пака код, (много много кода) который будет отличаться от версии к версии и обеспечит вам много проблем как в плане как реализации так и в плане отладки. Все что остается это старт процессов через пользовательское API, путем описанного выше метода.
     
  13. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    А NtCreateProcess ?
     
  14. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    Clerk
    NtCreateProcess к сожалению процесс создаст, но не запустит. Если идти с нуля, то там все начинается с ZwCreateSection, ZwQuerySection и т.д. до ZwResumeThread.
    soveren прав в той части, что код будет сильно зависим от версии системы, но запустить процесс из ядра все-таки можно, хотя под это и нужно писать тонны кода. Я это делал под XP.
    Вот здес http://www.wasm.ru/forum/viewtopic.php?id=24967 кстати Great приводил дельный совет по запуску процесса
     
  15. soveren

    soveren Дмитрий Петерсон

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    94
    Адрес:
    Россия
    Clerk
    Он всего лишь создает объект EPROCESS. А кто по вашему будет реализовывать все остальное?
     
  16. soveren

    soveren Дмитрий Петерсон

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    94
    Адрес:
    Россия
    В плане использования процессов как плацдарма для чего-нибудь проще создать из-под ядра пользовательский поток в каком-нибудь уже существующем процессе. Это сделать гораздо проще и код получится относительно стабильно одинаковым под все версии оп.системы.
     
  17. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    По моему функция ntdll!RtlCreateUserProcess достаточна для запуска процесса и примитивна, никаких там тонн кода нет, для режима ядра будет подобно.
    А если насчёт подсистемы, то никаких проблем обратиться к порту(LPC) из под режима ядра нет.
     
  18. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    =) лучше не мудрить , я думал ранее у процесса привелегии а потом ... эххх