市场上发行的模拟器大多是 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)会为了迎合某些上班隐形土豪群体的需要,同时也为了安全起见,会选择与优秀的模拟器供应商合作,提供专用的模拟器。


爱萌愚忠分子
6 声望1 粉丝

某小游戏公司雇佣的脚本小子,专注游戏安全和赚钱。不提供其它联系方式,请私信交流。