Ruc*_*nia 5 android emulation virtual-machine android-emulator genymotion
最近,我看到这篇Stackoverflow 帖子,描述了如何检查运行应用程序的设备是否是模拟器。该解决方案描述了检查设备指纹、型号和品牌:
public static boolean isEmulator() {
return Build.FINGERPRINT.startsWith("generic")
|| Build.FINGERPRINT.startsWith("unknown")
|| Build.MODEL.contains("google_sdk")
|| Build.MODEL.contains("Emulator")
|| Build.MODEL.contains("Android SDK built for x86")
|| Build.MANUFACTURER.contains("Genymotion")
|| (Build.BRAND.startsWith("generic") && Build.DEVICE.startsWith("generic"))
|| "google_sdk".equals(Build.PRODUCT);
}
Run Code Online (Sandbox Code Playgroud)
现在我想知道是否有办法解决这个问题。如果我有一个标准的 Genymotion 设备,我如何才能掩盖我的模拟器的指纹、型号和品牌?
现在,如果您想知道为什么我要这样做,那只是为了尝试在模拟器上实现真正的设备体验,特别是在拒绝在模拟器上运行的应用程序上。
小智 7
一般来说,有三种方法可以绕过模拟器检查:
没有一种方法那么简单;但是,第三种方法可能是最简单的,因为有一些工具可以帮助您。
回到选项1 - 它需要大量的开发技能来反编译应用程序(例如使用apktool将其反编译为Smali代码),识别模拟器检查,然后绕过可能存在的应用程序完整性检查。
选项 2 更加困难,因为它需要您修补并重新编译 Android 模拟器(可作为源代码获取)。
因此,从我的角度来看,只有选项 3 对您来说是现实的。然而,它仍然可能需要一些 Java 开发。
您可以将 XPosed 框架安装到模拟器上。它允许修改应用程序用于识别它正在模拟器上运行的系统调用。有一些现有的 XPosed 模块用于隐藏设备已获得 root 权限或正在模拟器上运行。如果幸运的话,有一个现成的模块可以开箱即用,让您可以在模拟器上运行您的应用程序。
| 归档时间: |
|
| 查看次数: |
23005 次 |
| 最近记录: |