Есть системный процесс, с привилегией SE_TCB_PRIV (для примера). Могу ли я открыть его и скопировать эту привилегию в токен своего процесса? Примерно реализация такая — OpenProcess, OpenProcessToken, GetTokenInformation (TokenPrivileges ) , DuplicateTokenEx, SetTokenInf..
Вроде все логично, все апи возвращают ОК, но когда доходит до вызова функции, требующей SE_TCB_PRIV , пишет что ее все же нет.
Re: Можно ли скопировать привилегию с другого процесса?
Здравствуйте, morgot, Вы писали:
M>Есть системный процесс, с привилегией SE_TCB_PRIV (для примера). Могу ли я открыть его и скопировать эту привилегию в токен своего процесса? Примерно реализация такая — OpenProcess, OpenProcessToken, GetTokenInformation (TokenPrivileges ) , DuplicateTokenEx, SetTokenInf.. M>Вроде все логично, все апи возвращают ОК, но когда доходит до вызова функции, требующей SE_TCB_PRIV , пишет что ее все же нет.
Нельзя добавлять в токен привилегии, которых в нем изначально не было.
Если есть права на открытие процесса и на получение его токена, то можно сделать DuplicateTokenEx и далее ImpersonateLoggedOnUser под этим токеном.
И уже под имперсонацией пытаться делать задуманное, ну т.е. работая от имени процесса, токен которого мы получили. Такой способ сработает, но
потребуется привилегия "SE_IMPERSONATE_NAME", которая только у администраторов и служб, если не изменяет память.