カーディングAndroidのエミュレータ検知システム

転送します。https://www.wireghost.cn/2018/05/10/Android検出システムシミュレータは、カーディング/

ツールを使って仮想マシン、両替機などのシミュレータは、このように多くの汚れが好ま生産、低コストの装置と、よりオープンで実装することができます。どのようにシミュレータの正確な識別が重要なモジュールアプリケーション開発となっている、また、開発者は、シミュレータを識別するための適切なSDKを提供する専門会社です。検出シミュレータによる以前の調査は、スキームを望んシステムが機能マイニングのセットをまとめたもの。

シミュレータの概要

定義

アンドリュースシミュレータは、仮想アプライアンスは、PC上で実行することができ、それはクロスプラットフォームのアプリケーションを介して達成することができる、コンピュータ上で実行するので、何も変更せずにモバイルアプリを終了することができます。

プロパティ

優位

技術の発展に伴い、現在のシミュレータは、基本的には、携帯電話の機能の90%以上を完了することができました。また、従来の携帯電話と比較してPC側の仕事、のために次のような利点があります。

  • Gengxuan:自然に起因するクライアントアプリケーションにモバイル端末の一部に適合させることができ、よりクールな視覚効果を、提供するために、大画面のサポート。
  • 親しみ:マウスのサポート、キーボード、周辺機器を活用し、指うちから、カメラ、多くのハードウェア周辺機器、動作モードの解放運動を扱います。
  • パフォーマンスの向上:あなたは、PCハードウェアのパフォーマンス上の利点をプレイするゲームはありませんカトンと高い実行されているように、携帯電話よりもはるかに多くのサブデータを実行し、コンフィギュレーション・シミュレータによる性能パラメータをカスタマイズすることができます。
  • より良いハンドリング:仮想キーの機能は、振る振ると、より簡単で便利なユニークなカスタムキーボードのキーにマッピングされた他の携帯電話のオペレーティング、任意のタッチ操作することができます。
  • PCツールを使用:PC側は、このようなウィザードボタンフック操作、手によって自動的に行わとして可動エンドアプリケーションのサポートを完了するために、他のツールを使用しました。
  • アナログ操作の人々は:シミュレータで機能を開くには、経験ゼロコストを同時に複数の電話機、暗い部屋を開けるアカウントを複数、スキャルピング喜びを達成。
  • もっと便利な仮想ポジショニング:あなたは簡単に世界中に定住することを可能にする仮想シミュレータを配置することにより、
  • バッテリー電源、携帯電話のトラフィックを心配ありません...

問題

さらに、彼らの技術的なボトルネックを考慮して、Androidのエミュレータでは、以下の一般的な質問があります。

  • パフォーマンス:マシンと低い結果として、より大きなCPU、メモリ、およびその他のリソースの動作を占有するための一般的な必要性がスムーズに実行されていません。また、高くても機械で、カトンや他の現象を開くためにも非常に簡単です。
  • 安定性:BUGシミュレータバックフラッシュによって引き起こされる技術自体、ビデオ、およびので、応答がありません。
  • 互換性
    • ハードウェアの互換性:主シミュレータの大多数のためには、AMDのPCアーキテクチャをサポートしていません。
    • アプリケーションの互換性:例えば、シミュレータの一部は、シミュレータは、このような手順の性能によってサポートされるこれらのインターフェイスのために良好ではない場合、仮想マシンは底を比較呼び出し、APPのARMアーキテクチャ、またはAndroidカーネルのためのいくつかのアプリケーションと互換性がありませんあなたは、シミュレータ上で実行することはできません。
    • PCシステムの互換性:Windowsパフォーマンスシミュレータの主要な適応の主流プラットフォーム、およびMac勝利10、少し、およびXPバージョンの以前にサポートされているバージョンが高すぎるとして、(あまりにも悪い、いくつかの市場の下で実行することができますカスタマイズされたプレートシステム)。
    • Androidの互換性:シミュレータの経験上で実行するアプリケーションやゲームで必要とされるAndroidのバージョンのその部分が良くないので、シミュレータ上のAndroidシステムは、まだ、4.xでは、セクション5.1に残ります。

