Como o “ShareIt”, o “Xender” etc. podem instalar o APK sem a necessidade de permissão de “fonte desconhecida”?


9

Normalmente, se eu tiver que instalar um apk (digamos, do cartão SD), preciso ativar "Fontes desconhecidas" nas configurações do meu telefone. Porém, quando transfiro e instalo qualquer APK de outro telefone usando o "ShareIt", essa permissão não é exigida pelo meu telefone.

Como o ShareIt pode ignorar essa permissão?


O ShareIt foi pré-instalado no seu dispositivo ou você mesmo o instalou?
Izzy

Respostas:


8

Pesquisei um pouco e é possível sem as permissões do sistema da API 21 em diante https://developer.android.com/reference/android/content/pm/PackageInstaller.html .

De fato, há um exemplo de código do Google que mostra como fazê-lo. https://github.com/googlesamples/android-testdpc/blob/master/app/src/main/java/com/afwsamples/testdpc/cosu/CosuUtils.java


Parabéns por desenterrar isso, agora para descobrir se o aplicativo realmente usou isso ...
Andy Yan

2
@beeshyams - Na verdade não. O aplicativo não pode fazer uma instalação "silenciosa". Através da intenção pendente, o "clique" explícito do usuário é necessário no momento da instalação.
Neo

11
@ Neo Droga, então eu apenas assumi uma instalação silenciosa quando escrevi minha resposta ... Meu mal.
Andy Yan

2
Em outras notícias, o pacote do ShareIt parece de alguma forma ofuscado, portanto, embora minhas ferramentas tenham tido sucesso na geração de código Java, nada significativo pode ser visto nos stubs.
Andy Yan

Espere - usei outra ferramenta e acho que posso tê-la. Ele será editado em sua resposta após a verificação.
Andy Yan

4

Se os aplicativos forem instalados silenciosamente (sem a caixa de diálogo de instalação usual), presumivelmente, esses aplicativos serão chamados diretamente pm, ou seja PackageManager, que como aplicativo do sistema tem a permissão android.permission.INSTALL_PACKAGES.

O telefone precisa estar enraizado para que o aplicativo possa chamar pmem um contexto raiz; caso contrário, você será recebido com a mensagem "Nem o usuário xxxx nem o processo atual tem android.permission.INSTALL_PACKAGES".

EDIT: Como o @Izzy apontou no comentário, android.permission.INSTALL_PACKAGEStambém é concedido aos aplicativos instalados no /system. Veja o comentário abaixo e esta pergunta para mais informações.


Observe que eu realmente não tentei o ShareIt e analise o que ele realmente faz, apenas apresentando a teoria mais provável. Se você não está enraizado e ele ainda funcionou, é possível que tenhamos um problema muito mais interessante.
Andy Yan

11
@beeshyams Na China, aqui, muitos mercados de aplicativos de terceiros faziam instalação silenciosa ou automatizada. A primeira maneira é como descrito aqui, e eles solicitarão permissão root na primeira instalação; o segundo é pedir para você ativar um serviço de acessibilidade e automatizar os cliques nos botões "instalar".
Andy Yan

11
Meu telefone não está enraizado. E também não solicitou permissões de root. Mas na Índia, o ShareIt é um método muito popular de instalar aplicativos por meio de ponto a ponto.
neo

11
@beeshyams Evite esse aplicativo e sua horrenda toupeira de permissões necessárias. Considere usar o compartilhamento de código aberto via HTTP (disponível no F-Droid). Não sou de forma alguma afiliado ao aplicativo.
Grimoire

11
@beeshyams Funciona com qualquer dispositivo conectado à mesma rede. Pelo que sei, o host deve ser o Android, mas qualquer dispositivo pode se conectar à mesma rede e visitar o endereço HTTP mostrado no aplicativo para baixar o (s) arquivo (s).
Grimoire
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.