Используя шестнадцатеричный редактор HxDen, вы можете читать (и редактировать) байты на жестком диске или USB-ключ или RAM. То есть, можно прочитать/изменить первый байт на жестком диске.
Я понимаю, как читать байты из файла с помощью C++, но мне было интересно, как это можно сделать для жесткого диска.
Чтобы сделать это простым, учитывая положительное целое число n, как я могу прочитать номер байта n на жестком диске с помощью C++? (Я хотел бы сделать C++, но если есть более простой способ, я хотел бы услышать об этом.)
Я использую MinGW для Windows 7, если это имеет значение.
Он задокументирован в статье библиотеки MSDN для CreateFile, раздел "Физические диски и тома". Этот код хорошо работал для прямого чтения диска C:
HANDLE hdisk = CreateFile(L"\\\\.\\C:",
GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
nullptr,
OPEN_EXISTING,
0, NULL);
if (hdisk == INVALID_HANDLE_VALUE) {
int err = GetLastError();
// report error...
return -err;
}
LARGE_INTEGER position = { 0 };
BOOL ok = SetFilePointerEx(hdisk, position, nullptr, FILE_BEGIN);
assert(ok);
BYTE buf[65536];
DWORD read;
ok = ReadFile(hdisk, buf, 65536, &read, nullptr);
assert(ok);
// etc..
Необходимы привилегии администратора, вы должны запустить вашу программу, повышенную на Win7, или вы получите сообщение об ошибке 5 (Access denied).