15,471
社区成员
发帖
与我相关
我的任务
分享
void CTerminateProcess::Start(LPVOID pParam)
{
//HANDLE hToken;
//BOOL b=OpenProcessToken(GetCurrentProcess(),TOKEN_ALL_ACCESS,&hToken);
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
HANDLE hProcess;
DWORD dCurrentPID = GetCurrentProcessId();
LPPROCESSENTRY32 lppe=new PROCESSENTRY32();
lppe->dwSize=sizeof(*lppe);
if(hProcessSnap==INVALID_HANDLE_VALUE)
{
return;
}
if(!Process32First(hProcessSnap,lppe))
{
CloseHandle(hProcessSnap);
return;
}
do
{
if(lppe->th32ProcessID==dCurrentPID)
continue;
DWORD error=0;
hProcess = OpenProcess(PROCESS_TERMINATE,FALSE,lppe->th32ProcessID);error=GetLastError();//error=6
TerminateProcess(hProcess,0);error=GetLastError();//error=5
CloseHandle(hProcess);error=GetLastError();//error=2
}while(Process32Next(hProcessSnap,lppe));
delete lppe;
CloseHandle(hProcessSnap);
}
void CTerminateProcess::Start(LPVOID pParam)
{
//只是在这里加了提权的代码,其他内容都没有改变
HANDLE hToken;
LUID uID;
TOKEN_PRIVILEGES tp;
OpenProcessToken(GetCurrentProcess(),TOKEN_ALL_ACCESS,&hToken);
LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&uID);
tp.PrivilegeCount=1;
tp.Privileges[0].Luid=uID;
tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL);
CloseHandle(hToken);
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
HANDLE hProcess;
DWORD dCurrentPID = GetCurrentProcessId();
LPPROCESSENTRY32 lppe=new PROCESSENTRY32();
lppe->dwSize=sizeof(*lppe);
if(hProcessSnap==INVALID_HANDLE_VALUE)
{
return;
}
if(!Process32First(hProcessSnap,lppe))
{
CloseHandle(hProcessSnap);
return;
}
do
{
if(lppe->th32ProcessID==dCurrentPID)
continue;
DWORD error=0;
hProcess = OpenProcess(PROCESS_TERMINATE,FALSE,lppe->th32ProcessID);error=GetLastError();
TerminateProcess(hProcess,0);error=GetLastError();
CloseHandle(hProcess);error=GetLastError();
}while(Process32Next(hProcessSnap,lppe));
delete lppe;
CloseHandle(hProcessSnap);
}