1

У меня есть 2 телефона (Samsung Galaxy S4 LTE I9505, Android 4.4.2 Kitkat), которые я уже рутировал и имею root-доступ к телефонам. Ранее на моем рутированном Samsung Galaxy S3 LTE I9505 под управлением Android 4.1.2 Jelly Bean я мог получать части памяти устройства через dding из /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 с помощью команды devbox от busybox, чтобы редактировать память на лету.

Вывод '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 ответ1

1

Потому что на 4.4.2 (по крайней мере, на Samsung S4) Selinux настроен на Enforcing, из-за чего вы не можете перечислить /dev /mem или даже прочитать его.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .