# CacheEmulatorChecker **Repository Path**: david25/CacheEmulatorChecker ## Basic Information - **Project Name**: CacheEmulatorChecker - **Description**: 设备指纹 获取真实的IMEI AndroidId 序列号 MAC地址等,Android模拟器检测,检测Android模拟器 ,作为可信DeviceID,应对防刷需求等 Android设备指纹 How to detect Android emulator - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-11-10 - **Last Updated**: 2025-11-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 非商业牟利项目 ## 本库目标: * 1 检测运行设备是否模拟器 * 2 获取相对真实的IMEI AndroidId 序列号 MAC地址等 ### 用法 MavenCentral implementation 'io.github.happylishang:antifake:1.7.0' Java代码中: 模拟器检测激进做法 EmulatorDetectUtil.isEmulatorFromAll(context) 模拟器保守做法 AndroidDeviceIMEIUtil.isRunOnEmulator(context) //特征值判断 非UI进程启动检测,回调上报 EmuCheckUtil.checkEmulatorFromCache(getApplicationContext(), new EmuCheckUtil.CheckEmulatorCallBack() { @Override public void onCheckSuccess(boolean isEmulator) { } @Override public void onCheckFaild() { } }) #### 1、检测是否模拟器原理 [ Android模拟器识别技术](http://www.jianshu.com/p/1db610cc8b84) ARM与模拟器采用的Simple X86在架构上有很大区别,可利用SMC(自修改代码+mmap)甄别 原文链接 [ Android模拟器识别技术](http://www.jianshu.com/p/1db610cc8b84) #### 2、获取真实的Android设备信息 * 可以采用一些系统隐藏的接口来 * 可以自己实现通过Binder通信 * 可以采用Native方式获取设备信息,避免被Xposed Hook #### Android8.0之后,序列号的获取跟IMEI权限绑定,如果不授权电话权限,同样获取不到序列号 #### Android 10.0之后,序列号、IMEI 非系统APP获取不到 #### Android 11.0之后,序列号、IMEI MAC 非系统APP获取不到 java 1.8 demo更容易跑起来