¿Cómo se lee directamente de la memoria física?

En C o C ++ (Windows), ¿cómo se lee la RAM dando una dirección física (no virtual)? Eso significa sin pasar por el sistema de memoria virtual (tablas mmu) y ser específico para un proceso.

Ya conozco la APIReadProcessMemory, que lee de ram (utilizado por la mayoría de los entrenadores) pero es solo para un proceso específico.

Busqué en MSDN y encontré queDevice \ PhysicalMemory parece dar esa posibilidad, pero no encontré ningún ejemplo práctico y esta característica parece haber sido desactivada por los paquetes de servicios de Windows (para corregir alguna vulnerabilidad).

Sé que es posible hacerlo porque WinHex lo hace (si elige "herramientas"> "abrir ram"> "memoria física"). Luego mostrará el contenido de RAM de 0x00000000 a your_ram_size al igual que cuando abre un archivo tradicional. Requiere derechos de administrador, pero no hay que instalar ningún controlador (lo que significa que WinHex lo hace desde el modo de usuario).

EDIT: se agregó información sobre os.

Respuestas a la pregunta(14)

Su respuesta a la pregunta