跳到正文
文章 android

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

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

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

检测模拟器的方法集合

检测设备信息

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检测虚拟机的方法