Explorando el contenido de la RAM

Explorando el contenido de la RAM

estoy usando unRedistribuirBase de datos y le gustaría explorar el contenido de la RAM que utiliza la aplicación.

Siento que la explicación de por qué quiero hacer esto tendrá más sentido que la pregunta que haría.

Redis es un almacén de valores clave simple que almacena datos binarios. Creo que sería un buen lugar para explorar cosas como la codificación y sería interesante para mí hacer cosas como hojear la RAM en busca de conjuntos binarios de datos, hacer cosas como buscar patrones simples; tal vez explore la idea de escribir un lenguaje de consulta infantil que busque en la RAM.

Se me ocurrió esta idea después de leer el capítulo enSICPsobre lenguajes de consulta.

¿Alguna idea sobre por dónde empezar? Inicialmente, quiero preguntarle al sistema "Dame el espacio de direcciones en el que se ejecuta esta aplicación, por favor".

Respuesta1

cat /proc/[pid]/mapssegún las páginas de manual de proc.

Parece lo que quieres. Si necesita el pid, consígalo de ps o cualquier otra herramienta.

Eso aborda la búsqueda del espacio de direcciones en uso. Uno de los becarios de defcon implementó el año pasado createremotethread en Linux. Entonces podrías hacer eso... y luego leer la memoria arbitraria de esa manera.

Crédito apsusipor señalar que pmap -x [pid]es más fácil de leer.

Respuesta2

Puede utilizar gdb para acceder a la memoria de un proceso.

Además, debería echar un vistazo al sistema de archivos "/proc": contiene pseudoarchivos para cada proceso; algunos de ellos pueden contener información interesante

Respuesta3

Utilice un depurador, para eso están.

Si quieres rodar el tuyo, todo pasa.ptrace.

Puede ver el mapa de memoria de un proceso (la tabla de contenidos de la memoria) /proc/$pid/mapsy leer todo el contenido de la memoria /proc/$pid/mem. No puedes simplemente abrir ese último archivo normalmente, mira¿Cómo leo desde /proc/$pid/mem en Linux?

información relacionada