2014-11-04 76 views
3

我在讀有關UAC的MSDN上實現: http://technet.microsoft.com/en-us/magazine/2007.06.uac.aspxCreateProcessAsUser - 使用不同的父級創建進程?

在這個有趣的線上偶然:

儘管AIS在技術上的提升進程的父,AIS 使用CreateProcessAsUser API中新的支持,將 進程的父進程ID設置爲最初的 啓動它的進程的ID(請參見圖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 
); 

的使出說,我們可以創建一個進程,並通過API使用選項設置不同的父母。我不知道如何做到這一點?我需要挖掘令牌嗎?

回答

2

此功能記錄在InitializeProcThreadAttributeListUpdateProcThreadAttribute函數的MSDN條目中。

特別地看到PROC_THREAD_ATTRIBUTE_PARENT_PROCESS屬性:

的lpValue參數是一個指向句柄的處理代替使用調用進程的作爲父爲正在創建的過程。要使用的進程必須具有PROCESS_CREATE_PROCESS訪問權限。