Como você lê diretamente da memória física?

Em C ou C ++ (windows), como você lê a RAM fornecendo um endereço físico (não virtual)? Isso significa que você não precisa passar pelo sistema de memória virtual (tabelas mmu) e ser específico para um process

Já conheço a APIReadProcessMemory, que lê do ram (usado pela maioria dos treinadores), mas é apenas para um processo específico.

Procurei no MSDN e descobri queDevice \ PhysicalMemory parece oferecer essa possibilidade, mas não encontrei nenhum exemplo prático e esse recurso parece ter sido desativado pelos service packs do Windows (para corrigir alguma vulnerabilidade

Eu sei que é possível fazer isso porque o WinHex faz isso (se você escolher "ferramentas"> "abrir memória ram"> "memória física"). Em seguida, ele exibirá o conteúdo da RAM de 0x00000000 para o seu_ram_size, exatamente como quando você abre um arquivo tradicional. Requer direitos de administrador, mas não há driver para instalar (o que significa que o WinHex faz isso no modo de usuário

EDIT: informações adicionais sobre os.

questionAnswers(7)

yourAnswerToTheQuestion