Breaking: Chainfire anunciou hoje o SuperSU Beta 2.27, eliminando a necessidade de modificações no ramdisk do kernel para fazer uso do acesso root no Android 5.0
Até agora, se você quisesse fazer root no Android 5.0, você precisava atualizar um kernel modificado em seu dispositivo para contornar algumas restrições do SELinux. Desenvolvedor Sênior Reconhecido XDA Fogo em cadeia lançou recentemente o anteriormente necessário CF-Auto-Root pacote, que fez as modificações necessárias no ramdisk do kernel para remover a restrição SELinux do script install-recovery.sh no AOSP. Esta manhã, porém, Chainfire trouxe sorrisos a muitos rostos, ao anunciado no Twitter que isso não seria mais necessário daqui para frente.
Até hoje, a Chainfire planejava lançar uma ferramenta automatizada de correção baseada em ZIP, para corrigir imagens do kernel a partir da recuperação TWRP, até que ele encontrou um método adequado para remover a necessidade de esse.
Esta revelação significa que os usuários do Android 5.0 não precisam mais executar um kernel modificado para obter acesso root via SuperSU (ou outras soluções root). Embora não seja um grande problema em dispositivos Nexus com bootloaders desbloqueáveis, a necessidade de modificações no ramdisk foi preocupante para muitos usuários de dispositivos bloqueados pelo bootloader para os quais nenhum desbloqueio está disponível (sim, infelizmente existir). A resposta às suas orações está agora aqui, e podemos apresentar uma explicação exclusiva das mudanças necessárias. Pelo menos por enquanto (até/a menos que o Google corrija isso), é possível obter acesso root e então instalar e usar o SuperSU em um dispositivo Android 5.0 padrão, sem qualquer ajuste no disco RAM do kernel. A razão para isso é a necessidade do SuperSU executar um serviço como root, para permitir acesso root irrestrito em dispositivos protegidos pelo SELinux.
Anteriormente, o SuperSU aproveitaria o AOSP pré-instalado recuperação_flash serviço (usado no AOSP para atualizar a recuperação após uma instalação OTA) para iniciar o daemon SuperSU (que na verdade fornece privilégios de root para aplicativos que o solicitam). Com o lançamento do Lollipop, este serviço foi adicionado a um contexto restrito do SELinux, o que significa que não tem mais acesso não adulterado ao sistema. As modificações anteriores do kernel procuraram remover as restrições do SELinux deste script.
A última versão beta do SuperSU do Chainfire resolve isso usando o serviço principal 'Zygote' (responsável por lançar todos os serviços Java e, portanto, todos os aplicativos instalados em um dispositivo). Como o Zygote é um dos únicos serviços disponíveis no Android L, que é iniciado como root no contexto "init" irrestrito do SELinux, isso o torna um alvo principal para uso na operação de SuperSU. Após a inicialização, o serviço Zygote tem seu contexto "init" do SELinux transferido para seu contexto "Zygote" final (restrito). Chainfire conseguiu modificar com sucesso os arquivos Zygote, para executar o código como usuário root, dentro do contexto "init" irrestrito, trazendo assim o SuperSU de volta ao Android L, sem kernel modificações.
Esta não é a primeira vez que Chainfire recorre ao Zygote para resolver esses problemas; o beta 2.23 anterior usava o Zygote como um meio de possivelmente contornar alguns outros problemas do SELinux (que estavam causando a falha de aplicativos raiz no Android L). Isso permitiu que alguns (mas não todos) aplicativos que não funcionavam funcionassem - o restante requer algumas atualizações por parte de seus desenvolvedores. Infelizmente, quando o código 5.0 AOSP foi consultado, descobriu-se que o Google já havia quebrado esse método de assumir o controle do serviço Zygote. Dado que todas as suas tentativas anteriores de assumir o controle do Zygote falharam, este é um passo promissor.
Chainfire fez questão de ressaltar que o SuperSU há muito tempo é capaz de modificar as políticas do SELinux em um sistema em execução (e alerta sobre a facilidade com qual um OEM poderia desabilitar isso e realmente impedir o acesso root simples e significativo) e como quaisquer modificações feitas no Zygote devem ser feitas com cuidado, dado que o serviço é executado a partir de vários contextos diferentes, para tarefas diferentes, e isso levanta a possibilidade de uma série de (desagradáveis) falhas sutis. Este novo SuperSU beta 2.27 é uma versão para entusiastas e outros técnicos brincarem e descobrirem o que está acontecendo. Dedos cruzados - não há bugs inesperados e este é um caminho viável a seguir.
Tome nota: mesmo que esta versão beta funcione e o Zygote seja o caminho preferido para obter acesso root, daqui para frente, todo o processo será apenas uma alteração de linha única longe de serem quebrados pelo Google, o que tornaria os ramdisks de kernel corrigidos o futuro para acesso root no Android (descartando assim o root para bootloader bloqueado dispositivos). Na verdade, como um aviso, o novo processo pode nem funcionar em uma versão AOSP totalmente atualizada, devido a alguns grandes problemas do SELinux. mudanças nos últimos meses, que não foram incluídas nos dispositivos de varejo, mas que sem dúvida estarão lá no futuro lançamentos. Porém, mais cedo ou mais tarde, parece provável que ramdisks de kernel modificados serão necessários para o root, mas este novo beta pode oferecer uma curta suspensão de execução antes de seguirmos nessa direção.
Confira as notas de lançamento para obter mais informações sobre os riscos envolvidos em testar isso e para links. Os desenvolvedores também devem estar cientes de que Chainfire está atualmente trabalhando arduamente no Guia "Como fazer SU" (totalmente atualizado para Android 5.0), que deverá estar disponível nos próximos dias.
[Um grande obrigado a Chainfire por seu trabalho aqui e assistência na preparação deste artigo.]