¿Cómo puedo asegurarme de que una aplicación de Android se instaló en un dispositivo físico y no en un emulador?

5

Quiero evitar que las personas instalen la aplicación en dispositivos virtuales.

¿Hay alguna manera de decir esto? ¿Qué es lo mejor que puedes hacer?

Idealmente, lo que quiero evitar como un todo es que una persona o entidad cree muchas cuentas para analizar mi servicio fácilmente. La aplicación es solo un portal y los procesos son solo de servidor. Uso captchas cuando se crea la cuenta y mientras uso el servicio para asegurar la interacción humana. También utilizo tokens push up y otro hardware e información de google para garantizar que la cuenta se use siempre desde el mismo dispositivo y contraseñas, etc., si el usuario cambia su dispositivo. En otras palabras, quiero maximizar el costo de resolución de captcha humana tanto como pueda.

    
pregunta SaintJob 2.0 05.01.2014 - 19:23
fuente

2 respuestas

5

Esto se responde en realidad en SO:

enlace

En realidad, no puede evitar que se instale, ya que su aplicación no se iniciará hasta que se haya instalado y, por lo que yo sé, no hay forma de que algo se ejecute durante la instalación, así que Tendré que esperar hasta que haya sido instalado y ejecutado por algún intento antes de realizar la comprobación de que está en un dispositivo físico.

Creo que porque lo estás preguntando aquí, aunque probablemente estés buscando un entendimiento de las implicaciones de seguridad para esto. El problema es que, si no desea que su aplicación se ejecute en el simulador, sino solo en un dispositivo físico porque le preocupa que alguien vea lo que está haciendo su aplicación, me temo que no tiene suerte. Tenga en cuenta que un dispositivo físico puede ser arraigado y entonces realmente no tiene suerte ya que realmente no hay manera de saber qué sucede detrás de la escena.

    
respondido por el Mark Fidell 05.01.2014 - 19:47
fuente
6

No estoy seguro de que haya una manera. Puede examinar la configuración del hardware para ver si está utilizando alguno de los emuladores típicos, pero si alguien modifica su emulador, podría configurarlo para que se vea muy cerca del hardware real. Eso es, de hecho, el punto entero de un emulador. Tampoco estoy seguro de lo que intentas evitar asegurándome de que se está ejecutando en un dispositivo real. No hay nada en particular en lo que pueda pensar que pueda hacer con un emulador que no pueda hacer con un dispositivo físico, a menos que también esté comprobando que la raíz no está habilitada, aunque un atacante sofisticado probablemente podría omitir la mayoría de las comprobaciones. de la raíz también.

Fundamentalmente, no puedes asegurar un hardware en el que no puedes confiar. Si es tan importante, descargue el proceso a un servidor del que tenga control. Debe confiar en su usuario y en su hardware de usuario si desea hacer algo importante en él. De lo contrario, lo mejor que puede hacer es ofuscar, pero ese es el mismo reino que el DRM y proporciona una seguridad bastante mínima. Si el dispositivo puede hacerlo, un usuario puede averiguar qué está haciendo el dispositivo. La única forma de evitarlo es evitar que el usuario tenga acceso al dispositivo que realiza el trabajo.

    
respondido por el AJ Henderson 05.01.2014 - 19:40
fuente

Lea otras preguntas en las etiquetas