Как получить доступ к / dev / mem в OSX?

12

Как я могу получить доступ к / dev / mem (или / dev / kmem, / dev / pmap) эквивалентному устройству в OSX?

Насколько я знаю, это было удалено в какой-то момент.

Могу ли я создать этот узел вручную каким-либо образом или каким-либо другим способом сброса физической памяти?

Видеть:

kenorb
источник

Ответы:

12

Согласно доступу к памяти ядра в версии x86 для Mac OS X , /dev/memи /dev/kmemбыли удалены, когда Apple выпустила OS X для процессоров Intel.

(Отличная) статья также объясняет, как включить устройства памяти , а именно с помощью kmem=1аргумента загрузки ядра.

Обратите внимание, что, как прокомментировал ниже neal , в macOS 10.15 Catalina (и, возможно, начиная с macOS 10.12 Sierra), настройки NVRAM можно изменять только при загрузке Mac в режиме восстановления . Чтобы войти в режим восстановления , включите ваш Mac и сразу удерживайте -R, пока не появится логотип, запустите Terminal из меню Utilities в строке меню, запустите:

sudo nvram boot-args="kmem=1"

и перезагрузите компьютер. Вы должны увидеть эти два устройства:

$ 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

(В предыдущих версиях macOS, таких как OS X Mavericks 10.9.2, вы можете включить устройства памяти в операционной системе, поэтому просто запустите Terminal, введите команду выше и перезагрузите компьютер.)

Если ваш Mac не загружается или у вас есть какие-либо проблемы , перезагрузите NVRAM, нажимая optionPRи удерживая клавиши, пока не услышите звук запуска во второй раз, как объяснено в «Сброс NVRAM / PRAM» в KB HT1379 О NVRAM и PRAM ,

Если вы хотите сбросить аргумент, введите sudo nvram -d boot-argsи проверьте, что результаты nvram -p | grep boot-argsне выводятся.

Жауме
источник
1
Я пробовал этот метод в macOS Sierra, но он не позволял отображать устройства под /dev... возможно, вы знаете, закрыл ли Apple эту опцию и есть ли другая альтернатива для доступа к этой памяти в 10.12?
Zohar81
1
В какой-то момент настройки nvram можно было изменить только тогда, когда ваш Mac был загружен в режим восстановления. Поэтому, если вы включаете свой Mac и сразу же удерживаете Cmd-R, пока не появится логотип, затем перейдите в терминал из пользовательского интерфейса установки Recovery и запустите команду, она должна работать. Это только работало для меня на OS X Catalina вчера.
Нил
4

Я думаю, что я получил его для работы на macOS Sierra! Я скачал проект Comex : Kmem Project Я скомпилировал kext, установил права доступа и затем загрузил его! Используя терминал, я вошел /devи lsпоказал оба memи kmem...

Редактировать: если вы загружаете проект, вам просто нужно изменить компилятор в XCode, чтобы использовать последние (например ... я не знаю, работают ли другие версии, хотя ...) Для быстрого доступа к результатам, которые я уже сделал Проект Comex, который компилируется в macOS Sierra! Кмем для Сьерра Форк

Опять же, это работа Comex, а не моя, я просто изменил настройку компилятора и загрузил ее! :)

Николай Пиларинос
источник