Como ver o conteúdo da memória RAM? [fechadas]

14

Existe alguma maneira de ver o conteúdo da memória RAM? Desde o primeiro byte até o último. Eu gostaria de ver onde o sistema operacional e todos os processos em execução nele estão localizados na RAM. Isso é possível?

osta
fonte
1
Como processo do usuário em um ambiente de memória protegido , você só tem acesso à cópia do usuário do seu espaço de memória virtual. O espaço de memória do kernel, o espaço de memória virtual de outros usuários e a memória física não utilizada são todos protegidos de seus olhares indiscretos. Por outro lado, um instantâneo aleatório no tempo da SDRAM física não significará muito, a menos que você conheça os mapeamentos de memória virtual.
sawdust
Memória de acesso aleatório? Então, a tabela de alocação de página?
ta.speot.is
O que exatamente você está tentando realizar? meta.stackexchange.com/questions/66377/what-is-the-xy-problem
bwDraco
Você provavelmente ficaria muito mais feliz com alguma ferramenta que mostra como a memória é alocada, em comparação com a observação dos 1s e 0s.
Daniel R Hicks
1
que era apenas por curiosidade
osta

Respostas:

8

Você pode usar um depurador do kernel, o que permitiria o acesso à memória "bruto", como o SoftICE for Windows . Você também pode configurar o GDB para atuar como um depurador para o kernel do Linux . Se uma máquina virtual for uma opção, alguns softwares de virtualização suportam salvar o estado da máquina (incluindo RAM) em disco, que pode ser analisado posteriormente . Deve-se notar, no entanto, que a maioria dos sistemas operacionais "modernos" usa a ASLR ( Randomização do Layout do Espaço de Endereço ). O verdadeiro mapa de memória física do sistema é propositadamente fragmentado para ajudar a mitigar vários problemas e explorações de segurança (ou seja, estouros de buffer de pilha / heap ).

No entanto, para um determinado programa em execução em um sistema operacional moderno, você pode obter um mapa de memória lógica para um determinado processo / encadeamento - desde que possua os símbolos e o depurador apropriados. Se você deseja uma visão geral, se o software / hardware usa memória virtual , a situação se torna drasticamente mais complexa. Novamente, porém, se você quiser, literalmente, o que é apenas sobre a RAM, consulte o primeiro parágrafo.

Avanço
fonte
8

No Windows, o conteúdo da memória física pode ser acessado através do \Device\PhysicalMemoryobjeto no Gerenciador de Objetos . Isso requer acesso ao sistema no nível do kernel, o que significa que você precisaria instalar um programa, provavelmente um driver no modo kernel, para acessar esse objeto.

No Linux, o conteúdo da memória física pode ser acessado diretamente como dados binários, lendo /dev/memcomo root. Consulte O que é / dev / mem? e a mem(4)página de manual para mais detalhes.

No entanto, não sei por que você precisa determinar onde o sistema operacional e os processos estão localizados na memória física ...

bwDraco
fonte
3
No Windows, você pode, na verdade, aberto \Device\PhysicalMemory(o equivalente a /dev/kmem), como RAMMap e PhysMem utilitários fazer.
grawity
1
Não mais. No Server 2003 e em todas as versões posteriores, o \DevicePhysicalMemoryobjeto não pode ser aberto no modo de usuário. O RAMmap e a maioria das outras ferramentas sysinternals incluem um driver no modo kernel para executar essa parte do trabalho.
21715 Jamie Hanrahan #