Использование шестнадцатеричного редактора HxDen можно прочитать (и отредактировать) байты на жестком диске, USB-ключе или в оперативной памяти. То есть можно прочитать / изменить первый байт на жестком диске.
Я понимаю как читать байты из файла, используя 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 (доступ запрещен).
Других решений пока нет …