In che modo alcune app Android ricordano che questa non è la prima volta che vengono installate?


33

Alcune app Android possono ricordare se sono state installate sullo stesso dispositivo in precedenza. Supponiamo di aver disinstallato un'app un anno fa. Dopo un anno se installi di nuovo quella stessa app, quell'app sarà in grado di riconoscere che è stata installata prima sullo stesso telefono.

Questa tecnica viene utilizzata dalle applicazioni online per vietare permanentemente agli utenti di creare nuovamente un nuovo account se è stato loro vietato di utilizzare il servizio una volta. Quando tali utenti creano un nuovo account reinstallando l'applicazione in un secondo momento, queste app sono in grado di rilevare la loro "presenza prima volta" e inviare queste informazioni ai server in modo che l'utente possa essere nuovamente escluso.

Come lo fanno anche dopo aver cancellato i loro dati e averli disinstallati completamente? Significa che mantengono alcuni file da qualche parte nel telefono, che non viene eliminato dopo la disinstallazione. Come disabilito questo rilevamento?


Perché vuoi eliminare queste informazioni? I creatori di app hanno diritti? Non mi aspetto che questo sia un commento popolare, ma considera se hai preso il tempo e i problemi per creare un'app.
S. Mitchell,

6
@ S.Mitchell Oggi Alcuni sviluppatori di app e grandi aziende pubblicitarie cercano di accedere a dettagli non necessari da utenti innocenti. Non solo vogliono un indirizzo MAC, ma vogliono anche conoscere il tuo SSID wifi.Google ha dato loro una buona lezione implementando quali autorizzazioni non vuoi concedere in Android 6. Ma gli inserzionisti non si fermano qui, trovano sempre un modo per spostarsi. Voglio garantire questo sistema di privacy.
defalt

1
@ S.Mitchell Ciao Mitchell. Potresti giudicarmi errato a causa della mia domanda. No, non sono bandito da alcun servizio sociale o online e nemmeno dallo scambio di stack se ne dubiti. Ma per me sapere è imparare. Non sto facendo alcun lavoro pratico con le risposte che ho ricevuto qui. Ma sicuramente aiutano a sapere come funzionano le cose. Non si può creare sicurezza anti-hacking se non si sa come hackerare. La stessa analogia è qui. Se non riesco a capire come funzionano le app, non c'è motivo di crearne una.
defalt

7
@ S.Mitchell: Do app creators have rights?In realtà, sul mio telefono, non lo fanno. Potrei lasciare che eseguano il loro codice e archivino i loro dati sul mio telefono, ma non hanno il diritto e mi riservo il diritto di revocare entrambi i privilegi a mia discrezione.
dotancohen,

2
@ S.Mitchell incoraggerei le risposte a tutte le domande indipendentemente dal motivo per cui pensi che esistano. buona cosa non gestisci questo sito!
Scusati e ripristina Monica il

Risposte:


33

Esistono diversi modi per identificare un dispositivo unico o il suo utente:

  1. Conserva un file in una directory (non predefinita) : l'hai già detto; le app possono spesso scrivere nella memoria interna di un dispositivo. Questo metodo è semplice, funziona offline e non è il più facile da individuare (posizionare il file in una directory simile al sistema e nessuno si preoccuperà di eliminarlo).
  2. Tieni traccia di un dispositivo unico ANDROID_ID(unico per una nuova installazione) : questo metodo è semplice ma richiede l'accesso a Internet, almeno al primo utilizzo. Non è molto invadente e non persiste in caso di ripristino delle impostazioni di fabbrica. È anche unico per utente. Vedere queste informazioni .
  3. IMEI : molto invadente, immutabile ma richiede un dispositivo compatibile con SIM. L'IMEI è unico per ogni dispositivo, non può essere modificato e non segue l'utente, il che significa che se vendi il tuo dispositivo, il nuovo proprietario verrà accolto con uno schermo che gli dice che l'app era già sul telefono.
  4. Segui l'account Google di un utente : questo è praticamente uguale ANDROID_IDall'approccio ma richiede l'accesso esplicito (Android 6.0+) da parte dell'utente per accedere. Le app che sfruttano l'ecosistema dell'account Google (ad esempio punteggi migliori e risultati nei giochi) possono quindi seguire un utente specifico e ottenere più informazioni rispetto al semplice fatto che l'app sia stata installata o meno.

2, 3 e 4 richiedono una connessione di rete e un server sul lato dello sviluppatore.


Posso gestire 2,3 e 4a parte usando Xprivacy. Farò uno spoofing a ciascuno di essi. Ma il primo, non è facile da individuare. Posso comunque rilevare questa vulnerabilità?
defalt

3
Non è una vulnerabilità, solo una funzionalità abusata. Proprio come le applicazioni che mantengono i file nel registro. Non c'è molto che puoi fare oltre a consultare tutte le directory nella memoria interna del tuo telefono e cercare file sospetti.
GiantTree,

