devmem: невозможно открыть «/dev/mem»: Отказано в доступе

devmem: невозможно открыть «/dev/mem»: Отказано в доступе

У меня есть 2 телефона (Samsung Galaxy S4 LTE I9505, Android 4.4.2 Kitkat), которые я уже рутировал и имею доступ к ним. Ранее, на моем рутированном Samsung Galaxy S3 LTE I9505 с Android 4.1.2 Jelly Bean, я мог получить части памяти устройства через добавление /dev/mem.

Мне интересно получить часть кода ядра оперативной памяти, чтобы выполнить обратную разработку работающего ядра телефона, и я точно знаю диапазон адресов, где находится код ядра (через использование cat /proc/iomem). Однако на 2 S4 под управлением Kitkat 4.4.2, когда я использую оболочку adb (с su), я не могу увидеть /dev/mem, смонтированный на телефоне. Когда я пытаюсь использовать 'cat /dev/mem' или 'busybox devmem 0x80208000', я получаю ошибку отказа в доступе.

Однако, когда я использую ES File Explorer с включенным Root Explorer, я могу видеть и mem, и kmem внутри /dev. Кто-нибудь знает, как справиться с этой проблемой? Мне нужно получить доступ к /dev/mem с помощью команды busybox devmem, чтобы редактировать память на лету.

Вывод '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 (по крайней мере, на Samsung S4) Selinux установлен в режим Enforcing, из-за чего вы не сможете вывести список /dev/mem или даже прочитать его.

Так как вы получили root-доступ к телефону, из оболочки ADB перейдите в 'su' и используйте команду 'getenforce', она должна вернуть вам 'Enforcing'. Вы можете временно отключить Selinux, используя 'setenforce 0', что изменит режим Selinux на Permissive, и вы сможете читать или просматривать /dev/mem

Связанный контент