Android reconoce el emulador y determina si es un emulador o una máquina real

Prefacio

Para los desarrolladores de Android, el simulador es una herramienta de desarrollo, pero para los usuarios, probablemente 薅羊毛, 找漏洞de ganar dinero.

Independientemente de si es 活动风控o 内容保护espera otros puntos de partida, es posible que sea necesario identificar Android模拟器o incluso prohibir el inicio de sesión del simulador u operaciones posteriores.

Haga una breve discusión hoy.

principio

El reconocimiento del principio del simulador, de hecho, es encontrar 模拟器y 真机diferencias, pero estas diferencias se reflejan en lo que es, como operadores, tarjetas telefónicas, Bluetooth, varios sensores, etc.

Pero ahora el simulador es cada vez más poderoso y se puede simular 不同品牌en 不同型号el 不同版本teléfono móvil y Bluetooth, puede llamar.

¿Es un dolor de cabeza? Si no tienes cuidado, juzgarás mal. Así que ahora hay un esquema en el mercado que se basa en el número de diferencias entre el 容错机制simulador y la máquina real. Por ejemplo, si hay más de 3 diferencias entre el simulador y la máquina real, se juzga como una simulación Dispositivo.

Pero, de hecho, algunas versiones antiguas de teléfonos móviles ni siquiera son tan avanzadas como el simulador ... Así que el mecanismo tolerante a fallos también puede añadir un trato diferenciado a los usuarios, los usuarios individuales no detectan, etc.

Prohibir que el simulador instale apk

La arquitectura general de la CPU del simulador es x86la misma, podemos build.gradleeliminar x86el soporte en ella.

        ndk {
            // 设置支持的SO库架构
            abiFilters 'armeabi-v7a', 'arm64-v8a'
        }

Por supuesto, algunos teléfonos móviles también pueden ser x86, lo cual es un error de juicio, porque no existe una solución más completa en la actualidad, por lo que lo anterior 容错机制es más importante.

Simplemente eliminar el soporte x86 no es suficiente, porque algunos simuladores no son arquitecturas x86, por lo que aún tenemos que averiguar la diferencia entre el simulador y la máquina real.

Por supuesto, no es necesario prohibirlo, solo identificarlo.

Reconocimiento de código

Aquí también se menciona en el principio, para determinar si hay múltiples juicios como Bluetooth, número de serie, sensor, arquitectura de la CPU, etc.

Recomiende una biblioteca aquí: CacheEmulatorChecker

La llamada también es relativamente simple, solo una línea de código:

       val emulator = EmulatorDetectUtil.isEmulator(this)
        if (emulator) {
            ToastUtils.show(this, "检测到您的设备可能为模拟器", Toast.LENGTH_LONG)
        }

verificación

Prohibido agregar programa de reconocimiento de código, simulador actualmente verificado:

  • Simulador feliz
  • Simulador de pila azul
  • Simulador de Dios de la noche
  • Simulador de todos los días
  • Asistente de juegos móviles Tencent
  • Simulador de rayos
  • Simulador de MUMU
  • Master Lu maestro de simulación de teléfonos móviles

Y modelos convencionales de varias marcas de teléfonos móviles convencionales, prueba bien

Al final

En la actualidad, todavía no existe una solución completa y abierta, por lo que para evitar errores de juicio, aún es necesario implementar mecanismos de tolerancia a fallas relacionados de acuerdo con su propio negocio, como agregar un campo al usuario si debe juzgar y luego juzgar si es necesario, de lo contrario Déjalo ir.

Al final, si tiene un método mejor, bienvenido a discutir.

Supongo que te gusta

Origin blog.csdn.net/yechaoa/article/details/108800001
Recomendado
Clasificación