IOS/Android检测虚拟机模拟器的方法

Android检测虚拟机模拟器的方法

安卓模拟器检测的方法有很多,一些简单的信息能通过软件伪造,但是全方位多维度的伪造就相当难了,这里集合了几乎所有的安卓模拟器检测方法,为了测试检测效果,我下了多款市面常见的模拟器进行测试,经过测试,所有的模拟器都能被正确识别. 通过 Leakcanary 测试,没有发现内存泄漏问题.

IOS/Android检测虚拟机模拟器的方法

检测模拟器的方法集合

检测设备信息

Build 类用来从系统属性中提取设备硬件和版本信息 通过分析这些信息和市面已有模拟器的信息进行对比 就可以做出初步判断

检测包名

根据常见模拟器包名 通过 PackageManager.getLaunchIntentForPackage(包名) 判断Intent能否被解析 从而判断当时是不是模拟器环境

检测移动网络运营商

虚拟机的手机运营商一般都是 android

检测模拟器上特有文件

检测模拟器属性

通过尝试查询设备系统属性中是否包含模拟器属性 来检测模拟器环境

检测虚拟机驱动

读取驱动文件, 检查是否包含已知的qemu驱动

检测网卡IP

Android模拟器默认的地址是10.0.2.15

检测光传感器

由于光传感器模拟器不容易伪造 在这里判断设备是否存在光传感器来判断是否为模拟器

Build 类获取系统信息

  • Product: 产品名称
  • Manufacturer: 硬件制造商
  • Brand: 品牌
  • Device: 设备名称
  • Model: 系统版本
  • Hardware: 硬件名称
  • FingerPrint: 唯一识别码

代码示例

工具类

使用方法

IOS判断虚拟机模拟器方法

使用系统自带的宏定义判断即可

参考链接

How can I detect when an Android application is running in the emulator?

检测Android虚拟机的方法和代码实现

Android判断模拟器还是真机的方法

Android检测虚拟机的方法