市场上发行的模拟器大多是 VirtualBox + Android X86 + Houdini 方案,以 VirtualBox 为虚拟环境,搭载 Android X86 系统,使用 Intel Houdini 翻译执行 ARM 指令。
关于 Intel Houdini 的讨论,参见 《Intel Houdini 比 QEMU 快在哪里?》
某些优秀模拟器在运行只带有 ARM 动态库的游戏时,在游戏内通过 __system_property_get
获取的的 ABI 将会是 arm,而不是 x86,访问 /proc/cpuinfo
获取到的 CPU 也是虚假的 ARM 处理器信息,欺骗游戏认为自己运行在一个 ARM 环境中。
使用电量变化、WIFI信号变化、蜂窝信号变化、陀螺仪等动态变化特征是最好的方法,但是需要一段时间的特征采集,才能判断是否运行在模拟器中,适合作为一种补充。如某 FPS 手游,新玩家进入后,分配到的游戏区不是模拟器专用游戏区,而当进入第二局游戏的时候,就被分配到了模拟器专区。
比较正经的 Android X86 + Houdini 模拟器,如 Genymotion,都会存在 /system/lib/libhoudini.so
,而这个特征广为人知,国内处理版本比较老的模拟器外,基本上都隐藏了 libhoudini.so
下面介绍一些还能使用的静态特征
模拟器 | 文件特征 | 属性特征 |
---|---|---|
VirtualBox | /system/bin/androVM-prop /system/bin/androVM-vbox-sf /system/bin/androVM_setprop /system/bin/get_androVM_host /system/bin/mount.vboxsf /system/lib/egl/libGLES_emulation.so /system/lib/egl/libGLESv1_CM_emulation.so /system/lib/egl/libGLESv2_emulation.so |
init.svc.vbox86-setup androVM.vbox_dpi androVM.vbox_graph_mode |
AVD | /system/bin/qemu_props | ro.kernel.android.qemud init.svc.qemud |
逍遥模拟器 | /system/bin/microvirtd /system/bin/microvirt-prop |
init.svc.microvirtd |
夜神模拟器 | /system/bin/nox /system/bin/nox-prop /system/bin/nox-vbox-sf /system/bin/nox-setprop |
init.svc.noxd |
海马玩 | /system/lib/libdroid4x.so /system/bin/droid4x /system/bin/droid4x-prop /system/bin/droid4x-vbox-sf /system/bin/droid4x-setprop |
init.svc.droid4x |
天天模拟器 | /system/bin/ttVM-prop /system/bin/ttVM-vbox-sf /system/bin/ttVM-setprop /system/lib/egl/libEGL_tiantianVM.so /system/lib/egl/libGLESv1_CM_tiantianVM.so /system/lib/egl/libGLESv2_tiantianVM.so |
init.svc.ttVM_x86-setup ttVM.vbox_dpi |
BlueStacks | /system/bin/bstcmd_shim /system/bin/bstfolderd /system/bin/bstsyncfs /data/.bluestacks.prop /system/lib/egl/libGLES_bst.so /system/lib/egl/libGLES_bst.so-arm |
init.svc.bstfolderd init.svc.bstsvcmgrtest |
由于模拟器自带 root 权限,默认开启 ADB 调试,各种**助手和外挂穷出不尽,对手游的安全威胁度极高,该类玩家应为重点关照群体。另外,模拟器玩家游戏充值不便,小打金工作室也主要利用模拟器作为平台,该类用户价值不高。
某些较大规模的游戏厂商(T)会为了迎合某些上班隐形土豪群体的需要,同时也为了安全起见,会选择与优秀的模拟器供应商合作,提供专用的模拟器。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。