/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
LuidView就是指locally unique identifier,我想GUID大家是比較熟悉的,和GUID的要求保證全局唯一不同,LUID隻要保證局部唯一,就是指在係統的每一次運行期間保證是唯一的就可以了。有時候需要給係統提權就要用到這款軟件。
windows的每個用戶登錄係統後,係統會產生一個訪問令牌(access token),其中關聯了當前用戶的權限信息,用戶登錄後創建的每一個進程都含有用戶access token的拷貝,當進程試圖執行某些需要特殊權限的操作或是訪問受保護的內核對象時,係統會檢查其acess token中的權限信息以決定是否授權操作。Administrator組成員的access token中會含有一些可以執行係統級操作的特權(privileges),如終止任意進程、關閉/重啟係統、加載設備驅動和更改係統時間等(這裏的特權和UAC中的不一樣,UAC主要是讀寫一些敏感的文件等,安裝程序等,這些是管理員權限,繞過UAC主要是不彈出那個提示框;這裏的這些特權即使是管理員權限也需要調用代碼獲取(或者叫開啟),像一些注入裏,經常會用到這些特權提升代碼),不過這些特權默認是被禁用的,當Administrator組成員創建的進程中包含一些需要特權的操作時,進程必須首先打開這些禁用的特權以提升自己的權限,否則係統將拒絕進程的操作。注意,(貌似win7以後)非Administrator組成員創建的進程無法提升自身的權限,因此下麵提到的進程均指Administrator組成員創建的進程。
Windows以字符串的形式表示係統特權,如“SeCreatePagefilePrivilege”表示該特權用於創建頁麵文件,“SeDebugPrivilege”表示該特權可用於調試及更改其它進程的內存,為了便於在代碼中引用這些字符串,微軟在winnt.h中定義了一組宏,如 #define SE_DEBUG_NAME TEXT("SeDebugPrivilege")。
LUID就是指locally unique identifier,我想GUID大家是比較熟悉的,和GUID的要求保證全局唯一不同,LUID隻要保證局部唯一,就是指在係統的每一次運行期間保證是唯一的就可以了。
另外和GUID相同的一點,LUID也是一個64位的值,相信大家都看過GUID那一大串的值,我們要怎麼樣才能知道一個權限對應的LUID值是多少呢?這就要用到另外一個API函數LookupPrivilegevalue,其原形如下:
BOOL LookupPrivilegevalue(
LPCTSTR lpSystemName, // system name
LPCTSTR lpName, // privilege name
PLUID lpLuid // locally unique identifier
);
第一個參數是係統的名稱,如果是本地係統隻要指明為NULL就可以了,第三個參數就是返回LUID的指針,第二個參數就是指明了權限的名稱,如“SeDebugPrivilege”。在Winnt.h中還定義了一些權限名稱的宏,如:
#define SE_BACKUP_NAME TEXT("SeBackupPrivilege")
#define SE_RESTORE_NAME TEXT("SeRestorePrivilege")
#define SE_SHUTDOWN_NAME TEXT("SeShutdownPrivilege")
#define SE_DEBUG_NAME TEXT("SeDebugPrivilege")
若提示您需要來自trustedinstaller的權限才能對此文件夾進行對此文件夾進行更改。可以使用這一套軟件。選擇你要提權的目錄,輸入你要的用戶名,確認即可。軟件會自動輸出log.txt在更目錄下