對當前程序進行提公升許可權

2021-08-26 16:41:24 字數 1681 閱讀 7348

對於程序提公升許可權主要用到下面三個api

openprocesstoken();開啟許可權令牌

lookupprivilegevalue();檢索乙個唯一的本地識別符號 luid

adjusttokenprivileges();調整令牌特權

bool openprocesstoken(

handle processhandle, //要修改訪問許可權的程序控制代碼

dword desiredaccess, //指定你要進行的操作型別

phandle tokenhandle //返回的訪問令牌指標

);bool lookupprivilegevalue(

lpctstr lpsystemname, //

表示所要檢視的系統,本地系統直接用null

lpctstr lpname, //

表示所要檢視的特權資訊的名稱

pluid lpluid //

接收所返回的制定特權名稱的資訊);

luid是用來填充如下結構體的

typedef struct _token_privileges token_privileges, *ptoken

bool adjusttokenprivileges(

handletokenhandle,//包含特權的控制代碼

booldisableallprivileges,//禁用所有許可權標誌

ptoken_privilegesnewstate,//新特權資訊的指標(結構體)

dwordbufferlength,//緩衝資料大小,以位元組為單位的previousstate的快取區(sizeof)

ptoken_privilegespreviousstate,//接收被改變特權當前狀態的buffer

pdwordreturnlength //接收previousstate快取區要求的大小

);

看**:

handle tokenhandle;

if(!openprocesstoken(getcurrentprocess(), token_adjust_privileges | token_query, &tokenhandle))

token_privileges t_privileges = ;

if(!lookupprivilegevalue(null, se_shutdown_name, &t_privileges.privileges[0].luid))

t_privileges.privilegecount = 1;

t_privileges.privileges[0].attributes = se_privilege_enabled;

if(!adjusttokenprivileges(tokenhandle, false, &t_privileges, sizeof(token_privileges), null, null))

reparent指定程序到當前程序

作者 李先靜 今 天遇到乙個問題,需要監視某個應用程式的退出事件,並得到它的退出碼。waitpid只能監視子程序,對其它程序沒有效果,怎麼才能reparent乙個 程序呢?我在核心裡找了半天也沒有找到相應的系統呼叫,後來想到偵錯程式都可以,那一定有辦法。偵錯程式是用ptrace實現的,我試了一下,發...

reparent指定程序到當前程序

作者 李先靜 今 天遇到乙個問題,需要監視某個應用程式的退出事件,並得到它的退出碼。waitpid只能監視子程序,對其它程序沒有效果,怎麼才能reparent乙個 程序呢?我在核心裡找了半天也沒有找到相應的系統呼叫,後來想到偵錯程式都可以,那一定有辦法。偵錯程式是用ptrace實現的,我試了一下,發...

獲得當前程序名

用快照取得當前的程序名,下面是測試小例子。include 需要匯入tlhelp32.h moduleentry32 mcurprocessmodule32 mcurprocessmodule32.dwsize sizeof moduleentry32 最好手動初始化,因為會取前4位元組作為長度。ha...