Читать байты жесткого диска

Использование шестнадцатеричного редактора HxDen можно прочитать (и отредактировать) байты на жестком диске, USB-ключе или в оперативной памяти. То есть можно прочитать / изменить первый байт на жестком диске.

Я понимаю как читать байты из файла, используя C ++, но мне было интересно, как можно сделать это для жесткого диска.

Для простоты, учитывая положительное целое число n, как я могу прочитать номер байта n на жестком диске, используя C ++? (Я хотел бы сделать C ++, но если есть более простой способ, я хотел бы услышать об этом.)

я использую MinGW на Windows 7, если это имеет значение.

0

Решение

Это задокументировано в статье библиотеки 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 (доступ запрещен).

8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]