Como adicionar permissão de root a algum aplicativo sozinho?

11

Existe alguma maneira de eu intencionalmente conceder permissão de root a algum aplicativo? Não automaticamente via SuperSU quando um aplicativo específico solicita permissão de root, mas de maneira a escolher um aplicativo através de alguma ferramenta e conceder permissões de root.

Por exemplo, adiciono meu aplicativo de texto favorito à lista aprovada e posso abrir arquivos raiz por esse aplicativo.

AnDroDroo
fonte

Respostas:

13

Não. Você deve solicitar ao desenvolvedor do aplicativo.

Nos sistemas UNIX, as permissões são gerenciadas com algo chamado UIDs.

Todo processo tem um e determina o que eles podem acessar. Além disso, também existem grupos que têm permissão que seus membros podem usar. Quando um aplicativo tem permissões como Write to SD cardelas são colocadas em um grupo que tem essa permissão.

As permissões de root são uma exceção, pois não são declaradas no manifesto do aplicativo, mas em seu código. A raiz também não é um grupo, mas um UID separado (como um usuário separado), portanto, não é tão fácil para um aplicativo usá-lo. Aplicativos que possuem direitos de root precisam ser escritos explicitamente para isso.

A maneira como isso funciona é sempre que um aplicativo deseja fazer algo como root e precisa solicitar ao subinário que faça isso. suEm seguida, perguntará ao aplicativo que gerencia essas permissões (por exemplo, SuperSU) se o aplicativo tem permissão para obter acesso root. Caso contrário, solicitará que você permita ou negue. Em seguida, a ação é executada como root, e não como usuário do aplicativo. Essas ações não são parte integrante do aplicativo, mas um executável externo.

Embora teoricamente seja possível adicionar isso a um aplicativo, esse seria um processo não trivial que requer conhecimento de escrever código smali, que é o formato interno da máquina virtual Dalvik (a parte do sistema que executa o arquivo apk) chamada smali. E mesmo assim, haveria um enorme risco de segurança se o aplicativo permitir que outros aplicativos o acessem: não saberia manter o acesso root privilegiado separado do acesso normal. Então, na realidade, isso não é realmente viável.

RR
fonte
1
Para quem não sabe o que é smali: é o dialeto de montagem do código da máquina virtual dalvik do Android e usado com frequência em arquivos dex de engenharia reversa. O que pode ser um pouco incerto: o aplicativo deve cuidar de se tornar root programaticamente. É por isso que o desenvolvedor precisa incluí-lo. Adicioná-lo ao SuperSU não ajuda, desde que o aplicativo não exerça seus direitos de root.
CE4
Portanto, não consigo abrir algum arquivo de texto raiz através do meu editor de texto favorito se os programadores não codificaram o aplicativo para aceitar a abertura de arquivos raiz?
AnDroDroo 18/07/12
1
Absolutamente correto. Para dar um exemplo: se o aplicativo não for iniciado com root e tentar abrir algum "arquivo raiz", ele simplesmente receberá uma "permissão negada" - pois o acesso ao arquivo ainda será feito com o UID do aplicativo (ele vai não pedir permissões de superusuário para abri-lo). Por outro lado, se o aplicativo for iniciado usando o UID raiz (ou seja su <app>), ele acessará esse arquivo raiz como raiz e, assim, obterá permissão.
Izzy
Por isso não consegui usar outros editores de texto para ler arquivos raiz :).
AnDroDroo 18/07
1
@Izzy AFAIK, você não pode executar um aplicativo Android comum com UID raiz ou alterar o UID de um aplicativo em execução. A única coisa que você pode fazer é executar programas de linha de comando com su e, portanto, executar comandos com permissões de administrador.
Robert
1

Eu encontrei uma maneira que pode ajudá-lo. Eu usei isso para conceder acesso root ao Tasker .

Se você usar o emulador de terminal para conceder acesso de leitura, mas não de gravação, a uma pasta usando

  • su
  • chmod 775 /location/of/folder/

seu editor de texto poderá ler esse diretório e, se você puder tentar salvar um arquivo na pasta, tentará solicitar permissão de root.

Também pode apenas dar um erro de gravação.

Graeme Evans
fonte
Todos os diretórios /location/of/folder/da raiz ao topo devem ser legíveis / passíveis de travessia. O SELinux também pode negar o acesso. Portanto, essa abordagem raramente é prática.
Irfan Latif