Comment accéder à / dev / mem dans OSX?

12

Comment puis-je accéder à un périphérique équivalent / dev / mem (ou / dev / kmem, / dev / pmap) dans OSX?

Pour autant que je sache, il a été supprimé à un moment donné.

Puis-je créer ce nœud manuellement d'une manière ou d'une autre façon de vider la mémoire physique?

Voir:

Kenorb
la source

Réponses:

12

Selon Accès à la mémoire du noyau sur la version x86 de Mac OS X , /dev/memet /dev/kmemont été supprimés lorsque Apple a publié OS X pour les processeurs Intel.

L'article (excellent) explique également comment réactiver les périphériques de mémoire , notamment en utilisant l' kmem=1argument de démarrage du noyau.

Notez que, comme indiqué ci-dessous par neal , dans macOS 10.15 Catalina (et probablement depuis macOS 10.12 Sierra), les paramètres NVRAM ne peuvent être modifiés que lorsque votre Mac est démarré en mode de récupération . Pour entrer en mode de récupération , allumez votre Mac et maintenez immédiatement -R jusqu'à ce que le logo apparaisse, lancez Terminal depuis le menu Utilitaires dans la barre de menu, exécutez:

sudo nvram boot-args="kmem=1"

et redémarrez. Vous devriez voir ces deux appareils:

$ ls -l /dev/*mem
crw-r----- 1 root kmem 3, 1 2014-02-28 22:09 /dev/kmem
crw-r----- 1 root kmem 3, 0 2014-02-28 22:09 /dev/mem

(Dans les versions précédentes de macOS comme OS X Mavericks 10.9.2, vous pouvez réactiver les périphériques de mémoire dans le système d'exploitation, alors lancez simplement Terminal, tapez la commande ci-dessus et redémarrez.)

Si votre Mac ne démarre pas ou si vous rencontrez des problèmes , réinitialisez la NVRAM en appuyant optionPRet en maintenant les touches enfoncées jusqu'à ce que vous entendiez le son de démarrage pour la deuxième fois, comme expliqué dans «Réinitialisation de NVRAM / PRAM» dans KB HT1379 À propos de NVRAM et PRAM .

Si vous souhaitez réinitialiser l'argument, tapez sudo nvram -d boot-argset vérifiez que nvram -p | grep boot-argscela n'imprime aucun résultat.

jaume
la source
1
J'ai essayé cette méthode dans macOS Sierra, mais cela n'a pas fait apparaître les appareils sous /dev.. savez-vous si Apple a fermé cette option et s'il existe une autre alternative pour accéder à cette mémoire en 10.12?
Zohar81
1
À un moment donné, les paramètres nvram ne pouvaient être modifiés que lorsque votre Mac était démarré en mode de récupération. Donc, si vous allumez votre Mac et maintenez immédiatement Cmd-R jusqu'à ce que le logo apparaisse, puis déposez-le sur un terminal à partir de l'interface utilisateur d'installation de récupération et exécutez la commande, cela devrait fonctionner. Hier, cela a fonctionné pour moi sur OS X Catalina.
neal
4

Je pense que je l'ai fait fonctionner sur macOS Sierra! J'ai téléchargé le projet de comex: Kmem Project J'ai compilé le kext, corrigé les permissions puis chargé! En utilisant le terminal, je suis entré /devet j'ai lsmontré les deux memet kmem...

Edit: Si vous téléchargez le projet, vous aurez juste besoin de changer le compilateur dans Xcode pour utiliser la dernière (par exemple ... je ne sais pas si d'autres versions fonctionnent bien ...) Pour un accès rapide aux résultats que j'ai déjà fait un fork du projet de comex qui se compile sur macOS Sierra! Kmem pour Sierra Fork

Encore une fois, c'est le travail de comex, pas le mien, je viens de changer le paramètre du compilateur et de le télécharger! :)

Nickolas Pylarinos
la source