• Stars
    star
    1,338
  • Rank 35,129 (Top 0.7 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 7 years ago
  • Updated 12 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

设备指纹 获取真实的IMEI AndroidId 序列号 MAC地址等,Android模拟器检测,检测Android模拟器 ,作为可信DeviceID,应对防刷需求等 Android设备指纹 How to detect Android emulator

非商业牟利项目

本库目标:

  • 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模拟器识别技术

ARM与模拟器采用的Simple X86在架构上有很大区别,可利用SMC(自修改代码+mmap)甄别

原文链接 Android模拟器识别技术

2、获取真实的Android设备信息

  • 可以采用一些系统隐藏的接口来
  • 可以自己实现通过Binder通信
  • 可以采用Native方式获取设备信息,避免被Xposed Hook

Android8.0之后,序列号的获取跟IMEI权限绑定,如果不授权电话权限,同样获取不到序列号

Android 10.0之后,序列号、IMEI 非系统APP获取不到

Android 11.0之后,序列号、IMEI MAC 非系统APP获取不到