Comment certaines applications Android se souviennent-elles que ce n'est pas la première fois qu'elles sont installées?

33

Certaines applications Android peuvent se rappeler si elles ont déjà été installées sur le même appareil. Supposons que vous ayez désinstallé une application il y a un an. Après un an, si vous installez à nouveau la même application, cette application sera en mesure de reconnaître qu'elle a déjà été installée sur le même téléphone.

Cette technique est utilisée par les applications en ligne pour interdire définitivement aux utilisateurs de créer un nouveau compte s'ils ont déjà été bannis du service. Lorsque ces utilisateurs créent un nouveau compte en réinstallant l'application ultérieurement, ces applications sont en mesure de détecter leur "présence initiale" et d'envoyer ces informations aux serveurs afin que l'utilisateur puisse à nouveau être banni.

Comment ils le font même après avoir effacé leurs données et les avoir désinstallés complètement? Cela signifie qu'ils conservent un fichier quelque part dans le téléphone, qui n'est pas supprimé après la désinstallation. Comment désactiver cette détection?

défouler
la source
Pourquoi voulez-vous supprimer cette information? Les créateurs d'applications ont-ils des droits? Je ne m'attends pas à ce que ce soit un commentaire populaire, mais demandez-vous si vous avez pris le temps de créer une application.
S. Mitchell
6
@ S.Mitchell Today Certains développeurs d'applications et grandes agences de publicité tentent d'accéder à des informations inutiles d'utilisateurs innocents. Non seulement ils veulent une adresse MAC, mais ils veulent aussi connaître votre SSID wifi. Google leur a donné une bonne leçon en mettant en place les autorisations que vous ne voulez pas leur donner dans Android 6. Mais les annonceurs ne s'arrêtent pas ici, ils trouvent toujours un façon de se déplacer. Je veux assurer ce système de confidentialité.
defalt
1
@ S.Mitchell Bonjour Mitchell. Vous pensez peut-être que je me trompe à cause de ma question. Non, je ne suis banni d'aucun service social ou en ligne, ni d'échange de pile si vous en doutez. Mais pour moi, savoir, c'est apprendre. Je ne fais pas de travail pratique avec les réponses que j'ai reçues ici. Mais ils aident certainement à savoir comment les choses fonctionnent. On ne peut pas créer de sécurité anti-piratage si on ne sait pas pirater. La même analogie est ici. Si je ne peux pas apprendre le fonctionnement des applications, je ne peux en créer aucune.
defalt
7
@ S.Mitchell: Do app creators have rights?En fait, sur mon téléphone, ils ne le font pas. Je peux les laisser exécuter leur code et stocker leurs données sur mon téléphone, mais ils n’ont pas le droit de le faire et je me réserve le droit de révoquer les deux privilèges à ma discrétion.
dotancohen
2
@ S.Mitchell, je vous encourage à répondre à toutes les questions, peu importe pourquoi vous pensez qu'elles existent. C'est une bonne chose que vous n'utilisiez pas ce site!
Présenter des excuses et rétablir Monica le

Réponses:

33

Il existe plusieurs façons d'identifier un périphérique unique ou son utilisateur:

  1. Conservez un fichier dans un répertoire (autre que celui par défaut) : Vous avez déjà dit ceci; les applications peuvent souvent écrire sur le stockage interne d'un appareil. Cette méthode est simple, fonctionne en mode hors connexion et n’est pas la plus facile à détecter (placez le fichier dans un répertoire semblable à un système et personne ne s’efforcera de le supprimer).
  2. Gardez une trace d'un périphérique unique ANDROID_ID(unique par nouvelle installation) : cette méthode est simple mais nécessite un accès Internet, du moins à la première utilisation. Ce n'est pas très intrusif et ne persiste pas en cas de réinitialisation d'usine. C'est aussi unique par utilisateur. Voir cette information .
  3. IMEI : Très intrusif, non modifiable mais nécessitant un appareil compatible SIM. L'IMEI est unique pour chaque appareil. Il ne peut pas être modifié et ne suit pas l'utilisateur. Cela signifie que si vous vendez votre appareil, le nouveau propriétaire sera accueilli par un écran lui indiquant que l'application était déjà au téléphone.
  4. Suivre le compte Google d'un utilisateur : c'est à peu près la même chose que l' ANDROID_IDapproche mais nécessite l'autorisation explicite (Android 6.0+) de l'utilisateur. Les applications qui tirent parti de l'écosystème du compte Google (par exemple, les scores élevés et les performances dans les jeux) peuvent ainsi suivre un utilisateur spécifique et obtenir davantage d'informations que si l'application a été installée ou non.

2, 3 et 4 nécessitent une connexion réseau et un serveur du côté du développeur.