1
Buona fortuna a trovare / creare questa app. Il sistema non può arrestarsi in modo anomalo a causa di alcuni file mancanti nella memoria interna. In generale, le app tendono ad usare gli stessi framework che usano gli stessi file ma, come hai già sottolineato, quei file sono impossibili da trovare (non sempre, ma il più delle volte). I file che contengono elementi come "id", "user" o simili spesso contengono un ID di questo tipo e tali ID vengono generalmente utilizzati per la pubblicità.
GiantTree,

2
@ S.Mitchell No, non sono mai stato bandito da alcun servizio online, applicazione web e gioco online. Ma credo che sapere come funziona il sistema dietro la sua interfaccia sia il passo giusto per andare avanti nello sviluppo Android.
defalt

8
@ user334283 "non sapere mai quale nome di file stai cercando". Questo è falso Android, essendo un sistema operativo Linux, ha l' straceutilità che può essere utilizzata per tenere traccia di tutte le chiamate di sistema. Quindi devi avviare la tua app usando stracee controllare tutte le chiamate di sistema relative ai file sul dispositivo e vedrai tutti i file letti / controllati per l'esistenza dall'app. Certo: probabilmente abbastanza difficile da fare sullo smartphone ma sicuramente possibile .
Bakuriu,

2

Non è collegato allo storage, ma al cloud. È così che ricorda anche se hai cancellato i tuoi dati. Per disattivarlo, vai all'app delle impostazioni del tuo dispositivo, tocca account google in personale (tocca l'account desiderato se hai più account), quindi disattiva le app che non desideri sincronizzare automaticamente.


La sincronizzazione automatica non è il problema principale. I server di terze parti si assicurano che la loro app sia in grado di raccogliere il tuo indirizzo MAC, IMEI, ID dispositivo, ID pubblicità e archiviarlo sui server per rilevare nuovamente il dispositivo in futuro. Lo spoofing di questi dettagli manterrà la tua privacy, ma se un'app sta scrivendo "voci di registro" come in Windows il problema sarà irrilevabile.
defalt

2

La risposta di GiantTree la copre meglio, ma c'è un altro punto su cui riflettere. Sarebbe chiaramente un " modello scuro ", ma questa identificazione potrebbe essere fatta anche tramite l' impronta digitale di alcuni dati dell'utente - questo può essere visto come una variante al suo primo punto ("conserva un file") ma sarebbe più difficile da rilevare e meno conveniente evitare.

Quanto sia resistente dipende dai dati scelti. Il metodo più ovvio sarebbe guardare i dettagli di contatto e usare una qualche forma di impronta digitale di questo; un'alternativa potrebbe essere l'uso di timestamp fotografici e altri metadati. Chiaramente questi cambiano nel tempo, quindi qualunque metodo sia stato usato dovrebbe ancora dare una risposta stretta dopo la modifica (quindi differisce da una funzione hash tradizionale). Inoltre, non esiste alcuna garanzia che un utente non cancelli semplicemente i dati rilevati, ma in molti casi le persone preferiranno non farlo.

Potresti voler esaminare le impronte digitali del browser per avere un'idea di come funziona, anche se sarà leggermente diverso perché l'hardware del telefono è in genere più uniforme dell'hardware del PC. Detto questo, l'aggiunta di alcuni dettagli del telefono può aiutare a restringere leggermente l'impronta digitale.

In particolare, questo approccio si interrompe se un utente cambia telefono e porta i propri dettagli con sé su un nuovo telefono: in questo caso (a meno che i dettagli del telefono non vengano inseriti nell'impronta digitale), il nuovo telefono potrebbe essere rilevato come se avesse già avuto un'installazione, come è stata posta la domanda. Tuttavia sembra abbastanza probabile che in uno scenario in cui un'app stia cercando di vietare un utente, questo potrebbe effettivamente essere il risultato desiderato (piuttosto che vietare lo stesso telefono specifico)

Nota: in nessun modo sto dicendo che questo è corretto o "buono" come modo di operare se stai scrivendo app, ma sembra ragionevole discuterne in quanto è solo attraverso la discussione che le persone capiranno se stanno abbastanza preoccupato da fare qualcosa al riguardo e quale potrebbe essere.


1

Esiste una classe SharedPreferences - https://developer.android.com/reference/android/content/SharedPreferences.html - che alcune app utilizzano per archiviare i dati delle preferenze. Questi dati non vengono eliminati quando l'app viene disinstallata. Se l'app viene successivamente reinstallata, tutte le chiavi SharedPreferences salvate in precedenza sono ancora disponibili.


6
SharedPreferencesvengono effettivamente eliminati quando l'app viene disinstallata. Esistono modi per gli sviluppatori di impostare i backup, ma per impostazione predefinita vengono rimossi al momento della disinstallazione. (Fonte: come sviluppatore, disinstallo le mie app per cancellare le preferenze. Vedi anche: stackoverflow.com/a/9815641/1438733 )
Eric,

1

Esiste un'altra possibilità: l'uso di cookie persistenti con un "tempo di scadenza" molto ampio. immagino che sia così che più app dello stesso sviluppatore condividessero le credenziali tradizionalmente, quando le credenziali archiviate tramite la funzione degli account non erano così aperte / conosciute dal pubblico.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.