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?

Neo
fonte
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

Neo
fonte
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.

Andy Yan
fonte
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