¿Cómo ver el contenido de la memoria RAM? [cerrado]
13
¿Hay alguna manera de ver el contenido de la memoria RAM? Desde el primer byte hasta el último. Me gustaría ver dónde están ubicados en la RAM el sistema operativo y todos los procesos que se ejecutan en él. es posible?
Como proceso de usuario en un protegido En el entorno de memoria, solo tiene acceso a la copia del usuario de su espacio de memoria virtual. El espacio de memoria del kernel, el espacio de memoria virtual de otros usuarios y la memoria física no utilizada están protegidos de sus miradas indiscretas. Por otro lado, una instantánea aleatoria en el tiempo de la memoria SDRAM física no significará mucho a menos que conozca las asignaciones de memoria virtual.
sawdust
Memoria de acceso aleatorio de memoria? ¿Así que la tabla de asignación de páginas?
Probablemente estaría mucho más contento con alguna herramienta que muestre cómo se asigna la memoria, en realidad mirando los 1s y los 0s.
Daniel R Hicks
1
fue solo por curiosidad
osta
Respuestas:
7
Podría usar un depurador de kernel, que permitiría el acceso a la memoria "sin procesar", como Softice para Windows . También puede configurar GDB para que actúe como un depurador para el kernel de Linux . Si una máquina virtual es una opción, algún software de virtualización admite guardar el estado de la máquina (incluida la RAM) en el disco, que luego puede ser más analizado . Cabe señalar, sin embargo, que la mayoría de los sistemas operativos "modernos" utilizan asignación de espacio de direcciones al azar (ASLR). El verdadero mapa de memoria física del sistema está deliberadamente fragmentado para ayudar a mitigar varios problemas de seguridad y vulnerabilidades (es decir, apilar / montón desbordamientos de búfer).
Sin embargo, para un programa dado que se ejecuta en un sistema operativo moderno, puede obtener un mapa de memoria lógica para un proceso / subproceso dado, siempre que tenga los símbolos de depuración y el depurador adecuados. Si desea una vista general, si el software / hardware utiliza memoria virtual , la situación se vuelve drásticamente más compleja. Una vez más, si literalmente quieres lo que sólo en la memoria RAM, ver el primer párrafo.
En Windows, se puede acceder al contenido de la memoria física a través de \Device\PhysicalMemory objeto en el Administrador de objetos . Esto requiere acceso al sistema a nivel de kernel, lo que significa que necesitaría instalar un programa, probablemente un controlador en modo kernel, para acceder a este objeto.
En Linux, se puede acceder directamente al contenido de la memoria física como datos binarios leyendo /dev/mem como root. Ver ¿Qué es / dev / mem? y el mem(4) Página de manual para más detalles.
No estoy seguro de por qué necesita determinar dónde se ubican el sistema operativo y los procesos en la memoria física, aunque ...
En Windows, puede, de hecho, abrir \Device\PhysicalMemory (equivalente a /dev/kmem ), como RAMMap y PhysMem Los servicios públicos hacen.
grawity
1
Ya no. A partir de Server 2003 y en todas las versiones posteriores, el \DevicePhysicalMemory objeto no se puede abrir desde el modo de usuario. RAMmap y la mayoría de las otras herramientas de sysinternals incluyen un controlador de modo kernel para hacer esa parte de su trabajo.
Respuestas:
Podría usar un depurador de kernel, que permitiría el acceso a la memoria "sin procesar", como Softice para Windows . También puede configurar GDB para que actúe como un depurador para el kernel de Linux . Si una máquina virtual es una opción, algún software de virtualización admite guardar el estado de la máquina (incluida la RAM) en el disco, que luego puede ser más analizado . Cabe señalar, sin embargo, que la mayoría de los sistemas operativos "modernos" utilizan asignación de espacio de direcciones al azar (ASLR). El verdadero mapa de memoria física del sistema está deliberadamente fragmentado para ayudar a mitigar varios problemas de seguridad y vulnerabilidades (es decir, apilar / montón desbordamientos de búfer).
Sin embargo, para un programa dado que se ejecuta en un sistema operativo moderno, puede obtener un mapa de memoria lógica para un proceso / subproceso dado, siempre que tenga los símbolos de depuración y el depurador adecuados. Si desea una vista general, si el software / hardware utiliza memoria virtual , la situación se vuelve drásticamente más compleja. Una vez más, si literalmente quieres lo que sólo en la memoria RAM, ver el primer párrafo.
fuente
En Windows, se puede acceder al contenido de la memoria física a través de
\Device\PhysicalMemory
objeto en el Administrador de objetos . Esto requiere acceso al sistema a nivel de kernel, lo que significa que necesitaría instalar un programa, probablemente un controlador en modo kernel, para acceder a este objeto.En Linux, se puede acceder directamente al contenido de la memoria física como datos binarios leyendo
/dev/mem
comoroot
. Ver ¿Qué es / dev / mem? y elmem(4)
Página de manual para más detalles.No estoy seguro de por qué necesita determinar dónde se ubican el sistema operativo y los procesos en la memoria física, aunque ...
fuente
\Device\PhysicalMemory
(equivalente a/dev/kmem
), como RAMMap y PhysMem Los servicios públicos hacen.\DevicePhysicalMemory
objeto no se puede abrir desde el modo de usuario. RAMmap y la mayoría de las otras herramientas de sysinternals incluyen un controlador de modo kernel para hacer esa parte de su trabajo.