Class: AiRootShield::Analyzers::EmulatorDetector

Inherits:
Object
  • Object
show all
Defined in:
lib/ai_root_shield/analyzers/emulator_detector.rb

Overview

Detects emulator and simulator environments

Constant Summary collapse

EMULATOR_FILES =

Known emulator indicators

%w[
  /dev/socket/qemud
  /dev/qemu_pipe
  /system/lib/libc_malloc_debug_qemu.so
  /sys/qemu_trace
  /system/bin/qemu-props
  /dev/socket/baseband_genyd
  /dev/socket/genyd
  /proc/tty/drivers
  /proc/cpuinfo
  /system/lib/libdvm.so
  /system/bin/androVM-prop
  /system/bin/microvirt-prop
  /system/lib/libhoudini.so
  /system/lib/arm/libhoudini.so
].freeze
EMULATOR_PROPERTIES =
%w[
  ro.kernel.qemu
  ro.bootmode
  ro.hardware
  ro.product.device
  ro.product.model
  ro.product.name
  ro.product.brand
  ro.build.product
  ro.build.fingerprint
  init.svc.qemud
  qemu.hw.mainkeys
  qemu.sf.fake_camera
  qemu.sf.lcd_density
  ro.kernel.android.qemud
].freeze
EMULATOR_PACKAGES =
%w[
  com.google.android.launcher.layouts.genymotion
  com.bluestacks
  com.bignox.app
  com.vphone.launcher
  com.microvirt.guide
  com.microvirt.market
  com.microvirt.memuplay
  com.android.development_settings
  com.android.development
  com.android.emulator.smoketests
].freeze
IOS_SIMULATOR_INDICATORS =

iOS Simulator indicators

%w[
  i386
  x86_64
  Simulator
  iPhone Simulator
  iPad Simulator
  AppleTV Simulator
].freeze

Instance Method Summary collapse

Instance Method Details

#analyze(device_data) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/ai_root_shield/analyzers/emulator_detector.rb', line 65

def analyze(device_data)
  factors = []
  risk_score = 0

  case device_data[:platform]
  when "android"
    android_result = check_android_emulator(device_data)
    factors.concat(android_result[:factors])
    risk_score += android_result[:risk_score]
  when "ios"
    ios_result = check_ios_simulator(device_data)
    factors.concat(ios_result[:factors])
    risk_score += ios_result[:risk_score]
  end

  # Cross-platform checks
  cross_platform_result = check_cross_platform_indicators(device_data)
  factors.concat(cross_platform_result[:factors])
  risk_score += cross_platform_result[:risk_score]

  {
    factors: factors,
    risk_score: [risk_score, 100].min
  }
end