O Android Lollipop veio com diversas restrições bem complexas que estão causando um grande problema para quem gosta de fazer root em seus dispositivos. A maior destas barreiras é o SELinux que no KitKat acabava por ser colocado no status permissive pela maioria das ROMs e kernels não causando lá grandes problemas.
Para quem não entende o processo de root, ele no fim é uma invasão do seu telefone. Seja um Iphone ou um Android o processo de root ou jailbreak é o uso de um exploit para ganhar poder de Super usuário no seu dispositivo.
E, apesar das barreiras o Chainfire que é o desenvolvedor do SuperSU e referência no root do Android lançou a dias atrás o CF-Auto-Root para toda a linha Nexus que fazia as modificações da ramdisk do kernel através do fastboot para fugir das restrições do SELinux.
Se muita gente já estava com preguiça de tanto caos para conseguir fazer um simples root, o Chainfire no seu twitter avisou a coisa agora ficou mais divertida, com a possibilidade de root sem que se tenha que usar este processo que é meio traumático tanto para usuários mais avançados quanto para usuários novatos.
O Chainfire havia planejado lançar um zip que seria instalado via recovery TWRP que iria fazer todo o processo de patch da ramdisk para que ela pudesse permitir a instalação do SuperSU e por sua vez, ganhar o root.
Mas ontem ele avisou que a coisa será um pouco mais faćil e talvez até menos traumática. Muitos usuários estavam meio preocupados com o processo de patch da ramdisk via fastboot o que não é grande problema para alguns dispositivos Nexus que tem o bootloader desbloqueado mas, como ainda existem alguns dispositivos com o bootloader não liberado esta notícia é interessantíssima. Ou seja é agora possível instalar o SuperSU em um dispositivo Nexus sem que seja necessário qualquer patch da ramdisk e deixar o serviço do SuperSU rodar em root permitindo que ele ‘fuja’ das restrições do SELinux em alguns momentos.
A diversão anteriormente era um pouco hard para muitos usuários. O SuperSU chamava o serviço flash_recovery da AOSP ( que é o usado pela AOSP para instalar as atualizações OTA ) para iniciar o daemon do SuperSU ( o serviço do SuperSU ) que é o cara que fica ouvindo as aplicações e permitindo que elas ganhem acesso root.
Se era fácil o processo no KitKat e outros no Lollipop o Google começou a ficar mais chato. Este serviço entrou em um contexto restrito do SELinux que acaba não permitindo o acesso ao sistema que fora modificado , mas as versõe anteriores do kernel procuravam remover as restrições do SELinux neste script, por isto, boa parte do processo tinha que ser feito no fastboot.
Uma coisa é certa. Desafios fazem com que as pessoas achem soluções novas e o Chainfire acabou conseguindo fazer algo bem interessante. O processo agora é em cima de um outro serviço, o “Zygote” ( que é o responsável pela gestão de todos os serviços Java do dispositivo, ou seja, quase todo o Android ) que é um dos poucos serviços disponíveis ainda no Android L que é iniciado como root em um contexto “init” do SELinux sendo um alvo bem interessante para o SuperSU.
Ao inicializar o Android ele tem um contexto “init” no boot para depois entrar para o seu contexto específico que é o “zygote”, e foi aí que o Chainfire entrou. Ele conseguiu injetar um script para ser executado como root dentro do contexto irrestrito “init” que permitiu inserir o SuperSU novamente no Android sem que sejam necessárias modificações de kernel.
Root no Lollipop ( Fonte : Android Police )
O Zygote começou a estar presente nas nossas discussões na verao 2.23 quando o Chainfire começou a utilizá-lo para tentar contornar alguns possíveis problemas com o SELinux que estavam causando problemas no root do Android L. Esta pequena mudança na versão 2.23 havia permitido que alguns aplicativos com problemas voltassem a trabalhar, mas tudo foi por água abaixo quando se notou que o Google modificou o código nas versões posteriores da AOSP do Lollipop.
Este novo método permite que o SuperSU consiga modificar as políticas do SuperSU em um sistema em execução, mas é bom lembrar que muitas fabricantes podem se preocupar com isto em seus sistemas e gerar problemas a estes métodos atuais.
As modificações utilizando o Zygote estão sendo feitas com muito cuidado porque o serviço além de tudo é um pouco mutante pois acaba sendo executado em vários contextos diferentes e por sua vez, as falhas podem ocorrer ao longo do uso.
Sucesso total no root do Lollipop
A versão beta 2.27 do SuperSU é para usuários corajosos e que gostem de descobrir bugs e ler logs do sistema operacional. Apesar de eu nas últimas 12 horas não ter encontado nenhum bug sei que isto pode ocorrer a qualquer momento e já estou com os outros betas do SuperSU a mão ( a última versão que se mostrou bem estável foi a 2.25 ).
Apesar deste processo ser muito legal e mais fácil ele é muito fácil de ser resolvido pelo Google e portanto, no futuro seremos mesmo forçados a fazer os patchs da ramdisk via fastboot , deixando tristes todos os usuários com bootloader bloqueado.
O que temos no momento é uma pequena solução temporária que dará tempo talvez ao Chainfire e outros desenvolvedores de achar métodos que possam resolver problemas que ainda existam.
O Android Lollipop está em pleno desenvolvimento e a solução desta falha que foi usada para ganhar o root no Android será resolvida uma hora ou outra.
Assim é bom para todos ter em mente que isto é uma solução momentânea para o problema do root.
As notas de versão merecem ser lidas pois o Chainfire é sempre bem claro no que ele escreve. Os desenvolvedores em breve receberão um manual atualizado “How-To SU” que irá ajudar a quem está implementando aplicações que precisam do acesso de superusuário em suas aplicações.
Aconselho a quem está tendo problemas com aplicações e root no Android a ficar de olho nos canais oficiais do Chainfire para se informar.
Fonte: Obrigado ao XDA-developers pelo texto super explicativo ajudado pelo Chainfire