В C или С++ (windows), как вы читаете ОЗУ, предоставляя физический (а не виртуальный) адрес? Это означает, что без перехода через систему виртуальной памяти (таблицы mmu) и быть конкретным для одного процесса.
Я уже знаю API ReadProcessMemory
, который читается из ram (используется большинством тренеров), но он предназначен только для определенного процесса.
Я искал в MSDN и обнаружил, что Device\PhysicalMemory, похоже, дает такую возможность, но я не нашел практического примера, и эта функция, похоже, были отключены с помощью пакетов обновления Windows (чтобы устранить некоторую уязвимость).
Я знаю, что это возможно, потому что WinHex делает это (если вы выберете "tools" > "open ram" > "физическая память" ). Затем он отобразит содержимое ОЗУ с 0x00000000 в ваш_ram_size, как при открытии традиционного файла. Для этого требуются права администратора, но нет драйвера для установки (что означает, что WinHex делает это из пользовательского режима).
EDIT: добавлена информация о os.