2014-11-04 2 views
3

Я читал о реализации ОАКА на MSDN: http://technet.microsoft.com/en-us/magazine/2007.06.uac.aspxCreateProcessAsUser - создать процесс с другим родителем?

наткнулся этой интересная линия:

Хотя АИС технически родитель возвышенного процесса, АИС использует новую поддержку в CreateProcessAsUser API, что устанавливает идентификатор родительского процесса процесса в процесс процесса, который изначально запустил (см. рис. 13).

Вот страница MSDN для CreateProcessAsUser:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682429(v=vs.85).aspx

BOOL WINAPI CreateProcessAsUser(
    _In_opt_  HANDLE hToken, 
    _In_opt_  LPCTSTR lpApplicationName, 
    _Inout_opt_ LPTSTR lpCommandLine, 
    _In_opt_  LPSECURITY_ATTRIBUTES lpProcessAttributes, 
    _In_opt_  LPSECURITY_ATTRIBUTES lpThreadAttributes, 
    _In_   BOOL bInheritHandles, 
    _In_   DWORD dwCreationFlags, 
    _In_opt_  LPVOID lpEnvironment, 
    _In_opt_  LPCTSTR lpCurrentDirectory, 
    _In_   LPSTARTUPINFO lpStartupInfo, 
    _Out_  LPPROCESS_INFORMATION lpProcessInformation 
); 

Exert говорит, что мы можем создать процесс и установить другой родитель, используя параметры в API. Я не уверен, как это сделать? Нужно ли мне копать в токен?

ответ

2

Эта функция задокументирована в записях MSDN для функций InitializeProcThreadAttributeList и UpdateProcThreadAttribute.

В частности, см PROC_THREAD_ATTRIBUTE_PARENT_PROCESS атрибута:

Параметр lpValue является указателем на рукоять к процессу, чтобы использовать вместо вызывающего процесса в качестве родителя для процесса создания. Процесс использования должен иметь право доступа PROCESS_CREATE_PROCESS.

Смежные вопросы