¿Cómo recuerdan algunas aplicaciones de Android que esta no es la primera vez que se instalan?

33

Algunas aplicaciones de Android pueden recordar si se instalaron en el mismo dispositivo anteriormente. Suponga que desinstaló una aplicación hace un año. Después de un año, si vuelve a instalar esa misma aplicación, esa aplicación podrá reconocer que se instaló anteriormente en el mismo teléfono.

Las aplicaciones en línea utilizan esta técnica para prohibir permanentemente a los usuarios que vuelvan a crear una cuenta nueva si se les ha prohibido usar el servicio una vez. Cuando dichos usuarios crean una nueva cuenta al reinstalar la aplicación más tarde, estas aplicaciones pueden detectar su "presencia por primera vez" y enviar esta información a los servidores para que el usuario pueda ser bloqueado nuevamente.

¿Cómo lo hacen incluso después de borrar sus datos y desinstalarlos por completo? Significa que guardan algún archivo en algún lugar del teléfono, que no se elimina después de la desinstalación. ¿Cómo desactivo esta detección?

desalinear
fuente
¿Por qué quieres eliminar esta información? ¿Los creadores de la aplicación tienen derechos? No espero que sea un comentario popular, pero considere si se ha tomado el tiempo y la molestia de crear una aplicación.
S. Mitchell
66
@ S. Mitchell Today Algunos desarrolladores de aplicaciones y grandes compañías publicitarias intentan acceder a detalles innecesarios de usuarios inocentes. No solo quieren la dirección MAC, sino que también quieren conocer su SSID wifi. Google les dio una buena lección al implementar qué permisos no desea otorgarles en Android 6. Pero los anunciantes no se detienen aquí, siempre encuentran un manera de moverse. Quiero asegurar este sistema de privacidad.
Desactivar el
1
@ S. Mitchell Hola Mitchell. Puede que me estés juzgando mal por mi pregunta. No, no estoy excluido de ningún servicio social o en línea y tampoco del intercambio de pila si dudas. Pero para mí saber es aprender. No estoy haciendo ningún trabajo práctico con las respuestas que he recibido aquí. Pero definitivamente ayudan a uno a saber cómo funcionan las cosas. Uno no puede crear seguridad anti-piratería si no sabe cómo piratear. La misma analogía está aquí. Si no puedo aprender cómo funcionan las aplicaciones, no tiene sentido poder crear una.
Desactivar el
77
@ S. Mitchell: Do app creators have rights?En realidad, en mi teléfono, no lo hacen. Puede que les permita ejecutar su código y almacenar sus datos en mi teléfono, pero no tienen derecho y me reservo el derecho de revocar ambos privilegios a mi discreción.
dotancohen
2
@ S. Mitchell, recomendaría respuestas a todas las preguntas, independientemente de por qué cree que existen. ¡Qué bueno que no ejecutes este sitio!
Disculpe y reinstale a Monica el

Respuestas:

33

Hay varias formas de identificar un dispositivo único o su usuario:

  1. Mantenga un archivo en algún directorio (no predeterminado) : ya lo dijo; Las aplicaciones a menudo pueden escribir en el almacenamiento interno de un dispositivo. Este método es fácil, funciona sin conexión y no es el más fácil de detectar (coloque el archivo en un directorio similar al sistema y nadie se molestará en eliminarlo).
  2. Haga un seguimiento de los dispositivos únicos ANDROID_ID(únicos por instalación nueva) : este método es simple pero requiere acceso a Internet, al menos en el primer uso. No es muy intrusivo y no persiste en caso de un restablecimiento de fábrica. También es único por usuario. Ver esta información .
  3. IMEI : Muy intrusivo, inmutable, pero requiere un dispositivo con capacidad SIM. El IMEI es único para cada dispositivo, no se puede cambiar y no sigue al usuario, lo que significa que si vende su dispositivo, el nuevo propietario será recibido con una pantalla que le indica que la aplicación ya estaba en el teléfono.
  4. Siga la cuenta de Google de un usuario : esto es más o menos lo mismo que el ANDROID_IDenfoque, pero requiere un permiso explícito (Android 6.0+) del usuario para acceder. Las aplicaciones que aprovechan el ecosistema de la cuenta de Google (p. Ej., Mejores puntuaciones y logros en los juegos) pueden seguir a un usuario específico y obtener más información que si la aplicación se ha instalado o no.

2, 3 y 4 requieren una conexión de red y un servidor en el lado del desarrollador.

