Срочно: Chainfire сегодня анонсировала SuperSU Beta 2.27, устраняющую необходимость в модификации виртуального диска ядра для использования root-доступа на Android 5.0.
До сих пор, если вы хотели получить root-права на Android 5.0, вам нужно было прошить модифицированное ядро на ваше устройство, чтобы обойти некоторые ограничения SELinux. Старший признанный разработчик XDA Цепной огонь недавно выпустили ранее необходимую CF-автоматическое рутирование пакет, который внес необходимые изменения в виртуальный диск ядра для снятия ограничения SELinux из сценария install-recovery.sh в AOSP. Однако сегодня утром Chainfire вызвал улыбки на многих лицах, поскольку он объявлено в Твиттере что в дальнейшем в этом больше не будет необходимости.
До сегодняшнего дня Chainfire планировала выпустить автоматизированный инструмент исправлений на основе ZIP, чтобы автоматически патчить образы ядра из TWRP рекавери, пока не наткнулся на подходящий способ убрать необходимость этот.
Это открытие означает, что пользователям Android 5.0 больше не нужно запускать модифицированное ядро, чтобы получить root-доступ через SuperSU (или другие корневые решения). Хотя это и не было большой проблемой на устройствах Nexus с разблокируемым загрузчиком, необходимость в модификациях виртуального диска была касается многих пользователей устройств с заблокированным загрузчиком, для которых разблокировка недоступна (да, к сожалению, есть) существовать). Ответ на их молитвы теперь здесь, и мы можем представить эксклюзивное объяснение необходимых изменений. По крайней мере, на данный момент (до тех пор, пока Google не исправит это), можно получить root-доступ, а затем установить и использовать SuperSU на стандартном устройстве Android 5.0 без какой-либо настройки виртуального диска ядра. Причиной этого является необходимость запуска службы SuperSU от имени пользователя root, чтобы обеспечить неограниченный root-доступ на устройствах, защищенных SELinux.
Раньше SuperSU использовал предустановленный AOSP. flash_recovery (используется в AOSP для обновления восстановления после установки OTA) для запуска демона SuperSU (который фактически предоставляет root-права приложениям, которые его запрашивают). С выпуском Lollipop эта служба была добавлена в ограниченный контекст SELinux, что означает, что она больше не имеет полного доступа к системе. Предыдущие модификации ядра стремились удалить ограничения SELinux из этого сценария.
Последняя бета-версия SuperSU от Chainfire решает эту проблему за счет использования основной службы Zygote (отвечающей за запуск всех служб Java и, следовательно, всех приложений, установленных на устройстве). Поскольку Zygote — один из немногих сервисов, доступных на Android L, который запускается с правами root в неограниченный контекст «init» SELinux, что делает его основной целью для использования в работе СуперСУ. После загрузки служба Zygote имеет контекст «init» SELinux, переведенный в окончательный (ограниченный) контекст «Zygote». Chainfire удалось успешно изменить файлы Zygote, чтобы запускать код от имени пользователя root. в неограниченном контексте «init», тем самым возвращая SuperSU на Android L без ядра модификации.
Это не первый раз, когда Chainfire обращается к Zygote для решения этих проблем; более ранняя бета-версия 2.23 использовала Zygote как средство, позволяющее обойти некоторые другие проблемы SELinux (которые приводили к сбою корневых приложений на Android L). Это позволило некоторым (но не всем) неработающим приложениям работать — остальные требуют некоторых обновлений от их разработчиков. К сожалению, когда был изучен код AOSP 5.0, выяснилось, что Google уже сломал этот метод захвата службы Zygote. Учитывая, что все его предыдущие попытки захватить Зиготу потерпели неудачу, это многообещающий шаг вперед.
Chainfire отметил, что SuperSU уже давно имеет возможность изменять политики SELinux в работающей системе (и предостерегает относительно простоты использования какой OEM-производитель может отключить это и действительно предотвратить значимый и простой корневой доступ), и как следует вносить любые изменения в Zygote. осторожно, учитывая, что служба запускается из разных контекстов и для разных задач, и это повышает вероятность ряда (неприятных) тонкие неудачи. Эта новая бета-версия SuperSU 2.27 создана для энтузиастов и других технических специалистов, с которыми они могут поиграть и выяснить, что сломалось. Скрестим пальцы — никаких неожиданных ошибок, которые могли бы остановить шоу, нет, и это жизнеспособный путь вперед.
Обратите внимание: даже если эта бета-версия сработает и Zygote станет предпочтительным способом получения root-доступа, в дальнейшем весь процесс представляет собой всего лишь однострочное изменение. от взлома со стороны Google, что сделало бы исправленные виртуальные диски ядра будущим для root-доступа на Android (таким образом исключая root для заблокированных загрузчиком устройства). Действительно, следует отметить, что новый процесс может даже не работать на полностью обновленной сборке AOSP из-за довольно большого количества SELinux. изменения за последние несколько месяцев, которые не были включены в розничную продажу устройств, но которые, несомненно, будут там в будущем релизы. Однако рано или поздно кажется вероятным, что модифицированные виртуальные диски ядра потребуются для root, но эта новая бета-версия может предложить короткую приостановку выполнения, прежде чем мы должны будем двигаться в этом направлении.
Проверить примечания к выпуску для получения дополнительной информации о рисках, связанных с тестированием этого, а также для ссылок. Разработчикам также следует знать, что Chainfire в настоящее время усердно работает над Руководство «Как сделать SU» (полностью обновлено для Android 5.0), которое должно быть доступно в ближайшие несколько дней.
[Огромное спасибо Chainfire за его работу и помощь в подготовке этой статьи.]