Windows Vista: winlogon.exe & csrss.exe

Тема в разделе "WASM.WIN32", создана пользователем _DEN_, 4 июн 2007.

  1. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Когда мы логофимся из висты, то прибиваются все процессы, живущие в юзерной сессии, кроме winlogon.exe и csrss.exe. Эта парочка живет в юзерной сессии и не умерает (и не перезапускается) при логофе. Я хочу чтобы мой процесс тоже жил в юзерной сессии и не умирал при логофе. Это реально?
     
  2. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    _DEN_
    А как ты думаешь что делает winlogon.exe? вот он и живет. Если напишешь свой - то можно. Второй момент - замена стандартной библиотеки winlogon.exe
     
  3. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Что это значит?
     
  4. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    _DEN_
    Ответ ищи в описании загрузки XP. (по-поему у Хелен Харпер описано)
    Второй вариант - чтобы запустить свой процесс - создай библиотеку которую использует winlogon.exe (т.е. подмени стандартную).
     
  5. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    PROFi

    Дело в том, что мне не нужно чтобы процесс стартовал вместе с виндой. Его запускает специальный сервис тогда когда надо. Просто надо чтобы он не дох вместе с логофом.

    Это жесть :) Более гуманного способа нет?
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    winlogon и csrss запускаются не от юзера, а от SYSTEM, поэтому и не дохнут. И выполняют они критически важные для работы системы функции. Если попробуешь прибить csrss вручную, винда сразу же склеит ласты - CRITICAL_OBJECT_TERMINATION. winlogon аналогично
     
  7. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    _DEN_
    Это жесть :) Более гуманного способа нет?
    Это гуманный способ - он не изменяет байты в памяти, а всего лишь подменяет dll.
     
  8. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Great

    Это прекрасно. Так вот как мне запустить свой процесс от SYSTEM, но так, чтобы он жил в юзерной сессии.
     
  9. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    Страшно извиняюсь, мне казалось что Хелен Харпер - марка ммм... гигиенических средств. Хелен Кастер может быть? ;)
     
  10. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.568
    Адрес:
    Russia
    _DEN_
    Помоему это нереально (в плане того что систем это систем а юзер это юзер и тут уже ничего не сделаешь), можно конечно в ручную создать процесс, повысив ему привелегии и сделав родителем тот же csrss, но это только в теории. На практике я не пробовал..
     
  11. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Когда я запускаю процесс с токеном винлогона, у этого процесса username = SYSTEM. А всеравно дохнет.
     
  12. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    А кто родитель твоего процесса? У него скорее всего user = ТВОЙ_АКК, поэтому при убийстве родителя дохнет и твой.
    Нужно создать свой процесс как дочерний у winlogon, например. Как вариант - через APC
     
  13. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Great

    Есть сервис. Он живет всегда.
    Сервис запускает процесс A обычным критпроцессом, который живет в нулевой сессии и следовательно тоже живет всегда.
    Процесс A тырит токен у winlogon.exe и запускает с ним процесс B (CreateProcessAsUser).

    При логофе сервис и процесс A, естественно никуда не деваюца, а вот процесс B умирает.


    Можно чуть подробнее? :)
     
  14. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Ну как из ядра создают процесс дочерний от произвольного процесса в системе (посылая APC, внутри которой лежит CreateProcess), так и ты сделай. Под валялся на codeproject кажется, там драйвер ядра.
     
  15. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Great

    А проще никак низя?.. Какие свойства процесса выходят за рамки токена?
     
  16. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    _DEN_
    AFAIK, winlogon свой для каждой сессии и умирает вместе с ней. То же и с csrss (правда есть ещё глобальный csrss в нулевой сессии).

    Как ты определял, что winlogon неубиваем ?
     
  17. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    green

    Пиды у них не меняюца.
     
  18. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    green
    Неа, он "глобальный" для всех сессий. Он запускается by smss, как и csrss.

    _DEN_
    А разве обычный сервис после логоффа умирает?
     
  19. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    green
    afaik, ни первое ни второе неверно :)
    надо в Руссиновича глянуть. Но я недавно перечитывал описание загрузки, и, насколько я помню, эти процессы глобальны для системы и от сессии не зависят
     
  20. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    IceStudent

    Нет, но он мне не подходит, т.к. сервисы в Висте не имеют доступа к гуям.