Árbol Gigante
fuente
Puedo manejar 2,3 y 4ta parte usando Xprivacy. Me burlaré de cada uno de ellos. Pero el primero, que no es fácil de detectar. ¿Hay alguna forma de detectar esta vulnerabilidad?
Desactivar el
3
No es una vulnerabilidad, solo una característica abusada. Al igual que las aplicaciones que mantienen archivos en el registro. No hay mucho que pueda hacer aparte de revisar todos los directorios en el almacenamiento interno de su teléfono y buscar archivos sospechosos.
GiantTree
1
Buena suerte para encontrar / hacer esta aplicación. El sistema no puede bloquearse debido a que falta algún archivo en el almacenamiento interno. En general, las aplicaciones tienden a usar los mismos marcos que usan los mismos archivos pero, como ya señaló, esos archivos son imposibles de encontrar (no siempre, pero la mayoría de las veces). Los archivos que contienen cosas como "id", "usuario" o similar a menudo contienen una identificación de ese tipo y esas ID se usan generalmente para publicidad.
GiantTree
2
@ S. Mitchell No, nunca he sido excluido de ningún servicio en línea, aplicaciones web y juegos en línea. Pero creo que saber cómo funciona el sistema detrás de su interfaz es el paso correcto para avanzar en el desarrollo de Android.
Desactivar el
8
@ user334283 "nunca se sabe qué nombre de archivo está buscando". Esto es falso Android, al ser un sistema operativo Linux, tiene la straceutilidad que se puede utilizar para realizar un seguimiento de todas las llamadas al sistema. Por lo tanto, debe iniciar su aplicación usando stracey verificar todas las llamadas del sistema relacionadas con los archivos en el dispositivo y detectará todos los archivos leídos / verificados por la aplicación. Claro: probablemente bastante difícil de hacer en el teléfono inteligente pero definitivamente posible .
Bakuriu
2

No está conectado al almacenamiento, sino a la nube. Así es como se recuerda aunque haya eliminado sus datos. Para desactivar esto, vaya a la aplicación de configuración de su dispositivo, toque cuentas de google en personal (toque la cuenta que desee si tiene varias cuentas), luego apague las aplicaciones que no desea sincronizar automáticamente.

Devin Ersoy
fuente
La sincronización automática no es el problema raíz. Los servidores de terceros se aseguran de que su aplicación sea capaz de recopilar su dirección MAC, IMEI, ID de dispositivo, ID de publicidad y almacenarla en servidores para detectar el dispositivo nuevamente en el futuro. La suplantación de estos detalles mantendrá su privacidad, pero si una aplicación está escribiendo "entradas de registro" como en el problema de Windows será indetectable.
Desactivar el
2

La respuesta de GiantTree lo cubre mejor, pero hay otro punto en el que pensar. Claramente sería un " patrón oscuro ", pero esta identificación también se podría hacer mediante la toma de huellas digitales de ciertos datos del usuario; esto puede verse como una variante en su primer punto ("mantener un archivo"), pero sería más difícil de detectar y menos conveniente para evitar.

Cuán resistente sea esto dependería de los datos elegidos. El método más obvio sería mirar los datos de contacto y usar alguna forma de huella digital de este; Una alternativa podría ser el uso de marcas de tiempo de fotos y otros metadatos. Claramente, estos cambios con el tiempo, por lo que cualquier método que se use necesitaría dar una respuesta cercana después de la modificación (por lo que difiere de una función hash tradicional). Tampoco hay garantía de que un usuario no simplemente limpie los datos rastreados, sino que en muchos casos la gente preferirá no hacerlo.

Es posible que desee ver las huellas digitales del navegador para tener una idea de cómo funciona esto, a pesar de que será algo diferente porque el hardware del teléfono generalmente es más uniforme que el hardware de la PC. Dicho esto, la adición de ciertos detalles del teléfono puede ayudar a reducir un poco la huella digital.

En particular, este enfoque se rompe si un usuario cambia de teléfono y lleva sus datos con ellos a un teléfono nuevo; en este caso (a menos que los detalles del teléfono entren en la huella digital), se puede detectar que el teléfono nuevo ya ha tenido una instalación, como la pregunta formulada. Sin embargo, parece bastante probable que en un escenario en el que una aplicación está tratando de prohibir a un usuario, este sea un resultado deseado (en lugar de prohibir el teléfono específico en sí)

Tenga en cuenta: de ninguna manera estoy diciendo que esto es correcto o "bueno" como una forma de operar si está escribiendo aplicaciones, pero parece razonable discutirlo, ya que es solo a través de la discusión que las personas descubrirán si están lo suficientemente preocupado como para hacer algo al respecto y lo que podría ser.

Neil
fuente
1

Hay una clase SharedPreferences - https://developer.android.com/reference/android/content/SharedPreferences.html - que algunas aplicaciones usan para almacenar datos de preferencias. Estos datos no se eliminan cuando se desinstala la aplicación. Si la aplicación se reinstala más tarde, las claves SharedPreferences guardadas anteriormente aún están disponibles.

David Bennett
fuente
66
SharedPreferencesen realidad se eliminan cuando se desinstala la aplicación. Hay formas para que los desarrolladores configuren copias de seguridad, pero de forma predeterminada se eliminan al desinstalar. (Fuente: como desarrollador, desinstalo mis aplicaciones para borrar las preferencias. Ver también: stackoverflow.com/a/9815641/1438733 )
Eric
1

Hay otra posibilidad: el uso de cookies persistentes con un "tiempo de caducidad" muy grande. Supongo que así es como múltiples aplicaciones del mismo desarrollador solían compartir credenciales tradicionalmente, cuando las credenciales almacenadas a través de la función de cuentas no eran tan abiertas / conocidas por el público.

computacion
fuente