Explorando el contenido de RAM

12

Estoy usando una base de datos redis y me gustaría explorar el contenido de la RAM que está usando 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 simple almacén de valores clave 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 navegar por la RAM en busca de conjuntos de datos binarios, hacer cosas como buscar patrones simples; tal vez explore la idea de escribir un lenguaje de consulta para bebés que haya buscado en la RAM.

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

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

MagoProspero
fuente

Respuestas:

7

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

Además, debe echar un vistazo al sistema de archivos "/ proc", que contiene pseudo archivos para cada proceso; algunos de ellos pueden contener información interesante

jakob
fuente
7

cat /proc/[pid]/maps de acuerdo con las páginas de manual de proc.

Parece lo que quieres. Si necesita el pid, tome eso de ps o cualquier otra herramienta.

Eso aborda encontrar el espacio de direcciones en uso. El año pasado, uno de los miembros de defcon implementó createremotethread en linux. Entonces podrías hacer eso ... luego leer la memoria arbitraria de esa manera.

Gracias a psusi por señalar que pmap -x [pid]es más fácil de leer.

RobotHumanos
fuente
3
Tenga en cuenta que pmapformatea esta información para que sea más legible para los humanos.
psusi
6

Use 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 contenido de la memoria) /proc/$pid/mapsy leer todo el contenido de la memoria /proc/$pid/mem. No puede abrir ese último archivo normalmente, vea ¿Cómo leo desde / proc / $ pid / mem en Linux?

Gilles 'SO- deja de ser malvado'
fuente
1
Has sido increíblemente útil con algunas de mis preguntas. ¿Sugiere algún libro para leer generalmente relacionado con el sistema operativo Linux o artículos web particularmente interesantes?
MageProspero