Wednesday, June 9, 2010

Process的Integrity Level設定

Windows中有一個Integrity Level設計,不同Level的Process之間的溝通會有所限制
設定方法是先取得一個Process的Token(可以直接從自己的Process用DuplicateTokenEx複製一個來用),透過SetTokenInformation的TokenIntegrityLevel來進行設定,使用CreateProcessAsUser使用這個Token建立Process

值得一提的是,TOKEN_MANDATORY_LABEL結構中SID_AND_ATTRIBUTES的SID要被指定為Integrity Level SID,以Windows Vista和Windows 7來說

  1. System Level:S-1-16-16384
  2. High Level:S-1-16-12288
  3. Medium Level:S-1-16-8192
  4. Low Level:S-1-16-4096
  5. Untrusted Level:S-1-16-0
一個經過Integrity Level設定的Process,被指定為Low Level

相關文件:http://msdn.microsoft.com/en-us/library/bb625960.aspx
PS:

文件中的Starting a process at low integrity範例,它的Low Integrity Level SID


WCHAR wszIntegritySid[20] = L"S-1-16-1024";


似乎是錯誤的,正確應為S-1-16-4096

No comments:

Post a Comment