Мне удалось решить эту проблему самостоятельно, спасибо всем, кто смотрел на этот вопрос.
Итак, как я уже упоминал выше - токен принадлежит процессу, который запущен в сеансе 0 ...
Итак, что я сделал ... ищется токен процесса, который не запущен в сеансе 0., когда вы принимаете его идентификатор процесса в качестве параметра для OpenProcessToken. чем CreateProcessAsUser создаст процесс в том же сеансе (и, вероятно, с теми же cridentals, что и выбранный вами процесс);
Проблема заключалась в том, что я не мог получить какие-либо подробности о большинстве процессов, использующих функцию: QueryFullProcessImageName - потому что в ней есть ошибка, и она не работает с процессами, созданными из пути, содержащего пробелы (например, C: \ Program files, например), и другая проблема с этой функцией, я полагаю, заключается в том, что, поскольку я запускаю исходный процесс с использованием пользовательских cridentals, я не могу получить доступ к информации о процессе, который выполняется с использованием учетной записи Local-system. что довольно плохо, потому что я хотел взять winlogon.exe в качестве своего процесса (потому что он указывает на новый открытый сеанс).
также, чтобы добиться успеха в этом трюке, вы должны немного поиграть с безопасностью системы, чтобы позволить процессу запрашивать повышенную безопасность: я выбрал для повышения уровня безопасности: SeDebugPrivilege - для поиска информации о запущенные процессы SeAssignPrimaryTokenPrivilege - для запуска нового процесса с токеном, извлеченным из процесса сеанса пользователя (например, explorer.exe) SeCreateTokenPrivilege - я не знаю, нужен ли он, но я все равно сделал это, потому что это звучит связанно.
для успешного повышения этих привилегий - вы должны добавить пользователя, который запускает процесс, к соответствующим пользователям во всех этих привилегиях в run-> gpedit.msc или run-> secpol.msc (в разделе Политика локального компьютера \ Конфигурация компьютера \ Параметры Windows \ Параметры безопасности \ LocalPolicies \ Назначение прав пользователей)
добавьте для своей учетной записи следующие права (совместимые с предыдущими привилегиями):
Создание объекта токена
Отладка программ
Замена токена уровня процесса
и все! :) Работает Отлично! Кстати, вы могли бы захотеть отключить все вещи UAC ... я не знаю, связано это или нет, но это сделало работу с 2008 менее болезненной - больше никаких раздражающих всплывающих окон.
person
Itay Levin
schedule
10.02.2010