Explorer le contenu de la RAM

12

J'utilise une base de données redis et j'aimerais explorer le contenu de la RAM que l'application utilise.

Je pense que l'explication de la raison pour laquelle je veux faire cela aura plus de sens que la question que je poserais.

Redis est un simple magasin de valeurs clés qui stocke des données binaires. Je pense que ce serait un bon endroit pour explorer des choses comme l'encodage et il serait intéressant pour moi de faire des choses comme parcourir la RAM à la recherche d'ensembles de données binaires, faire des choses comme chercher des motifs simples; peut-être explorer l'idée d'écrire un langage de requête pour bébé qui a cherché dans la RAM.

J'avais eu cette idée après avoir lu le chapitre du SICP sur les langages de requête.

Des réflexions sur où commencer? Au départ, je veux demander au système "Donnez-moi l'espace d'adressage dans lequel cette application s'exécute, s'il vous plaît".

MageProspero
la source

Réponses:

7

Vous pouvez utiliser gdb pour accéder à la mémoire d'un processus.

De plus, vous devriez jeter un œil au système de fichiers "/ proc" - il contient des pseudo-fichiers pour chaque processus; certains d'entre eux peuvent contenir des informations intéressantes

jakob
la source
7

cat /proc/[pid]/maps selon les pages de manuel proc.

On dirait ce que tu veux. Si vous avez besoin du pid, récupérez-le sur ps ou tout autre outil.

Cela permet de trouver l'espace d'adressage utilisé. L'an dernier, l'un des boursiers de defcon a implémenté createremotethread sur linux. Vous pouvez donc faire cela ... puis lire la mémoire arbitraire de cette façon.

Crédit psusi de remarquer que pmap -x [pid]plus facile à lire.

RobotHumains
la source
3
Notez que pmapformate ces informations afin qu'elles soient plus lisibles par l'homme.
psusi
6

Utilisez un débogueur, c'est à ça qu'ils servent.

Si vous voulez rouler le vôtre, tout se passe ptrace.

Vous pouvez voir la carte mémoire d'un processus (la table des matières de la mémoire) dans /proc/$pid/mapset lire l'intégralité du contenu de la mémoire /proc/$pid/mem. Vous ne pouvez pas simplement ouvrir ce dernier fichier normalement, voir Comment lire à partir de / proc / $ pid / mem sous Linux?

Gilles 'SO- arrête d'être méchant'
la source
1
Vous avez été incroyablement utile avec certaines de mes questions. Suggérez-vous des livres à lire généralement liés au système d'exploitation Linux ou des articles Web particulièrement intéressants?
MageProspero