Como funciona o enraizamento?

23

Ou como faço para fazer root no meu dispositivo sem um rooter?

As instruções de root para dispositivos Android que eu já vi são geralmente da seguinte forma:

  1. Baixar Gingerbreak.apk
  2. Execute o Gingerbreak, clique em "dispositivo raiz"
  3. Observe que Superuser.apkfoi instalado magicamente, possivelmente junto com busyboxoutras coisas, e desfrute da sua bondade.

O que eu quero saber é o seguinte: como o enraizamento realmente acontece? O que o Gingerbreak faz?

Entendo o resultado final do enraizamento:

  • su está presente e trabalhando
  • Superuser.apk está instalado e controla o acesso a su
  • Vários utilitários estão presentes, fornecidos pelo BusyBox (opcional?)

Também acho que entendo a idéia básica de como o Gingerbreak é iniciado - explora algumas vulnerabilidades de escalação de privilégios locais e usa seus novos poderes para implantar o Superusuário e tudo o mais necessário.

Portanto, a menos que eu esteja errado em alguns dos entendimentos expostos acima, o principal que quero saber é o que o instalador raiz faz para implantar e ativar o Superusuário. Parece que apenas colocar Superuser.apkno lugar certo não seria suficiente - como é permitido o acesso root permitido? Como ele é conectado a moderar esse acesso para outros aplicativos?

O que o Gingerbreak faz após a exploração para habilitar e proteger o acesso root?

Michael Ekstrand
fonte

Respostas:

16

O que o APK e a exploração fazem (geralmente) é o seguinte:

  • O APK coloca os arquivos certos no lugar certo para executar a exploração
  • O APK executa a exploração
  • A exploração tenta obter acesso root
  • Se for bem-sucedido, o exploit remonta / sistema como leitura-gravação e executa o script do instalador
  • O script do instalador tenta instalar o APK binário e superusuário su e reinicia

Como exemplo, esta página detalha como o grupo contra exploração de gaiolas tenta obter privilégios elevados.

Sparx
fonte
2
Obrigado. Eu acho que isso restringe ainda mais minha pergunta real - o que exatamente o script do instalador faz? Ou onde posso encontrar uma cópia de uma para ler? A maioria dos documentos que vejo são muito opacos - "faça o download deste APK, ele funciona" com um link para algum site de compartilhamento de arquivos aleatório.
Michael Ekstrand
su permite elevação de privilégios em ambientes semelhantes ao Unix (em que o Android se baseia). Quando o binário su é instalado, os aplicativos / scripts podem usar os comandos su e sudo para executar e acessar partes do sistema de arquivos que normalmente são restritas para usuários comuns. Em essência, é por isso que se enraíza um telefone - para obter acesso a partes "restritas" do sistema e para executar comandos que um usuário comum não pode executar.
Sparx
9

Depois de muita pesquisa, finalmente descobri. Eu estava errado sobre onde está a mágica - ela não está no script do instalador; tudo o que precisa fazer é colocar os binários sue Superuser.apkno lugar certo e definir suas permissões. Portanto, é realmente tão simples quanto soltar arquivos no local e definir permissões. Sem fiação mágica.

A mágica acontece no subinário (veja a fonte e também esta pergunta ). Eu estava (incorretamente) pensando que isso suera um padrão su, e que as coisas estavam de alguma forma conectadas para moderar o acesso ao binário Superuser.apk.

Errado. O que realmente acontece é muito mais simples: o Superusuário fornece uma implementação personalizada suque autentica o acesso através do Superusuário e de seu banco de dados de aplicativos autorizado.

Portanto, o processo de torcer é tão simples quanto o @Sparx disse. O software implantado contém a mágica.

Michael Ekstrand
fonte
Eu acho que isso perde uma coisa importante: a suprópria não é mágica, a única mágica é que o sistema operacional a trata especialmente. Tudo o que precisa fazer é retornar "OK" ou "Não OK" quando solicitado pelo sistema operacional para permitir que um aplicativo específico eleve permissões. Se estiver faltando ou sempre retornar "Não está OK", os aplicativos normais nunca conseguirão fazer o root. Portanto, o enraizamento é basicamente o processo de colocar um subinário que às vezes pode retornar "OK", no local protegido em um sistema que não deve permitir que isso seja feito.
RomanSt
4
all that has to do is put the su and Superuser.apk binaries in the right place and set their permissionscomo se isso fosse fácil sem uma exploração, a exploração é a mágica.
12284 Alex
1
@ Alex Não é bem assim. Eu estava especificamente tentando descobrir o que um rooter faz após a exploração . Nesse caso, como eu tinha acesso root via ADB, não queria executar uma exploração desnecessariamente.
Michael Ekstrand