Comment voir le contenu de la mémoire RAM? [fermé]

14

Existe-t-il un moyen de voir le contenu de la mémoire RAM? Du premier octet au dernier. Je voudrais voir où le système d'exploitation et tous les processus en cours d'exécution se trouvent dans la RAM. Est-ce possible?

osta
la source
1
En tant que processus utilisateur dans un environnement de mémoire protégée , vous n'avez accès qu'à la copie de l'utilisateur de son espace de mémoire virtuelle. L'espace mémoire du noyau, l'espace mémoire virtuel des autres utilisateurs et la mémoire physique inutilisée sont tous protégés de vos regards indiscrets. D'un autre côté, un instantané aléatoire dans le temps de la SDRAM physique ne signifie pas grand-chose sauf si vous connaissez les mappages de mémoire virtuelle.
sciure de bois
Mémoire à accès aléatoire mémoire? Alors la table d'allocation des pages?
ta.speot.is
Qu'essayez-vous exactement d'accomplir? meta.stackexchange.com/questions/66377/what-is-the-xy-problem
bwDraco
Vous seriez probablement beaucoup plus heureux avec un outil qui montre comment la mémoire est allouée, par rapport à la recherche des 1 et des 0.
Daniel R Hicks
1
c'était juste par curiosité
osta

Réponses:

8

Vous pouvez utiliser un débogueur de noyau, qui permettrait un accès mémoire "brut", comme SoftICE pour Windows . Vous pouvez également configurer GDB pour agir comme débogueur pour le noyau Linux . Si une machine virtuelle est une option, certains logiciels de virtualisation prennent en charge l'enregistrement de l'état de la machine (y compris la RAM) sur le disque, qui peut ensuite être analysé plus en détail . Il convient de noter, cependant, que la plupart des systèmes d'exploitation "modernes" utilisent la randomisation de la configuration de l'espace d'adressage (ASLR). La véritable carte de mémoire physique du système est délibérément fragmentée pour aider à atténuer divers problèmes de sécurité et exploits (par exemple débordements de tampon de pile / tas ).

Cependant, pour un programme donné exécuté dans un système d'exploitation moderne, vous pouvez obtenir une carte de mémoire logique pour un processus / thread donné - tant que vous disposez des symboles de débogage et du débogueur appropriés. Si vous voulez une vue d'ensemble, si le logiciel / matériel utilise la mémoire virtuelle , la situation devient drastiquement plus complexe. Encore une fois cependant, si vous voulez littéralement ce qui est juste sur la RAM, consultez le premier paragraphe.

Percée
la source
9

Sous Windows, le contenu de la mémoire physique est accessible via l' \Device\PhysicalMemoryobjet dans le gestionnaire d'objets . Cela nécessite un accès au niveau du noyau au système, ce qui signifie que vous devez installer un programme, très probablement un pilote en mode noyau, pour accéder à cet objet.

Sous Linux, le contenu de la mémoire physique est directement accessible en tant que données binaires en lisant en /dev/memtant que root. Voir Qu'est-ce que / dev / mem? et la mem(4)page de manuel pour plus de détails.

Je ne sais pas pourquoi vous devez déterminer où le système d'exploitation et les processus sont situés dans la mémoire physique, cependant ...

bwDraco
la source
3
Sous Windows, vous pouvez en fait ouvrir \Device\PhysicalMemory(équivalent à /dev/kmem), comme le font les utilitaires RAMMap et PhysMem .
user1686
1
Plus maintenant. À partir de Server 2003 et dans toutes les versions ultérieures, l' \DevicePhysicalMemoryobjet ne peut pas être ouvert à partir du mode utilisateur. RAMmap et la plupart des autres outils sysinternals incluent un pilote en mode noyau pour effectuer cette partie de leur travail.
Jamie Hanrahan