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?
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?
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.
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 ...
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.
Respostas:
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.
fonte
No Windows, o conteúdo da memória física pode ser acessado através do
\Device\PhysicalMemory
objeto 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/mem
comoroot
. Consulte O que é / dev / mem? e amem(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 ...
fonte
\Device\PhysicalMemory
(o equivalente a/dev/kmem
), como RAMMap e PhysMem utilitários fazer.\DevicePhysicalMemory
objeto 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.