안드로이드 에뮬레이터 탐지 시스템 소면

전송 : HTTPS : //www.wireghost.cn/2018/05/10/Android 탐지 시스템 시뮬레이터 골프장 /

도구를 사용하여 가상 머신 변경 시스템과 시뮬레이터는 이렇게 많은 얼룩은 선호 생산, 저렴한 비용으로 장비와 더 개방에서 구현 될 수있다. 시뮬레이터의 정확한 식별이 중요한 모듈 앱 개발되고있다 방법은 개발자가 시뮬레이터를 식별하기위한 적절한 SDK를 제공하는 전문 회사도있다. 검출 시뮬레이터에 의한 이전 조사, 계획을 기대하고 시스템 기능 마이닝 세트를 요약 한 것입니다.

시뮬레이터 개요

정의

앤드류스 시뮬레이터는 변경이 PC에서 실행할 수없이 그렇게 모바일 앱을 종료, 그것은 크로스 플랫폼 응용 프로그램을 통해 달성 될 수있다, 가상 어플라이언스는 컴퓨터에서 실행할 수 있습니다.

재산

우월

기술의 발달로, 현재 시뮬레이터는 기본적으로 휴대 전화 기능의 90 % 이상을 완료 할 수 있었다. 또한, 기존의 휴대 전화에 비해 PC 측의 작업으로 인해 다음과 같은 장점이 있습니다 :

  • Gengxuan : 자연적으로 인해 클라이언트 애플리케이션에 상기 이동 단말기의 일부에 적용 할 수있는 더 차가운 시각 효과를 제공하는 대형 스크린 지원;
  • 가까이 : 마우스에 대한 지원, 키보드, 주변 기기를 활용 손가락 밖으로에서, 카메라, 많은 하드웨어 주변 장치, 작동 모드 해방 운동을 처리;
  • 성능 향상 : 당신은 PC 하드웨어 성능 이점을 재생할 게임이 더 Caton 높은 실행되도록 휴대폰보다 훨씬 더 하위 데이터를 실행, 설정 시뮬레이터를 통해 성능 매개 변수를 사용자 정의 할 수 있습니다;
  • 더 나은 처리 : 가상 키 기능, 흔들 흔들 더 간단하고 편리한 고유의 사용자 정의 키보드 키에 매핑 다른 휴대 전화 운영, 임의의 터치 조작 할 수있다;
  • PC 도구를 사용 : PC 쪽은 마법사 버튼 후크 작업, 손에 의해 자동으로 수행으로 이동 엔드 응용 프로그램의 지원을 완료하기 위해 다른 도구를 사용하여;
  • 아날로그 조작 사람들이 : 시뮬레이터에 의해 기능을 열려면, 경험 제로 선정 동시에 여러 전화, 어두운 방을 여는 계정의 복수, 스캘핑 즐거움을 달성;
  • 더 편리한 가상 위치 : 쉽게 전 세계에 정착 할 수 있도록 가상 시뮬레이터를 배치하여,
  • 배터리 전원, 전화 트래픽에 대해 걱정하지 마십시오 ...

문제

또한, 기술적 병목 현상의 관점에서 안드로이드 에뮬레이터, 다음과 같은 일반적인 질문이 있습니다 :

  • 성능 : 기계 낮은 결과, 더 큰 CPU, 메모리 및 기타 리소스 작업을 차지하기 위해 일반적으로 필요가 원활하게 실행되지 않습니다. 심지어 높은 기계와 또한, Caton과 다른 현상을 열기도 매우 간단합니다;
  • 안정성 : BUG 시뮬레이터 기술 자체는, 다시 플래시로 비디오를 발생하지, 그래서 응답;
  • 적합성
    • 하드웨어 호환성 : 주로 AMD의 PC 아키텍처를 지원하지 않습니다 시뮬레이터의 대다수;
    • 응용 프로그램 호환성 : 예를 들어, 시뮬레이터의 일부 시뮬레이터는 절차의 성능에 의해 지원이 인터페이스에 대한 좋지 않은 경우, 가상 머신이 바닥을 비교 전화, APP의 ARM 아키텍처 또는 안드로이드 커널의 일부 응용 프로그램과 호환되지 않습니다 당신은 시뮬레이터에서 실행할 수 없습니다;
    • PC 시스템 호환성 : Windows 성능 시뮬레이터 주요 적응 메인 스트림 플랫폼 및 Mac 승 (10), 작은 및 XP 버전의 이전에 지원되는 버전이 너무 높으면로 (너무 나쁜, 일부 시장에서 실행할 수 있습니다 맞춤 플레이트 시스템);
    • 안드로이드 호환성 : 시뮬레이터 경험을 실행하는 응용 프로그램이나 게임에 필요한 안드로이드 버전의 그 부분이 잘되지 않도록 시뮬레이터에 안드로이드 시스템은 여전히 4.x의 경우, 5.1 절에 남아 있습니다.

핵심 기반 기술

가상화 기술

