Android识别模拟器,判断是模拟器还是真机

简介: Android识别模拟器,判断是模拟器还是真机

前言

对于android开发者来说,模拟器是开发工具,但是对用户来说,可能就是薅羊毛、找漏洞的赚钱工具。


不管是活动风控还是内容保护等等其他的出发点,应要求可能会要识别Android模拟器,甚至禁止模拟器登录或后续操作。


今天做个简单的探讨。


原理

识别模拟器的原理,其实就是找出模拟器和真机的差别,但是这些差别体现在哪呢,比如运营商、手机卡、蓝牙、各种传感器等等。


但是现在的模拟器也是越来越厉害了,可以模拟不同品牌的不同型号的不同版本的手机,而且有蓝牙、可以打电话。


是不是很头疼,一不小心就会误判了,所以现在市面上有一种方案也是根据模拟器和真机差别的次数来做一个容错机制,比如模拟器和真机超过3个差别,就判为模拟器。


但是实际上,有的老版本手机甚至还不如模拟器先进…所以容错机制中还可以加上对用户的区别对待,个别用户不检测等等。


禁止模拟器安装apk

模拟器一般的cpu架构都是x86的,我们可以在build.gradle中去掉对x86的支持。


 

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


当然也有一些手机可能也是x86的,这就误判了,因为目前来说还没有比较完善的解决方案,所以前面所说的容错机制就比较重要了。


仅仅是去掉x86的支持还是不够的,因为有的模拟器也不是x86架构,所以还是要进一步找出模拟器和真机的区别。


当然也可以不禁止,识别出来就行。


代码识别

这里还是原理中提到的,判断有没有蓝牙、序列号、传感器、cpu架构等等多重判断。


这里推荐一个库:CacheEmulatorChecker


调用也比较简单,一行代码即可:


 

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



验证

禁止加代码识别的方案,目前验证过的模拟器:


  • 逍遥模拟器
  • 蓝叠模拟器
  • 夜神模拟器
  • 天天模拟器
  • 腾讯手游助手
  • 雷电模拟器
  • MUMU模拟器
  • 鲁大师手机模拟大师

以及各种主流手机品牌的主流机型,测试ok


最后

目前来说,还是没有完善且公开的解决方案,所以为避免误判,还是要根据自己的业务做相关的容错机制,比如给user加个是否要判断的字段,要的情况下再判断,否则放过。


看到最后,如果你有更好的方法,欢迎讨论。


目录
相关文章
|
5月前
|
安全 Android开发
夜神模拟器 安卓7.0 burp抓包 https流量
夜神模拟器 安卓7.0 burp抓包 https流量
158 0
|
4月前
|
Java 关系型数据库 数据库
Android App连接真机步骤与APP的开发语言和工程结构讲解以及运行实例(超详细必看)
Android App连接真机步骤与APP的开发语言和工程结构讲解以及运行实例(超详细必看)
36 0
|
6月前
|
存储 传感器 定位技术
《移动互联网技术》 第四章 移动应用开发: Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序
《移动互联网技术》 第四章 移动应用开发: Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序
64 0
|
2月前
|
编译器 开发工具 Android开发
|
7月前
|
Android开发
MAC 安卓(Android) 编辑器无法识别真机
MAC 安卓(Android) 编辑器无法识别真机
120 0
|
7月前
|
Android开发 iOS开发 流计算
Mac 安卓(Android) 安装 Genymotion 模拟器
Mac 安卓(Android) 安装 Genymotion 模拟器
333 0
|
8月前
|
Android开发 Windows
Mac 好用的 Android 模拟器整理(玩游戏、装应用、支持咸鱼、拼多多...)
Mac 好用的 Android 模拟器整理(玩游戏、装应用、支持咸鱼、拼多多...)
8964 47
|
9月前
|
前端开发 Android开发
在android studio中启动模拟器的时候报错...keeps shopping
在android studio中启动模拟器的时候报错...keeps shopping
67 0
|
10月前
|
开发工具 Android开发 虚拟化
windows电脑安装 Android Studio 的时候提示“创建Android虚拟机或安装安卓模拟器失败”
windows电脑安装 Android Studio 的时候提示“创建Android虚拟机或安装安卓模拟器失败”
|
11月前
|
监控 开发工具 Android开发
AMD机器:Android Studio启动模拟器提示“HAXM is not installed”的解决办法
AMD机器:Android Studio启动模拟器提示“HAXM is not installed”的解决办法
1468 0