Arbre géant
la source
Je peux gérer 2,3 et 4ème partie en utilisant Xprivacy. Je vais parodier chacun d'eux. Mais le premier, ce n’est pas facile à repérer. Y a-t-il un moyen de détecter cette vulnérabilité?
defalt
3
Ce n'est pas une vulnérabilité, juste une fonctionnalité abusée. Tout comme les applications conservant des fichiers dans le registre. Vous ne pouvez pas faire grand chose en dehors de parcourir tous les répertoires de la mémoire de stockage interne de votre téléphone et de rechercher des fichiers suspects.
GiantTree
1
Bonne chance pour trouver / faire cette application. Le système ne peut pas tomber en panne à cause d'un fichier manquant dans la mémoire de stockage interne. Généralement, les applications utilisent généralement les mêmes frameworks que les mêmes fichiers, mais, comme vous l'avez déjà indiqué, ces fichiers sont impossibles à trouver (pas toujours, mais la plupart du temps). Les fichiers contenant des éléments tels que "id", "user" ou similaire contiennent souvent un tel identifiant et ces identifiants sont généralement utilisés pour la publicité.
GiantTree
2
@ S.Mitchell Non, je n'ai jamais été banni de services en ligne, d'applications Web et de jeux en ligne. Mais je crois que savoir comment le système fonctionne derrière son interface est la bonne étape pour progresser dans le développement Android.
defalt
8
@ user334283 "ne sait jamais quel nom de fichier vous recherchez". C'est faux. Android, étant un système d'exploitation Linux, a l' straceutilitaire qui peut être utilisé pour garder une trace de tous les appels système. Donc, vous devez démarrer votre application en utilisant straceet vérifier tous les appels système liés aux fichiers sur l'appareil et vous repérerez tous les fichiers lus / vérifiés pour l'existence par l'application. Bien sûr: probablement assez difficile à faire sur le smartphone mais certainement possible .
Bakuriu
2

Il n'est pas connecté au stockage, mais au cloud. C'est ainsi qu'il se souvient même si vous avez supprimé vos données. Pour désactiver cette option, accédez à l'application des paramètres de votre appareil, appuyez sur les comptes google sous personnel (appuyez sur le compte de votre choix si vous avez plusieurs comptes), puis désactivez les applications que vous ne souhaitez pas synchroniser automatiquement.

Devin Ersoy
la source
La synchronisation automatique n'est pas le problème fondamental. Les serveurs tiers s'assurent que leur application est capable de collecter votre adresse MAC, votre IMEI, votre identifiant de périphérique, votre identifiant de publicité et les stockent sur des serveurs pour permettre la détection ultérieure du périphérique. L'espionnage de ces détails préservera votre confidentialité, mais si une application écrit des "entrées de registre" comme dans Windows, le problème sera indétectable.
defalt
2

La réponse de GiantTree couvre le mieux, mais il y a un autre point à considérer. Ce serait clairement un " motif sombre ", mais cette identification pourrait également se faire par la prise d’ empreintes digitales de certaines données d’utilisateur - ceci peut être considéré comme une variante de son premier point ("conserver un fichier"), mais il serait plus difficile à détecter et moins pratique. éviter.

Sa résilience dépend des données choisies. La méthode la plus évidente consisterait à examiner les coordonnées et à utiliser une forme d’empreinte digitale. une alternative pourrait être l'utilisation d'horodatages de photos et d'autres métadonnées. Il est clair que ces dernières changent avec le temps, quelle que soit la méthode utilisée, elle doit toujours donner une réponse précise après modification (elle diffère donc d'une fonction de hachage traditionnelle). De plus, rien ne garantit qu'un utilisateur n'efface pas simplement les données suivies, mais dans de nombreux cas, les utilisateurs préfèrent ne pas le faire.

Vous voudrez peut-être examiner les empreintes digitales des navigateurs pour avoir une idée de la procédure, même si la situation sera quelque peu différente, car le matériel du téléphone est généralement plus uniforme que celui du PC. Cela dit, l'ajout de certains détails du téléphone peut aider à réduire un peu l'empreinte digitale.

Cette approche est particulièrement problématique si un utilisateur change de téléphone et emmène ses détails avec eux sur un nouveau téléphone (dans ce cas, le nouveau téléphone peut être détecté comme ayant déjà été installé, comme la question posée. Cependant, il semble tout à fait probable que dans le cas où une application tente d'interdire un utilisateur, cela pourrait en fait être le résultat souhaité (plutôt que d'interdire le téléphone spécifique lui-même).

Remarque: en aucun cas, je ne dis que cela est correct ou "bon" comme moyen de fonctionner si vous écrivez des applications, mais il semble raisonnable d'en discuter, car ce n'est que par la discussion que les gens détermineront s'ils sont assez concerné pour faire quelque chose à ce sujet et ce que cela pourrait être.

Neil
la source
1

Il existe une classe SharedPreferences - https://developer.android.com/reference/android/content/SharedPreferences.html - que certaines applications utilisent pour stocker des données de préférences. Ces données ne sont pas supprimées lors de la désinstallation de l'application. Si l'application est réinstallée par la suite, les clés SharedPreferences précédemment enregistrées sont toujours disponibles.

David Bennett
la source
6
SharedPreferencessont réellement supprimés lorsque l'application est désinstallée. Les développeurs disposent de plusieurs moyens pour configurer les sauvegardes, mais par défaut, elles sont supprimées lors de la désinstallation. (Source: en tant que développeur, je désinstalle mes applications pour effacer les préférences. Voir aussi: stackoverflow.com/a/9815641/1438733 )
Eric
1

Il existe une autre possibilité: utiliser des cookies persistants avec un très long "délai d’expiration". J'imagine que c'est ainsi que plusieurs applications d'un même développeur partageaient généralement les informations d'identification, lorsque les informations d'identification stockées via la fonctionnalité des comptes n'étaient pas aussi ouvertes / connues du public.

informatiquefreak
la source