시뮬레이터는 가상화 기술을 사용할 필요가 하드웨어 작업을 시뮬레이션하는 소프트웨어입니다. 브로드 가상화 네트워크, CPU, 메모리 및 스토리지 리소스를 지칭하고, 다른 엔티티가 상기 변환 후의 표시 추상적이어야하고 비 절단의 물리적 구조 사이의 장벽을 무너 뜨리는 사용자가 더 원래 형상보다 할 수 있도록 방법은 이러한 리소스를 사용합니다. 우리는 일반적으로 그들은 시뮬레이션 및 호스트 호스트와 동일한 구조의 단지 집합입니다 말하기, 그것은 가상화 가상 머신 기술의 종류 알고, 같은 명령어 세트 하드웨어 플랫폼은 가상 메모리와 CPU를 포함하지 않습니다. 모든 안드로이드 에뮬레이터가 같은 Bluestack 시뮬레이터를 포함하여 번개, 밤 신, 같은 가상화 기술의 정도, 다양한에서 사용되는이 버추얼 가상 머신, 구글 기본 시뮬레이터와 붉은 손가락 클라우드 시뮬레이터를 기반으로 qemu를 가상화를 적용 기술.

CPU 가상화

현재 알려진 모든 시뮬레이터 ARM 아키텍처의 Qemu 가상 머신을 기반으로합니다. QEMU는 ARM 런타임이 다음에 실행, 당신이 원하는 모든 하드웨어를 시뮬레이션하는 물리적 시스템 운영 체제 프로그램의 하드웨어의 시뮬레이션을 만들고, 순수한 소프트웨어 시뮬레이션을 사용합니다. 이러한 환경에서, 각 실행에 필요한 프로그램이 번역 될 수 있기 때문에 Chengsu 호스트 (X86) 명령은 성능의 결과로 매우 낮고,이는 이유 중 하나가 충분한 유체 시뮬레이터 네이티브가 없습니다.

ARM 번역

현재 주류 안드로이드 시뮬레이터 버추얼 가상 머신을 기반으로, X86 아키텍처입니다. CPU는 가상화, 적은 명령어 세트 전환 과정의 레이어를 할 필요가 없다, 그래서 당신은 응용 프로그램 X86 아키텍처 지원을 실행하고 일반 더 다른 가상 머신 없을 때, 상당히 속도가 많이 향상됩니다입니다.
또한, 널리 사용되는 ARM 아키텍처에 대한 호환성 문제는 X86 명령어로 동적 ARM 명령어를 번역하는 바이너리 번역 기술에 따라, 반 가상화입니다.

일반적인 블랙 생산 시뮬레이터

현재 시장의 다양한에 앤드류스 시뮬레이터 소프트웨어, 51, mumu, 블루스 택스, 신, 행복, 해마 재생, 번개 등등. 여러 채널을 통해 블랙의 생산에서 연구를 수행 할 수는 QQ와 다른 그룹, 우리는 검은 일반적으로 현재의 생산 야가미, 번개, 해피 시뮬레이터에 사용되는 것을 발견 포럼을 모았다. 그러나, 이들 시뮬레이터의 공통 포인트가 기록 및 가상 위치 및 기타 기능을 열고 작동 장치 매개 변수를 수정 내장되어 있다는 점에주의 할 수있다.

감지 시뮬레이터 프레임

시뮬레이터의 사용의 성질은 다음과 같이 현재의 디바이스 에뮬레이터, 특정 검출 프레임이 요약되어 있는지 여부를 확인하기 위하여, 시뮬레이터와 실제 기계 사이의 작은 차이를 검출하는 것이다 :

기능을 누릅니다하는 방법

검출 시뮬레이터를 애타게 이전 프레임을 결합하여, 이후 해당 기능을 더욱 향상도에서 직접 뇌를 강화할 수 있고, 광산을한다.

기능 항목 포인트 세분 기술
소프트웨어 정보 응용 프로그램 계층      
시스템 라이브러리      
무선 주파수 와이파이      
GPS      
...      
하드웨어 정보 기본 하드웨어 CPU    
배터리    
장치 매개 변수    
하드웨어 추상화 계층 그래프    
카메라    
블루투스    
기입    
기억    
감지기    
파일 시스템 (리눅스 커널 관련을 중심으로) 은 / SYS 하드웨어 드라이버 정보를 확인      
체크인 / DEV 노드 장치에있어서      
핵심 정보 매핑 검사 / PROC 런타임      
...      

또한, 특정 참조 안드로이드 루트 디렉토리 파일 구조가 작동하는 특성 파일 시스템 광산의 차이에 따라, 다음은 몇 가지 중요한 디렉토리 / 파일의 설명입니다 :

  • / MNT : 마운트 지점 디렉토리
  • / 기타 : 지점 / 시스템 / 등, 시스템 구성 파일 디렉토리
  • /data:存放用户安装的应用以及各种数据
  • /system:Android系统目录文件夹
  • /dev:设备节点文件存放地
  • /sys:用于挂载 sysfs文件系统,在设备模型中,sysfs文件系统用来表示设备的结构,将设备的层次结构形象的反应到用户空间中
  • /proc:这是一个虚拟的文件系统,不占用实际存储空间。它以文件系统的方式为访问系统内核的操作提供接口,动态从系统内核中读出所需信息
  • init.rc:启动脚本
  • default.prop:系统属性配置文件

