SID процесса и принадлежность группе.
От: Аноним  
Дата: 15.01.08 20:22
Оценка:
Доброго времени суток всем!

Возникла необходимость определять из драйвера принадлежность процесса к группе сервисов. То есть, по SID отделить те процессы, что стартовали как сервисы от тех, что стартовали как обычные процессы. Как получать SID я знаю, осталость только понять, как получить SID'ы тех "пользователей", под которыми стартуют сервисы (NT AUTHORITY\SYSTEM, NT AUTHORITY\LOCAL SERVICE и так далее).
Re: SID процесса и принадлежность группе.
От: Alter_ Украина http://alter.org.ua
Дата: 15.01.08 23:10
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Возникла необходимость определять из драйвера принадлежность процесса к группе сервисов. То есть, по SID отделить те процессы, что стартовали как сервисы от тех, что стартовали как обычные процессы. Как получать SID я знаю, осталость только понять, как получить SID'ы тех "пользователей", под которыми стартуют сервисы (NT AUTHORITY\SYSTEM, NT AUTHORITY\LOCAL SERVICE и так далее).


SeEnableAccessToExports(); // инициализация доступа к SeExports

typedef struct _SE_EXPORTS { ... } // сама структура, описана в IFS-Kit'е

// Собственно, указатель на SID SYSTEM'а. Там еще и другие есть, посмотрите.
SeExports->SeLocalSystemSid;


Но я бы не слишком доверял такой проверке на сервисность, т.к. сервис может стартовать и от имени другого пользователя.
(А пользователь вообще-то может работать под SYSTEM'ом).

Может есть смысл по parent process'у ?
Или у Service Manager'а выспросить ?
--
Alter, http://alter.org.ua
Re[2]: SID процесса и принадлежность группе.
От: Аноним  
Дата: 16.01.08 10:17
Оценка:
Здравствуйте, Alter_, Вы писали:

A_>Может есть смысл по parent process'у ?


Это не столь легко. К примеру: wmiprvse.exe под XP стартует через svchost.exe. Таким же образоом стартуют процессы, запущенные через COM.

A_>Или у Service Manager'а выспросить ?


С уровня драйвера? Как?
Re[3]: SID процесса и принадлежность группе.
От: Alter_ Украина http://alter.org.ua
Дата: 17.01.08 01:52
Оценка:
Здравствуйте, Аноним, Вы писали:

A_>>Или у Service Manager'а выспросить ?

А>С уровня драйвера? Как?

1) сделать user-mode helper
2) особо извратиться и через named pipes (встречал реализацию)
3) заглянуть в реестр и посмотреть, есть ли для такого процесса запись и соответствует ли SID процесса этой записи
--
Alter, http://alter.org.ua
Re[4]: SID процесса и принадлежность группе.
От: Аноним  
Дата: 17.01.08 14:05
Оценка:
Здравствуйте, Alter_, Вы писали:

A_>1) сделать user-mode helper


Ну, это неинтересно- потери по времени могут быть достаточно велики, а временные рамки в данном случае достаточно ограничены.

A_>2) особо извратиться и через named pipes (встречал реализацию)


Ух, как интересно, я бы хотел взглянуть на эту реализацию. По каким ключевикам можно было бы найти это в Инете?

A_>3) заглянуть в реестр и посмотреть, есть ли для такого процесса запись и соответствует ли SID процесса этой записи


Можно будет попробовать.

Спасибо за информацию!
Re[5]: SID процесса и принадлежность группе.
От: Alter_ Украина http://alter.org.ua
Дата: 18.01.08 16:49
Оценка:
Здравствуйте, Аноним, Вы писали:

A_>>2) особо извратиться и через named pipes (встречал реализацию)

А>Ух, как интересно, я бы хотел взглянуть на эту реализацию. По каким ключевикам можно было бы найти это в Инете?
Это к сожелению было не в интернете. Внутреняя разработка. Но практически реализуемо.
И в этом деле скорее всего очень помогли исходники NT4 и 2000, которые в этом самом интернете примерно года 2 или 3 назад гуляли.
Про ReactOS не знаю.

A_>>3) заглянуть в реестр и посмотреть, есть ли для такого процесса запись и соответствует ли SID процесса этой записи

А>Можно будет попробовать.

Кстати, при загрузке с Windows Live CD приложения запускаются как раз под SYSTEM'ом. Но я думаю для ваших задач это не принципиально.
--
Alter, http://alter.org.ua
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.