大 中 小
//
// FindProcess
// 這個函數唯一的參數是你指定的程序名,如:你的目标程序
// 是 "Notepad.exe",傳回值是該程序的ID,失敗傳回0
DWORD FindProcess(char *strProcessName)
{
DWORD aProcesses[1024], cbNeeded, cbMNeeded;
HMODULE hMods[1024];
HANDLE hProcess;
char szProcessName[MAX_PATH];
if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) ) return 0;
for(int i=0; i< (int) (cbNeeded / sizeof(DWORD)); i++)
{
//_tprintf(_T("%d\t"), aProcesses[i]);
hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, aProcesses[i]);
EnumProcessModules(hProcess, hMods, sizeof(hMods), &cbMNeeded);
GetModuleFileNameEx( hProcess, hMods[0], szProcessName,sizeof(szProcessName));
if(strstr(szProcessName, strProcessName))
{
//_tprintf(_T("%s;"), szProcessName);
return(aProcesses[i]);
}
//_tprintf(_T("\n"));
}
return 0;
}
// Function: ErrorForce
// 此函數中用上面的 FindProcess 函數獲得你的目标程序的ID
// 用WIN API OpenPorcess 獲得此程序的句柄,再以TerminateProcess
// 強制結束這個程序
VOID KillProcess()
// When the all operation fail this function terminate the "winlogon" Process for force exit the system.
HANDLE hYourTargetProcess = OpenProcess(PPROCESS_TERMINATE|ROCESS_QUERY_INFORMATION | // Required by Alpha
PROCESS_CREATE_THREAD | // For CreateRemoteThread
PROCESS_VM_OPERATION | // For VirtualAllocEx/VirtualFreeEx
PROCESS_VM_WRITE, // For WriteProcessMemory
FALSE, FindProcess("YourTargetProcess.exe"));
if(hYourTargetProcess == NULL)
return;
TerminateProcess(hYourTargetProcess, 0);
return;
// GetDebugPriv
// 在 Windows NT/2000/XP 中可能因權限不夠導緻以上函數失敗
// 如以 System 權限運作的系統程序,服務程序
// 用本函數取得 debug 權限即可,Winlogon.exe 都可以終止哦 :)
BOOL GetDebugPriv()
HANDLE hToken;
LUID sedebugnamue;
TOKEN_PRIVILEGES tkp;
if ( ! OpenProcessToken( GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) )
return FALSE;
if ( ! LookupPrivilegue( NULL, SE_DEBUG_NAME, &sedebugnamue ) )
{
CloseHandle( hToken );
}
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = sedebugnamue;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if (!AdjustTokenPrivileges( hToken, FALSE, &tkp, sizeof tkp, NULL, NULL ) )
CloseHandle( hToken );
return FALSE;
return TRUE;
以上三個函數使用前先#include "Psapi.h"
然後SETTING->LINK 裡添加Psapi.lib即可。。。。。