对应的检测弱点

基于模拟器结构特征

利用任务调度检测模拟器

原理

模拟器与真机的本质区别在于运行载体,市面上已知的ARM模拟器都是基于qemu虚拟机。由于qemu在执行程序时实际上是将其翻译成宿主机的指令,比如将安卓的arm指令翻译成PC的x86指令。为了效率上的考虑,qemu在翻译执行arm指令时并没有实时更新模拟的pc寄存器值,只会在一段代码翻译执行完之后再更新,而真机中pc寄存器是一直在更新的。根据这一点,可以设计一段CPU任务调度程序来检测模拟器。

优缺点

优点:因为是基于qemu的二进制翻译技术来做特征检测,所以能够很好的识别这类Android模拟器。
缺点:

  1. 需要自己设计反应离散程度的算法来统计任务调度的地址分布情况,想要实际应用到SDK有些困难
  2. 会执行汇编代码,在不同的机器设备上需要考虑稳定性和兼容性等问题

利用cache特性检测Android模拟器

原理

由于绝大部分手机都是基于ARM架构,而模拟器几乎全部是运行在PC的X86架构上。因此,可以利用ARM与X86的底层缓存行为差异来判断是否为真机。
具体来说,ARM采用的是将指令存储与数据存储分开的哈佛架构,L1 Cache(一级缓存)被分成了平行的两块,即I-Cache(指令缓存)和D-Cache(数据缓存),而X86采用的是将指令存储和数据存储合并在一起的冯•诺伊曼结构,L1 Cache是连续的一块缓存。所以,如果我们通过读写地址指令的方式对一段可执行代码进行动态修改,那么在执行的时候,X86架构上的指令缓存会被同步修改,而对ARM架构而言,这种数据读写操作修改的只是D-Cache中的内容,此时I-Cache中的指令并不会被更新。

优缺点

优点:能够准确的识别arm和x86架构。
缺点:要执行汇编代码,在不同的机器设备上需要考虑稳定性和兼容性等问题。实测发现容易引起崩溃,需要配合多进程予以解决。

基于Android体系架构

应用层行为数据

这种检测方案本质上是对正常用户的行为模式进行统计分析,它也许不能有效的对真机和模拟器进行区分,但可以作为风险设备画像的一个参考维度。

无线射频
WIFI

检查WIFI列表这种方式,目前没发现明显缺点。当正常手机接入WIFI的时候,周边往往有复数的WIFI信号,而模拟器由于不具备检索周边WIFI的能力,其WIFI列表通常为空或者只有一个WIFI。

GPS

这种检测手法的原理是基于模拟器没有真实的GPS模块,通常无法获取到地理位置信息。缺点是部分用户在实际使用中可能会关闭该权限,导致获取不到数据。

硬件信息
底层硬件
  • CPU
    1. 型号:正常x86手机的cpu型号为intel atom,arm则是联发科,高通,麒麟等。缺点是需要大盘做数据分析,另外可能要结合手机型号等其他维度才能做一个比较好的识别。
    2. 温度:目前来看应该是比较靠谱的,缺点是需要大量的数据统计做支撑,不排除有误杀的可能。
  • 电池
    需要在后台多次采集数据,检验电压、电量是否有实时变化,实际应用起来有些困难。。
  • 设备
    通过系统API获取手机硬件参数,可以说是非常传统的模拟器检测方案了。也正是因为传统,基本上都知道会获取哪些信息,所以缺点是很容易遭到篡改。
硬件抽象层
  • 相机
    通过提取摄像头参数信息,可以有效的识别当前设备是否为“主流手机”。缺点是考虑到平板、学习机等“冷门设备”的存在,不能直接区分出模拟器,需要结合其他维度一起使用,且需要接入的APP有打开摄像头的权限。
  • 蓝牙
    若想从API层面进行检测,那就必须先开启蓝牙,而这个需要弹框让用户确认。
  • 输入
    缺点是对触摸事件的处理是在前台完成的,如果是作为SDK可能不是很好接入和应用。
  • 存储
    1. 闪存分区
      Android系统的更新以及刷机等方式都有可能导致分区的变化,目前来看,在高版本的机器上检查mmcblk、dm-x分区并不是一个靠谱的特征,需要配合其它维度一起使用。
    2. /mnt挂载
      这种文件名的检测手法只能针对性的做特定模拟器检测、不通用,且很容易通过版本更新、改名等手段进行绕过。
  • 传感器
    除判断设备有支持哪些传感器外,若想要做更进一步的验证,就仍然绕不开多次采集数据的问题。
文件系统

特点是用于做特征检出的目录文件与底层硬件的关联性越强,其效果越好,反之越可能失效。建议尽量提取和虚拟机、硬件驱动相关的文件特征,缺点是部分特征可能需要结合大量的机型数据做可靠性验证。

추천

출처www.cnblogs.com/momin/p/11422567.html