Bonjour,
Je cherche à accéder à la mémoire d'un processus, c'est à dire au fichier /proc/PID/mem. Après quelques recherches, il m'a semblé comprendre que l'accès au contenu de ce fichier était assez restreint, mais je n'arrive même pas lire /proc/self/mem quelque soit le programme! Quels sont les règles qui autorisent l'accès à ce fichier?
D'autre part, je crois aussi que pour pouvoir lire le fichier, on ne peut se contenter d'un open() puis d'un read() : il faut aussi choisr une zone de mémiore lisible avec lseek(). Existe-t-il des commandes pouvant faire ça depuis un shell?
# Re: Accéder à la mémoire d'un processus
Posté par Boa Treize (site web personnel) . Évalué à 1.
# Re: Accéder à la mémoire d'un processus
Posté par furai (site web personnel) . Évalué à 1.
Sisi
open (2) te donne un descripteur de fichier
read (2) te permet de le lire,
et enfin lseek (2) te permet de te balader dans ton fichier un peu comme tu veux
Pour le shell, je ne crois pas.
[^] # Re: Accéder à la mémoire d'un processus
Posté par calandoa . Évalué à 1.
08048000-08089000 r-xp 00000000 03:01 104219 /bin/tcsh
08089000-0808c000 rw-p 00041000 03:01 104219 /bin/tcsh
0808c000-08146000 rwxp 00000000 00:00 0
40000000-40015000 r-xp 00000000 03:01 61874 /lib/ld-2.3.2.so
...
Donc, d'après ce que j'ai compris, on doit faire un lseek (08048000) pour pouvoir lire le début de la mémoire avec read()... et je cherche donc un moyen de le lire avec une commande accessible depuis un shell.
-------
Bon en fait je viens à l'instant de faire un petit essai avec dd qui a reussi :
dd if=/proc/self/mem ibs=1 skip=134512640 count=10
(avec l'offset skip correspondant à une adresse de maps en décimal) ça marche mais c'est assez relou à utiliser... le problème restant est que dd ne peut lire que son propre espace mémoire... comment lire celui d'un autre process?
[^] # Re: Accéder à la mémoire d'un processus
Posté par Matthieu Moy (site web personnel) . Évalué à 1.
1) En faisant explicitement de la mémoire partagée
2) En étant root
Heureusement que c'est pas possible autrement !!!
[^] # Re: Accéder à la mémoire d'un processus
Posté par calandoa . Évalué à 2.
root@tech04 ~# dd if=/proc/4241/mem ibs=1 skip=134512640 count=10
dd: reading `/proc/4241/mem': No such process
Et un débugger, il fait comment pour lire la mémoire du prog qu'il lance?
[^] # Re: Accéder à la mémoire d'un processus
Posté par Matthieu Moy (site web personnel) . Évalué à 1.
man ptrace
en sait plus que moi sur le sujet.
[^] # Re: Accéder à la mémoire d'un processus
Posté par Jonathan ILIAS-PILLET (site web personnel) . Évalué à 1.
# Re: Accéder à la mémoire d'un processus
Posté par pappy (site web personnel) . Évalué à 3.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.