Еще к вопросу о запуске процесса из ядра

Тема в разделе "WASM.NT.KERNEL", создана пользователем Steel21, 10 фев 2010.

  1. Steel21

    Steel21 New Member

    Публикаций:
    0
    Регистрация:
    24 дек 2009
    Сообщения:
    4
    Делаю инжект из ядра в winlogon.exe до логина юзера, запускю оттуда процесс и делаю в него инжект, который и подргужает основную DLL. В итоге процесс наследует права, среду итд. от winlogon.exe и запускается под учетной записью SYSTEM. Однако когда логинится юзер под своей учетной записью мне необходимо переключить моему процессу доступ к среде учетной записи пользователя, чтобы среда процесса (десктоп, графическую подсистему, системные переменные итд.) была такой, как будто бы он был запущен под эккаунтом юзера.

    Частично я пониаю что задача лежит через SetThreadDesktop(), SetProcessWindowStation() но это не рещает проблему со средой переменных оболочки. И как отлавливать переключение пользователей?

    Предполагаю что описанную выше задачу встречают и рзработчики сервисов.

    Может кто-нибудь сталкивался с решением подобной задачи, или может есть уже какое-то готовое решение?

    Спасибо :)
     
  2. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Я в ужасе. Честно.

    Ну во-первых, если ты уже произвел такое кол-во действий, то что мешает тебе внедрить еще какую-нибудь левую библиотеку в пользовательский процесс? Будет тебе код с правами пользователя. Зачем тебе SetThreadDesktop(), SetProcessWindowStation()? Окошки перечислить хочешь?

    За авторизацию отвечает msgina.dll в уже "попорченном" тобой winlogon'е :)
     
  3. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    У разработчиков служб как раз такой проблемы нет. Достаточно получить токен вошедшего пользователя через WTSQueryUserToken(), далее создать блок переменных через CreateEnvironmentBlock() и передать это всё в CreateProcessAsUser() - вуаля, окружение будет один-в-один как у пользователя.