Come posso garantire che un'app per Android sia stata installata su un dispositivo fisico e non su un emulatore?

5

Voglio evitare che gli utenti installino l'app sui dispositivi virtuali.

C'è un modo per dirlo? Cosa è meglio che tu possa fare?

Idealmente ciò che voglio impedire nel suo insieme è una persona o entità che crea molti account per analizzare facilmente il mio servizio. L'app è solo un portale e i processi sono solo server. Uso captchas durante la creazione dell'account e durante l'utilizzo del servizio per garantire l'interazione umana. Utilizzo anche token push up e altro hardware e informazioni google per garantire il più possibile che l'account venga utilizzato sempre dallo stesso dispositivo e password ecc. Se l'utente cambia il suo dispositivo. In altre parole, voglio massimizzare il costo di risoluzione captcha umano il più possibile.

    
posta SaintJob 2.0 05.01.2014 - 19:23
fonte

2 risposte

5

In realtà questa risposta è su SO:

link

In realtà non puoi impedirne l'installazione, dal momento che l'app non verrà avviata fino a quando non sarà stata installata e, per quanto ne so, non c'è modo di avere qualcosa da eseguire anche durante l'installazione, quindi tu? Dovrò aspettare che tu sia stato installato e lanciato attraverso qualche intento prima di eseguire il controllo di essere su un dispositivo fisico.

Penso perché lo stai chiedendo qui, anche se probabilmente stai cercando una comprensione delle implicazioni per la sicurezza di questo. Il problema è che se non vuoi che la tua app sia in esecuzione sul simulatore ma solo su un dispositivo fisico perché sei preoccupato per qualcuno che guarda a cosa sta andando la tua app, temo che tu non abbia fortuna. Tieni presente che un dispositivo fisico può essere radicato e quindi sei davvero sfortunato perché non c'è davvero modo di sapere cosa succede dietro le quinte.

    
risposta data 05.01.2014 - 19:47
fonte
6

Non sono sicuro che ci sia un modo. È possibile esaminare la configurazione hardware per vedere se sta utilizzando uno qualsiasi dei tipici hardware emulati, ma se qualcuno modifica il proprio emulatore, potrebbe essere configurato in modo da sembrare molto vicino all'hardware reale. Questo è, in effetti, l'intero punto di un emulatore. Inoltre, non sono sicuro di cosa stai cercando di impedire assicurandoti che sia in esecuzione su un dispositivo reale. Non c'è niente in particolare in cui io possa pensare che tu possa fare con un emulatore che non puoi fare con un dispositivo fisico, a meno che tu non stia verificando che la root non sia abilitata, anche se un hacker sofisticato potrebbe probabilmente ignorare la maggior parte dei controlli di root pure.

Fondamentalmente, non puoi proteggere l'hardware di cui non puoi fidarti. Se è così importante, scarica il processo su un server di cui hai il controllo. Devi fidarti del tuo utente e del tuo hardware utente se vuoi fare qualcosa di importante su di esso. Altrimenti, il meglio che puoi fare è offuscare, ma quello è lo stesso regno di DRM e fornisce una sicurezza minima. Se il dispositivo può farlo, un utente può capire cosa sta facendo il dispositivo. L'unico modo per evitare questo è di sicuro impedire all'utente di accedere al dispositivo facendo il lavoro.

    
risposta data 05.01.2014 - 19:40
fonte

Leggi altre domande sui tag