devmem:无法打开‘/dev/mem’:权限被拒绝

devmem:无法打开‘/dev/mem’:权限被拒绝

我有 2 部手机(三星 Galaxy S4 LTE I9505,Android 4.4.2 Kitkat),我已经获得 root 权限,并且拥有手机的 root 访问权限。之前,在我已获得 root 权限的运行 Android 4.1.2 Jelly Bean 的三星 Galaxy S3 LTE I9505 上,我能够通过添加 /dev/mem 来获取部分设备内存。

我对获取 RAM 的内核代码部分感兴趣,以便对手机正在运行的内核进行一些逆向工程,并且我确切地知道内核代码所在的地址范围(通过使用 cat /proc/iomem)。但是,在运行 Kitkat 4.4.2 的 2 S4 上,当我使用 adb shell(带 su)时,我无法看到手机上安装的 /dev/mem。当我尝试使用“cat /dev/mem”或“busybox devmem 0x80208000”时,我收到权限被拒绝的错误。

但是,当我使用启用了 Root Explorer 的 ES 文件资源管理器时,我能够在 /dev 中看到 mem 和 kmem。有人知道如何解决这个问题吗?我需要使用 busybox 的命令 devmem 访问 /dev/mem 才能动态编辑内存。

‘cat /dev/mem’的输出:

1|root@jflte:/ # cat /dev/mem | wc                                             
tmp-mksh: cat: /dev/mem: Permission denied
    0         0         0

‘busybox devmem’ 的输出:

root@jflte:/ # busybox devmem 0x80208000 16
devmem: can't open '/dev/mem': Permission denied

答案1

因为在 4.4.2 上(至少在三星 S4 上),Selinux 设置为强制执行,这导致您无法列出 /dev/mem 甚至无法读取它。

由于您已 root 手机,因此从 ADB shell 进入“su”并使用“getenforce”命令,它应该会返回“Enforcing”。您可以使用“setenforce 0”暂时禁用 Selinux,这会将 Selinux 模式更改为 Permissive,并且您可以读取或列出 /dev/mem

相关内容