如何在OSX中访问/ dev / mem?


Answers:


12

根据访问内核内存在Mac OS X x86版本/dev/mem以及/dev/kmem被拆除时,苹果发布OS X的英特尔处理器。

(优秀的)文章还介绍了如何重新启用内存设备,即使用kmem=1内核引导参数。

请注意,如下面Neal所述在macOS 10.15 Catalina(可能是从macOS 10.12 Sierra开始)中,只有在Mac引导到恢复模式时才能更改NVRAM设置。要进入恢复模式,请打开Mac并立即按住-R直到出现徽标,然后从菜单栏中的“实用工具”菜单启动“终端”,然后运行:

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)中,您可以重新启用操作系统中的存储设备,因此只需启动终端,在上方键入命令并重新启动。)

如果您的Mac无法启动或有任何问题,请optionPR按住键直到第二次听到启动声音,以重置NVRAM,如HT1379 KB中的“重置NVRAM / PRAM”中有关NVRAM和PRAM所述

如果您想重设参数,请键入sudo nvram -d boot-args并检查它nvram -p | grep boot-args不会显示任何结果。


1
我已经在macOS Sierra中尝试了这种方法,但是它没有使设备显示在/dev.. 下。也许您知道Apple是否关闭了该选项,以及是否还有另一种方法可以在10.12中访问此内存?
Zohar81

1
在某些时候,只有在Mac启动到恢复模式后才能更改nvram设置。因此,如果您打开Mac的电源,并立即按住Cmd-R直到出现徽标,然后从“恢复”安装UI放到终端并运行命令,它应该可以工作。昨天这在OS X Catalina上对我有用。
neal

4

我想我可以在macOS Sierra上工作了!我下载了comex的项目: Kmem项目 我编译了kext,修复了权限,然后加载了它!在终端上,我进入/devls展示了memkmem...

编辑:如果您下载项目,则只需更改Xcode中的编译器以使用最新版本(例如...我不知道其他版本是否可以运行...)。为了快速访问结果,我已经做了在macOS Sierra上编译的comex项目的一个分支!Kmem for Sierra Fork

同样,这是comex的工作,不是我的,我只是更改了编译器设置并上传了它!:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.