DELPHI 中如何提公升程序令牌

2021-05-21 22:28:14 字數 2289 閱讀 6791

**delphi 中如何提公升程序令牌

近一段時間在用delphi寫個程式,當我寫到乙個結束其他程序的模組的時候有時不成功,那是因為其他程序,如病毒程序的許可權高,通過常規的結束程序的函式行不通,要首先提高自身程式的許可權,再結束其他程序

在網上也看到了一些提公升程序令牌的函式但都不怎麼好用,最後我還是從乙個黑客後門程式的源**中提取出了乙個好的提公升程序令牌的函式,不敢獨享,跟大家分享下

頭部**入:tlhelp32

//提公升程序許可權為debug許可權

procedure setprivilege;

varoldtokenprivileges, tokenprivileges: ttokenprivileges;

returnlength: dword;

htoken: thandle;

luid: int64;

begin

openprocesstoken(getcurrentprocess, token_adjust_privileges, htoken);

lookupprivilegevalue(nil, 'sedebugprivilege', luid);

tokenprivileges.privileges[0].luid := luid;

tokenprivileges.privilegecount := 1;

tokenprivileges.privileges[0].attributes := 0;

adjusttokenprivileges(htoken, false, tokenprivileges, sizeof(ttokenprivileges), oldtokenprivileges, returnlength);

oldtokenprivileges.privileges[0].luid := luid;

oldtokenprivileges.privilegecount := 1;

oldtokenprivileges.privileges[0].attributes := tokenprivileges.privileges[0].attributes or se_privilege_enabled;

adjusttokenprivileges(htoken, false, oldtokenprivileges, returnlength, ptokenprivileges(nil)^, returnlength);

end;

用法就不用說了吧,

procedure tform1.formcreate(sender: tobject);

begin

setprivilege;

一句話就把程式提公升為debug許可權了,然後就可以隨便結束其他程序了

function killtask(exefilename: string): integer;

const

process_terminate=$0001;

var

continueloop: bool;

fsnapshothandle: thandle;

fprocessentry32: tprocessentry32;

begin

result := 0;

while integer(continueloop) <> 0 do

begin

if ((uppercase(extractfilename(fprocessentry32.szexefile)) =

uppercase(exefilename))

or (uppercase(fprocessentry32.szexefile) =

uppercase(exefilename))) then

result := integer(terminateprocess(openprocess(

process_terminate, bool(0),

fprocessentry32.th32processid), 0));

continueloop := process32next(fsnapshothandle,

fprocessentry32);

end;

closehandle(fsnapshothandle);

end;

呼叫 函式

killtask ('explorer.exe');

同樣也是一句話就ok了

我自己測試的結果是

我用自己寫的程式結束 系統關鍵程序 winlogon.exe 後,一點 "結束程序"

電腦立刻藍屏重啟了..嘿嘿,效果還不錯

提公升程序令牌 Delphi原始碼

眾所周知,當我們要結束乙個程序時,可以呼叫windows api函式terminateprocess函式。但是,有很多程序依然還是無法結束的,這是因為程序許可權不夠,這時我們可以給程序提公升許可權再k掉k不掉的程序。一般程序獲取了sedebugprivilege許可權後都可以殺掉大部分程序了。提公升...

C 如何提公升程序許可權

getcurrentprocessid 得到當前程序的id openprocesstoken 得到程序的令牌控制代碼 lookupprivilegevalue 查詢程序的許可權 adjusttokenprivileges 修改 要對乙個任意程序 包括系統安全程序和服務程序 進行指定了寫相關的訪問權的...

delphi中如何檢視某個程式在程序中是否已經存在

uses tlhelp32 注意 function findprocess afilename string boolean var hsnapshot thandle 用於獲得程序列表 lppe tprocessentry32 用於查詢程序 found boolean 用於判斷程序遍歷是否完成 b...