關於 Android 模擬器識別的事

市場上發行的模擬器大可能是 VirtualBox + Android X86 + Houdini 方案,以 VirtualBox 爲虛擬環境,搭載 Android X86 系統,使用 Intel Houdini 翻譯執行 ARM 指令。android

關於 Intel Houdini 的討論,參見 《Intel Houdini 比 QEMU 快在哪裏?》安全

某些優秀模擬器在運行只帶有 ARM 動態庫的遊戲時,在遊戲內經過 __system_property_get 獲取的的 ABI 將會是 arm,而不是 x86,訪問 /proc/cpuinfo 獲取到的 CPU 也是虛假的 ARM 處理器信息,欺騙遊戲認爲本身運行在一個 ARM 環境中。ui

使用電量變化、WIFI信號變化、蜂窩信號變化、陀螺儀等動態變化特徵是最好的方法,可是須要一段時間的特徵採集,才能判斷是否運行在模擬器中,適合做爲一種補充。如某 FPS 手遊,新玩家進入後,分配到的遊戲區不是模擬器專用遊戲區,而當進入第二局遊戲的時候,就被分配到了模擬器專區。翻譯

比較正經的 Android X86 + Houdini 模擬器,如 Genymotion,都會存在 /system/lib/libhoudini.so,而這個特徵廣爲人知,國內處理版本比較老的模擬器外,基本上都隱藏了 libhoudini.so 調試

下面介紹一些還能使用的靜態特徵code

模擬器 文件特徵 屬性特徵
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)會爲了迎合某些上班隱形土豪羣體的須要,同時也爲了安全起見,會選擇與優秀的模擬器供應商合做,提供專用的模擬器。get

相關文章
相關標籤/搜索