キー基盤となる技術

仮想化技術

シミュレータは、仮想化技術を使用する必要があるハードウェア動作をシミュレートするためのソフトウェアです。広範な仮想化は、ネットワーク、CPU、メモリおよびストレージリソースを参照し、他のエンティティは、変換後の提示、抽象的であり、かつ、非切断の物理的構造との間の障壁を打破するために、ユーザーがより良い元の構成よりもできるようにこれらのリソースを使用する方法。私たちは、一般的に、彼らはシミュレーションとホストホストと同じアーキテクチャの単なる集合で言えば、同じ命令セット・ハードウェア・プラットフォームは、仮想メモリとCPUを必要としない、それは仮想化で仮想マシン技術の一種である知っています。すべてのAndroidエミュレータが雷などの仮想化技術の様々な程度で使用されているBluestackシミュレータなど、夜の神は、Virtualboxの仮想マシンに基づいており、Googleのネイティブシミュレータと赤い指クラウドシミュレータは、QEMUの仮想化に適用されます技術。

CPUの仮想化

現在、すべての既知のシミュレータARMアーキテクチャは、QEMUの仮想マシンに基づいています。QEMUは、ARMランタイムはそれで実行し、必要なすべてのハードウェアをシミュレートする物理マシンのオペレーティングシステムプログラム上のハードウェアのシミュレーションを作成して、純粋なソフトウェアシミュレーションを使用しています。各実行はChengsuホスト(X86)の指示を翻訳する必要がプログラムため、この環境では、パフォーマンスが得られことは非常に低く、これが理由の一つに十分な流体シミュレータネイティブではないです。

ARMの翻訳

現在主流のAndroidシミュレータVirtualboxの仮想マシンに基づいて、X86アーキテクチャです。CPUは、仮想化、少ない命令セット変換プロセスの層を行う必要はありませんので、アプリX86アーキテクチャのサポートを実行して、一般的には全く異なる仮想マシンではないとき、大幅にスピードをたくさん改善されますので。
また、広く使われているARMアーキテクチャ用の互換性の問題は、X86命令に動的なARM命令を変換するバイナリ変換技術によると、準仮想化です。

一般的な黒の生産シミュレータ

現在、市場の多様上アンドリュースシミュレータソフトウェア、51、MUMU、BlueStacks、神、ハッピー、海馬は遊ぶ、稲妻のように。黒の生産の研究を行うための複数のチャネルを通じてフォーラム、QQや他のグループを集め、我々は黒が一般的に現在の生産矢上、雷やハッピーシミュレータで使用されていることがわかりました。これらのシミュレータの共通点は、デバイスパラメータを変更開くために、記録および仮想位置と他の機能を操作構築されることに留意されたいです。

検出シミュレータフレーム

シミュレータの使用の性質は次のように現在のデバイスエミュレータ、特定の検出フレームが要約されているかどうかを決定するために、シミュレータと実機との間の小さな差を検出することです。

機能をタップする方法

検出シミュレータを引き出すために前のフレームを組み合わせて、対応する後続の機能がさらに向上し、図から直接脳を強化することができる、マイニングを行います。

フィーチャーアイテム ポイント細分化 説明 リマーク
ソフトウェア情報 アプリケーション層      
システムライブラリ      
無線周波数 WI-FI      
GPS      
...      
ハードウェア情報 基盤となるハードウェア CPU    
バッテリー    
デバイスパラメータ    
ハードウェアアブストラクションレイヤ グラフ    
カメラ    
ブルートゥース    
エントリー    
メモリ    
センサー    
ファイルシステム(Linuxカーネル関連に焦点を当てました) / SYSハードウェアドライバ情報を確認してください      
特徴チェックの/ devノード装置      
コア情報マッピングチェック/ procのランタイム      
...      

さらに、具体的な言及Androidのルートディレクトリのファイル構造が動作特性ファイルシステムの採掘の差に基づいて、次には、いくつかの重要なディレクトリ/ファイルの説明は次のとおりです。

  • / MNT:ポイント・ディレクトリをマウント
  • の/ etc:ポイントへ/システムの/ etc、システムコンフィギュレーションファイルのディレクトリ
  • /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