Alguns aplicativos para Android lembram se foram instalados no mesmo dispositivo anteriormente. Suponha que você tenha desinstalado um aplicativo há um ano. Após um ano, se você instalar o mesmo aplicativo novamente, ele poderá reconhecer que ele foi instalado anteriormente no mesmo telefone.
Essa técnica é usada pelos aplicativos on-line para banir permanentemente os usuários de nunca criarem uma nova conta novamente, caso tenham sido banidos do uso do serviço uma vez. Quando esses usuários criam uma nova conta reinstalando o aplicativo posteriormente, esses aplicativos conseguem detectar sua "presença inicial" e enviar essas informações aos servidores para que o usuário possa ser banido novamente.
Como eles fazem isso mesmo depois de limpar seus dados e desinstalá-los completamente? Isso significa que eles mantêm algum arquivo em algum lugar do telefone, que não é excluído após a desinstalação. Como desativo essa detecção?
fonte
Do app creators have rights?
Na verdade, no meu telefone, eles não. Posso deixá- los executar seu código e armazenar seus dados no meu telefone, mas eles não têm o direito e eu me reservo o direito de revogar os dois privilégios, a meu critério.Respostas:
Existem várias maneiras de identificar um dispositivo exclusivo ou seu usuário:
ANDROID_ID
(único por instalação nova) : esse método é simples, mas requer acesso à Internet, pelo menos no primeiro uso. Não é muito invasivo e não persiste no caso de uma redefinição de fábrica. Também é único por usuário. Veja esta informação .ANDROID_ID
abordagem, mas requer permissão explícita (Android 6.0 ou superior) do usuário para acessar. Os aplicativos que tiram proveito do ecossistema da conta do Google (por exemplo, recordes e conquistas em jogos) podem, portanto, seguir um usuário específico e obter mais informações do que se o aplicativo foi instalado ou não.2, 3 e 4 requerem uma conexão de rede e um servidor ao lado do desenvolvedor.
fonte
strace
utilitário que pode ser usado para acompanhar todas as chamadas do sistema. Portanto, você deve iniciar o aplicativo usandostrace
e verificar todas as chamadas do sistema relacionadas aos arquivos no dispositivo e identificará todos os arquivos lidos / verificados quanto à existência do aplicativo. Claro: provavelmente muito difícil de fazer no smartphone, mas definitivamente possível .Não está conectado ao armazenamento, mas à nuvem. É assim que ele se lembra, mesmo que você tenha excluído seus dados. Para desativar isso, acesse o aplicativo de configurações do dispositivo, toque em contas google em pessoal (toque na conta que você deseja se tiver várias contas) e depois desative os aplicativos que não deseja sincronizar automaticamente.
fonte
A resposta da GiantTree cobre melhor, mas há outro ponto em que pensar. Seria claramente um " padrão escuro ", mas essa identificação também poderia ser feita através de impressão digital de certos dados do usuário - isso pode ser visto como uma variante do primeiro ponto ("manter um arquivo"), mas seria mais difícil de detectar e menos conveniente evitar.
A resiliência disso dependeria dos dados escolhidos. O método mais óbvio seria olhar para detalhes de contato e usar alguma forma de impressão digital disso; uma alternativa pode ser o uso de carimbos de data e hora da foto e outros metadados. Claramente, essas alterações são alteradas ao longo do tempo, portanto, qualquer que seja o método usado, ainda é necessário fornecer uma resposta próxima após a modificação (por isso difere da função tradicional de hash). Também não há garantia de que um usuário não limpe simplesmente os dados rastreados, mas em muitos casos as pessoas preferem não fazer isso.
Você pode examinar as impressões digitais do navegador para ter uma idéia de como isso funciona, mesmo que seja um pouco diferente porque o hardware do telefone é normalmente mais uniforme que o hardware do PC. Dito isto, a adição de certos detalhes do telefone pode ajudar a diminuir um pouco a impressão digital.
Onde essa abordagem é mais complicada é se um usuário alternar telefones e levar seus detalhes com eles para um novo telefone - nesse caso (a menos que os detalhes do telefone estejam entrando na impressão digital), o novo telefone poderá ser detectado como já tendo uma instalação, como a pergunta. No entanto, parece bastante provável que, em um cenário em que um aplicativo esteja tentando banir um usuário, esse possa realmente ser o resultado desejado (em vez de banir o telefone específico)
Observe: de nenhuma maneira estou dizendo que isso é correto ou "bom" como uma maneira de operar se você estiver escrevendo aplicativos, mas parece razoável discuti-lo, pois é somente através da discussão que as pessoas descobrirão se estão preocupado o suficiente para fazer algo sobre isso e o que pode ser.
fonte
Há uma classe SharedPreferences - https://developer.android.com/reference/android/content/SharedPreferences.html - que alguns aplicativos usam para armazenar dados de preferência. Esses dados não são excluídos quando o aplicativo é desinstalado. Se o aplicativo for reinstalado posteriormente, quaisquer chaves SharedPreferences salvas anteriormente ainda estarão disponíveis.
fonte
SharedPreferences
são realmente excluídos quando o aplicativo é desinstalado. Existem maneiras de os desenvolvedores configurarem backups, mas por padrão eles são removidos na desinstalação. (Fonte: Como um desenvolvedor, posso desinstalar meus apps para limpar as preferências Veja também:. Stackoverflow.com/a/9815641/1438733 )Há outra possibilidade - o uso de cookies persistentes com um "tempo para expirar" muito grande. Eu acho que é assim que vários aplicativos do mesmo desenvolvedor costumavam compartilhar credenciais tradicionalmente, quando as credenciais armazenadas pelo recurso de contas não eram tão abertas / conhecidas do público.
fonte