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加个是否要判断的字段,要的情况下再判断,否则放过。


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


目录
相关文章
|
安全 Android开发
夜神模拟器 安卓7.0 burp抓包 https流量
夜神模拟器 安卓7.0 burp抓包 https流量
412 0
|
6月前
|
Java 关系型数据库 数据库
Android App连接真机步骤与APP的开发语言和工程结构讲解以及运行实例(超详细必看)
Android App连接真机步骤与APP的开发语言和工程结构讲解以及运行实例(超详细必看)
98 0
|
存储 传感器 定位技术
《移动互联网技术》 第四章 移动应用开发: Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序
《移动互联网技术》 第四章 移动应用开发: Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序
188 0
|
27天前
|
网络协议 Shell 网络安全
解决两个 Android 模拟器之间无法网络通信的问题
让同一个 PC 上运行的两个 Android 模拟器之间能相互通信,出(qiong)差(ren)的智慧。
23 3
|
6月前
|
Android开发
如何在Android真机上检测是否有Google Map add-on
如何在Android真机上检测是否有Google Map add-on
73 3
|
4月前
|
机器学习/深度学习 人工智能 文字识别
文本,文字扫描01,OCR文本识别技术展示,一个安卓App,一个简单的设计,文字识别可以应用于人工智能,机器学习,车牌识别,身份证识别,银行卡识别,PaddleOCR+SpringBoot+Andr
文本,文字扫描01,OCR文本识别技术展示,一个安卓App,一个简单的设计,文字识别可以应用于人工智能,机器学习,车牌识别,身份证识别,银行卡识别,PaddleOCR+SpringBoot+Andr
|
6月前
|
开发工具 Android开发
解决夜神模拟器与Android studio自动断开的问题
解决夜神模拟器与Android studio自动断开的问题
379 1
|
6月前
|
Shell
android2.3.4没有google map的真机上增加google map(原创)
android2.3.4没有google map的真机上增加google map(原创)
55 4
|
6月前
|
编解码 Android开发
android 创建平板电脑模拟器(转)
android 创建平板电脑模拟器(转)
158 2
|
6月前
|
Java 开发工具 Android开发
android模拟器安装问题
android模拟器安装问题
49 1