Как вы читаете прямо из физической памяти?

В C или C ++ (Windows), как вы читаете RAM, давая физический (не виртуальный) адрес? Это означает, что не нужно проходить через систему виртуальной памяти (таблицы MMU) и быть специфичным для одного процесса.

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

Я искал на MSDN и обнаружил, чтоDevice \ PhysicalMemory кажется, дает такую возможность, но я не нашел практического примера, и эта функция, кажется, была отключена пакетами обновления Windows (чтобы исправить некоторые уязвимости).

Я знаю, что это можно сделать, потому что WinHex делает это (если вы выбираете «tools»> «open ram»> «физической памяти»). Затем он будет отображать содержимое оперативной памяти от 0x00000000 до your_ram_size, как при открытии традиционного файла. Это требует прав администратора, но нет драйвера для установки (что означает, что WinHex делает это из пользовательского режима).

РЕДАКТИРОВАТЬ: добавлена информация о ОС.

Ответы на вопрос(7)

Ваш ответ на вопрос