CN110619210A - 一种模拟器检测方法及系统 - Google Patents
一种模拟器检测方法及系统 Download PDFInfo
- Publication number
- CN110619210A CN110619210A CN201910797103.8A CN201910797103A CN110619210A CN 110619210 A CN110619210 A CN 110619210A CN 201910797103 A CN201910797103 A CN 201910797103A CN 110619210 A CN110619210 A CN 110619210A
- Authority
- CN
- China
- Prior art keywords
- terminal
- parameters
- mobile app
- simulator
- preset
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephone Function (AREA)
Abstract
本发明公开了一种模拟器检测方法及系统,属于计算机技术领域。方法包括:SDK组件从运行于终端上的移动APP的运行环境中获取多个预设参数并分别进行检测,多个预设参数包括CPU架构信息、软件参数和硬件参数;SDK组件根据检测获得多个预测参数分别对应的检测结果,并上传至服务器;服务器根据预设的权重模型对所有检测结果结合多个预设参数分别对应的权重进行加权计算,获得加权计算结果;服务器根据加权计算结果判断终端是否为模拟器终端。本发明能够有效地检测移动APP是否运行在模拟器提供的运行环境,以预防移动APP中的网络恶意行为。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种模拟器检测方法及系统。
背景技术
对于移动终端的移动APP来说,如果想要其运行在PC上,需要利用模拟器为其提供运行环境。但是由于模拟器的存在,作弊者会通过利用模拟器对移动app进行作弊和修改,进而产生网络黄牛、网店刷单、游戏代练等等网络恶意行为。
因此,如何有效地检测移动APP是否运行在模拟器提供的运行环境,成了亟需解决的问题。
发明内容
为了解决上述背景技术中提到的至少一个问题,本发明提供了一种模拟器检测方法及系统,能够有效地检测移动APP是否运行在模拟器提供的运行环境。
本发明实施例提供的具体技术方案如下:
第一方面,提供一种模拟器检测方法,所述方法包括:
SDK组件从运行于终端上的移动APP的运行环境中获取多个预设参数并分别进行检测,所述多个预设参数包括CPU架构信息、软件参数和硬件参数;
所述SDK组件根据所述检测获得所述多个预测参数分别对应的检测结果,并上传至服务器;
所述服务器根据预设的权重模型对所有所述检测结果结合所述多个预设参数分别对应的权重进行加权计算,获得加权计算结果;
所述服务器根据所述加权计算结果判断所述终端是否为模拟器终端。
进一步地,所述软件参数包括终端标识信息、手机号码、运营商名、QEMU驱动、QEMU属性中的至少一个,所述硬件参数包括电池状态、蓝牙信息、网卡信息、传感器信息中的至少一个,其中,传感器信息包括传感器标识以及传感器所检测到的环境数据。
优选地,所述CPU架构信息通过如下过程得到:
在所述移动APP运行时,所述SDK组件执行预先映射到内存中的汇编代码,其中,所述汇编代码包含循环跳转指令和累加指令;
获取所述汇编代码的执行结果,并根据所述执行结果获取CPU架构信息,其中,所述CPU架构信息用于指示所述终端的CPU架构是ARM架构还是X86架构。
进一步地,所述权重模型中所述多个预设参数分别对应的权重为预先设定或者预先使用机器学习的方法训练得到。
优选地,所述训练的过程包括:
针对多个样本终端中的每一个样本终端,通过所述SDK组件对运行于所述样本终端上的所述移动APP的运行环境进行检测,获得所述多个特征分别对应的检测结果,其中,所述多个样本终端包括移动终端和模拟器终端;
根据每一个样本终端的所述多个特征分别对应的检测结果,生成训练集;
根据所述训练集,使用机器学习算法对所述权重模型进行权重训练,得到所述多个预设参数分别对应的权重。
进一步地,所述方法还包括:
所述服务器判断出所述终端为模拟器终端时,执行以下操作中的任意一个:
对所述终端上的所述移动APP的当前账号进行禁用;
对所述终端上的所述移动APP进行禁用;
向所述终端上的所述移动APP发送表征所述终端为模拟器终端的提示信息,以使所述提示信息显示在所述移动APP上。
第二方面,提供一种模拟器检测系统,包括服务器和内置于移动APP的SDK组件,其中:
所述SDK组件,用于从运行于终端上的移动APP的运行环境中获取多个预设参数并分别进行检测,所述多个预设参数包括CPU架构信息、软件参数和硬件参数;
所述SDK组件,还用于根据所述检测获得所述多个预测参数分别对应的检测结果,并上传至所述服务器;
所述服务器,用于根据预设的权重模型对所有所述检测结果结合所述多个预设参数分别对应的权重进行加权计算,获得加权计算结果;
所述服务器,还用于根据所述加权计算结果判断所述终端是否为模拟器终端。
进一步地,所述软件参数包括终端标识信息、手机号码、运营商名、QEMU驱动、QEMU属性中的至少一个,所述硬件参数包括电池状态、蓝牙信息、网卡信息、传感器信息中的至少一个,其中,传感器信息包括传感器标识以及传感器所检测到的环境数据。
优选地,所述SDK组件具体用于:
在所述移动APP运行时,执行预先映射到内存中的汇编代码,其中,所述汇编代码包含循环跳转指令和累加指令;
获取所述汇编代码的执行结果,并根据所述执行结果获取CPU架构信息,其中,所述CPU架构信息用于指示所述终端的CPU架构是ARM架构还是X86架构。
进一步地,所述权重模型中所述多个预设参数分别对应的权重为预先设定或者预先使用机器学习的方法训练得到。
优选地,所述服务器具体用于:
所述权重模型中所述多个预设参数分别对应的权重为预先设定或者预先使用机器学习的方法训练得到;
优选地,所述服务器具体用于:
针对多个样本终端中的每一个样本终端,通过所述SDK组件对运行于所述样本终端上的所述移动APP的运行环境中的多个预设参数分别进行检测,得到所述多个预设参数各自对应的检测结果,其中,所述多个样本终端包括移动终端和模拟器终端;
根据每一个所述样本终端的所述多个预设参数各自对应的检测结果,生成训练集;
根据所述训练集,使用机器学习算法对所述权重模型进行权重训练,得到所述多个预设参数分别对应的权重。
进一步地,所述服务器具体还用于:
判断出所述终端为模拟器终端时,执行以下操作中的任意一个:
对所述终端上的所述移动APP的当前账号进行禁用;
对所述终端上的所述移动APP进行禁用;
向所述终端上的所述移动APP发送表征所述终端为模拟器终端的提示信息,以使所述提示信息显示在所述移动APP上。
本发明实施例提供的一种模拟器检测方法及系统,通过SDK组件从运行于终端上的移动APP的运行环境中获取多个预设参数并分别进行检测,多个预设参数包括软件参数、硬件参数和CPU架构信息,并将检测获得的多个预设参数分别对应的检测结果上传至服务器,然后通过服务器根据预设的权重模型对所有检测结果结合多个预设参数分别对应的权重进行加权计算果,以判断终端是否为模拟器终端,由于模拟器检测过程中综合了移动APP的运行环境中的CPU架构信息、软件参数和硬件参数,能够避免单独采用一种运行环境参数进行模拟器检测而产生的误判问题,提高了模拟器检测的准确性和稳定性;并且,通过利用预先训练好的权重模型进行检测所述终端是否为模拟器终端,因此能够有效地检测移动APP是否运行在模拟器提供的运行环境,进而有助于预防移动APP中的网络恶意行为。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种模拟器检测方法的流程图;
图2a为本发明实施例提供的ARM架构的Cache机制的示意图;
图2b为本发明实施例提供的X86架构的Cache机制的示意图;
图2c为本发明实施例提供的shellcode代码段的执行流程示意图;
图3是本发明实施例提供的一种模拟器检测系统的结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,在本发明的描述中,除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
还应当理解,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
本发明提出了一种模拟器检测方法,应用于模拟器检测系统中,用于判断移动APP是否通过模拟器运行,即检测移动APP是否运行在模拟器提供的运行环境,其中,模拟器检测系统包括服务器和内置于移动APP的SDK组件(软件工具开发包),移动APP具体可以是任何的安卓应用程序,包括但不限于购物应用程序、游戏应用程序等,移动APP可以是直接安装在移动终端(例如,安卓手机)上,也可以是通过利用模拟器安装在台式终端上(例如,台式电脑),其中,该服务器可以是独立的服务器或者是多个服务器组成的服务集群来实现。
在一个实施例中,如图1所示,提供了一种模拟器检测方法,该方法可以应用于模拟器检测系统中,该方法该模拟器检测方法具体包括如下步骤:
步骤101,SDK组件从运行于终端上的移动APP的运行环境中获取多个预设参数并分别进行检测,多个预设参数包括CPU架构信息、软件参数和硬件参数。
其中,移动APP具体为安卓应用程序,对于移动终端的移动APP来说,如果想要其运行在PC上,需要利用模拟器为其提供运行环境,由于CPU架构信息、软件参数和硬件参数等参数可以表征移动APP的运行环境,因此可以通过从移动APP的运行环境中获取包括CPU架构信息、软件参数和硬件参数在内的多个预设参数,进而基于获取到的多个预设参数来判断移动APP的运行环境是否为模拟器所提供的,即检测出终端是模拟器终端还是移动终端,这里所说的模拟器终端是指利用模拟器为移动APP提供运行环境的终端(例如,台式电脑),移动终端具体可以是安卓手机以及安装有安卓系统的其他终端。
其中,CPU架构信息用于指示CPU架构是ARM架构还是X86架构,通常大部分的安卓手机的CPU采用ARM架构,有少量机型使用X86架构的CPU。
其中,软件参数包括但不限于设备DeviceId、IMSI等信息,硬件参数包括但不限于蓝牙、陀螺仪,重力感应等信息,在实际应用中,可以根据实际需要设定软件参数以及硬件参数。
本实施例中,SDK组件集成在移动APP中,SDK组件中封装有具有多个代码段,不同代码段具有不同的功能逻辑,实现从移动APP的运行环境中获取到不同的参数并进行检测,即:一个代码段用于获取并检测一个预设参数。
步骤102,SDK组件根据检测获得多个预测参数分别对应的检测结果,并上传至服务器。
本实施例中,对于任一预设参数,服务器获取到该预设参数后,对该预设参数进行检测得到检测结果。
其中,在CPU架构信息进行检测时,若CPU架构信息指示CPU架构是ARM架构时,确定CPU架构信息对应的检测结果为成功,若CPU架构信息指示CPU架构是X86架构时,确定检测结果为失败。
其中,在对软件参数中的手机号码进行检测时,可以检测该手机号码是否为真实手机号码,若为真实手机号码,确定手机号码对应的检测结果为成功,若为虚假手机号码,确定手机号码对应的检测结果为失败。
其中,在对硬件参数中的传感器信息进行检测时,判断是否可以从传感器所检测到的环境数据计算出环境数据的动态变化,若检测到,则确定传感器信息对应的检测结果为成功,否则确定对应的检测结果为失败。比如,通过对位移传感器运行时实时记录下来的环境数据进行标准偏差计算等,检测终端是否有位移变化。
本实施例中,SDK组件不但可以从移动APP的运行环境中的硬件参数中检测出静态的硬件特征,还可以检测出动态的硬件特征,由此可以避免模拟器通过修改终端的硬件配置数据而导致检测不准确的问题,进而进一步提高后续模拟器检测的准确性。
需要说明的是,若SDK组件从运行于终端上的移动APP的运行环境中获取不到某个预设参数时,则直接确定该预设参数的检测结果为失败。
步骤103,服务器根据预设的权重模型对所有检测结果结合多个预设参数分别对应的权重进行加权计算,获得加权计算结果。
其中,各预设参数分别对应的权重的累加之和为1。
本实施例中,服务器在获取到多个检测结果之后,可以对各个预设参数分别对应的检测结果转换为数字,例如,预设参数的检测结果为成功时,以“1”进行表示,预设参数的检测结果为失败时,以“0”进行表示,如此,服务器可以获得一个数字序列,并对该数字序列利用预设的权重模型中各个预设参数分别对应的权重进行加权计算,得到加权计算结果。
其中,权重模型各自的权重参数可以为预先设定的,即针对每一个预设参数,预先根据不同预设参数的重要性程度依次设定各个预设参数对应的权重。于本实施例中,CPU架构信息对应的权重远大于软件参数对应的权重以及硬件参数对应的权重,硬件参数对应的权重大于软件参数对应的权重。在具体应用时,可以通过层次分析法得到权重模型各自的权重参数。此外,权重模型中多个预设参数分别对应的权重还可以为预先使用机器学习的方法训练得到的。
步骤104,服务器根据加权计算结果判断终端是否为模拟器终端。
本实施例中,服务器可以对加权计算结果与预设阈值进行比对,若加权计算结果超过预设阈值,则判定终端为模拟器终端,否则,则判定终端不是模拟器终端。其中,预设阈值可以根据实际需要进行设置。例如,设置阈值为0.8。
本发明实施例提供的一种模拟器检测方法,通过SDK组件从运行于终端上的移动APP的运行环境中获取多个预设参数并分别进行检测,多个预设参数包括软件参数、硬件参数和CPU架构信息,并将检测获得的多个预设参数分别对应的检测结果上传至服务器,然后通过服务器根据预设的权重模型对所有检测结果结合多个预设参数分别对应的权重进行加权计算果,以判断终端是否为模拟器终端,由于模拟器检测过程中综合了移动APP的运行环境中的CPU架构信息、软件参数和硬件参数,能够避免单独采用一种运行环境参数进行模拟器检测而产生的误判问题,提高了模拟器检测的准确性和稳定性;并且,通过利用预先训练好的权重模型进行检测终端是否为模拟器终端,因此能够有效地检测移动APP是否运行在模拟器提供的运行环境,进而有助于预防移动APP中的网络恶意行为。
在一个实施例中,软件参数可以包括终端标识信息、手机号码、运营商名、QEMU驱动、QEMU属性中的至少一个,硬件参数可以包括电池状态、蓝牙信息、网卡信息、传感器信息中的至少一个,其中,传感器信息包括传感器标识以及传感器所检测到的环境数据。
其中,SDK组件可以利用预设的函数读取终端的系统配置文件以获取到移动APP的运行环境中的软件参数,例如:
利用如下函数获取手机号码:
telephonyManager=getSystemService(TELEPHONY_SERVICE)
phoneNumber=telephonyManager.getLine1Number()
利用如下函数获取作为终端标识信息的IMSI编号:
telephonyManager=getSystemService(TELEPHONY_SERVICE)
imsi=telephonyManager.getSubscriberId()
利用如下函数获取运营商名:
telephonyManager=getSystemService(TELEPHONY_SERVICE)
szOperatorName=telephonyManager.getNetworkOperatorName()
值得注意的是,SDK组件在检测移动APP的预设参数时,对可能涉及到用户隐私保护的预设参数数据,例如手机号码等信息,通常需要在获得用户许可的情形下进行检测。
其中,SDK组件可以从终端的各个硬件配置文件读取到移动APP的运行环境的硬件参数,例如,
获取网卡相关信息:
networkinterfaces=NetworkInterface.getNetworkInterfaces()。
检查电池温度:Filter=New intentfilter(ACTION_BATTERY_CHANGED);
轮询检查电量:Batterystatus=registerReceiver(null,Filter);
读取充电状态:Chargplug=batterystatus.getintextra(extra_plugged,-1)。
其中,SDK组件可以实时获取硬件传感器运行时记录下来的环境数据,并计算出环境数据的动态变化,例如,对加速器位移时间记录进行标准偏差计算等等。
本发明实施例中,由于SDK组件所要检测的移动APP的运行环境中的硬件参数,不仅仅包括静态的硬件参数,还包括动态的硬件参数,如此,可以进一步地提高模拟器检测的准确性。
在一个实施例中,SDK组件获取终端的CPU架构信息,该过程可以包括:
在移动APP运行时,执行预先映射到内存中的汇编代码,其中,汇编代码包含循环跳转指令和累加指令;
获取汇编代码的执行结果,并根据执行结果获取CPU架构信息,其中,CPU架构信息用于指示终端的CPU架构是ARM架构还是X86架构。
其中,汇编代码可以为shellcode代码段。
其中,循环跳转指令用于指示每次通过强制修改PC寄存器实现跳转,直至完成预设的循环次数。
本实施例中,通过SDK组件向安卓应用程序终注入shellcode代码段,通过执行shellcode代码段后,在不同架构CPU上会得到不一样的执行结果,根据执行结果可以判断终端的CPU架构是ARM架构还是X86架构。
上述SDK组件获取终端的CPU架构信息是基于CPU不同架构版本件硬件固有特性的差异而获取到的,其技术原理具体如下:
通常Android手机等安卓移动终端采用ARM处理器占绝大部分机型,而模拟器主要运行在X86为主的PC电脑上。ARM处理器基于—哈佛架构。ARM的一级缓存分为I-Cache(指令缓存)与D-Cahce(数据缓存),但该架构设计不能保证I-Cache和D-Cache之间的一致性。而X86处理器基于—冯诺依曼架构,只有一块cache缓存。ARM架构的Cache机制与X86架构的Cache机制之间的区别可以参照图2a和图2b,其中,图2a为ARM架构的Cache机制的示意图,图2b为X86架构的Cache机制的示意图。
基于不同CPU架构间cache结构不一样的特性,于本实施例中,将SDK组件中的shellcode代码段动态映射到内存,获取执行权限并在移动APP执行时触发执行,在执行时,X86架构上这部分代码是可修改,而ARM的I-Cache是只读,这是因为,当往PC寄存器对应的地址写指令的时候,其实是往D-Cahce写,而I-Cache中的指令并未被更新,这样,同样的一段程序通过其内部设有的固定次数的循环,在循环体内对数据寄存器进行累加,然后会在ARM与X86上输出不同的运行结果,就可判断出当前的CPU架构是ARM还是X86。
示例性地,参照图2c所示,图2c为本发明实施例提供的shellcode代码段的执行流程示意图。shellcode代码段通过SDK组件注入到目标Android程序中授权运行,目标Android程序在运行时会触发shellcode执行,执行流程包括:步骤1,初始化寄存器A和寄存器B,shellcode每执行一行代码,寄存器A内的值加1,寄存器B的值加1,假如此时该行代码的地址为Address_X;步骤2,继续执行shelcode代码行,该行代码的地址为Address_Y,寄存器A的值加1,强制修改PC寄存器,使Address_X的代码代替Address_Y中的代码;步骤3,判断寄存器A的值或寄存器B的值是否等于预设循环次数N,不等于,则循环执行步骤2,直至循环结束返回寄存器A的值作为运行结果。其中,步骤2中在强制修改PC寄存器时,对于ARM架构而言,仅D-cache数据缓存更新,而I-cache指令缓存未更新,如此导致应该循环累加的寄存器B值的操作未发生,而寄存器A值却完成了累加操作。
本发明实施例中,通过基于不同CPU架构间cache结构不一样的特性,动态地检测终端的CPU架构是ARM架构还是X86架构,能够避免模拟器对移动APP所在终端的CPU架构信息进行修改而导致的误测问题。
在一个实施例中,上述的权重模型中多个预设参数分别对应的权重使用机器学习的方法进行训练的过程,可以包括:
针对多个样本终端中的每一个样本终端,通过SDK组件对运行于样本终端上的移动APP的运行环境中的多个预设参数分别进行检测,得到多个预设参数各自对应的检测结果,其中,多个样本终端包括移动终端和模拟器终端;
根据每一个样本终端的多个预设参数各自对应的检测结果,生成训练集;
根据样本训练集,使用机器学习算法对权重模型进行权重训练,得到多个预设参数分别对应的权重。
其中,上述的移动APP的多个预设参数的获取以及检测过程可以参照步骤101至步骤102,此处不再加以赘述。
示例性地,确定N=50个样本终端,包括移动终端(例如安卓手机)和模拟器终端(例如台式电脑),对应移动终端的标签为1,模拟器终端的标签为0,对N个样本终端中的每一个样本终端,通过SDK组件获取该样本终端上的移动APP的多个预设参数分别对应的检测结果并生成训练集,使用机器学习算法对权重模型进行权重训练,当误差最小或迭代次数达到次数阈值时结束训练,得到多个预设参数分别对应的权重,这样通过训练得到的权重模型能够实现更加准确可靠地模拟器预测。
本发明实施例中,由于机器学习对训练样本的数量要求没有深度学习对训练样本的数量要求高,因此通过少量训练样本,可以训练得到用于检测模拟器的权重模型,从而基于训练好的权重模型可以实现模拟器的准确检测。
在一个实施例中,模拟器检测方法还可以包括:
服务器判断出终端为模拟器终端时,执行以下操作中的任意一个:
对终端上的移动APP的当前账号进行禁用;
对终端上的移动APP进行禁用;
向终端上的移动APP发送表征终端为模拟器终端的提示信息,以使提示信息显示在移动APP上。
本发明实施例中,在服务器判断出终端为模拟器终端时,通过执行上述操作,可以有效地遏制使用模拟器终端进行的网络黄牛、网店刷单、游戏代练等等网络恶意行为,从而确保了软件运营商及消费者的合法利益。
在一个实施例中,如图3所示,提供了一种模拟器检测系统,该系统包括服务器301和内置于移动APP的SDK组件302,其中:
SDK组件302,用于从运行于终端上的移动APP的运行环境中获取多个预设参数并分别进行检测,多个预设参数包括CPU架构信息、软件参数和硬件参数;
SDK组件302,还用于根据检测获得多个预测参数分别对应的检测结果,并上传至服务器301;
服务器301,用于根据预设的权重模型对所有检测结果结合多个预设参数分别对应的权重进行加权计算,获得加权计算结果;
服务器301,还用于根据加权计算结果判断终端是否为模拟器终端。
进一步地,软件参数包括终端标识信息、手机号码、运营商名、QEMU驱动、QEMU属性中的至少一个,硬件参数包括电池状态、蓝牙信息、网卡信息、传感器信息中的至少一个,其中,传感器信息包括传感器标识以及传感器所检测到的环境数据。
进一步地,SDK组件302具体用于:
在移动APP运行时,执行预先映射到内存中的汇编代码,其中,汇编代码包含循环跳转指令和累加指令;
获取汇编代码的执行结果,并根据执行结果获取CPU架构信息,其中,CPU架构信息用于指示终端的CPU架构是ARM架构还是X86架构。
进一步地,权重模型中多个预设参数分别对应的权重为预先设定或者预先使用机器学习的方法训练得到。
优选地,服务器301具体用于:
针对多个样本终端中的每一个样本终端,通过SDK组件对运行于样本终端上的移动APP的运行环境中的多个预设参数分别进行检测,得到多个预设参数各自对应的检测结果,其中,多个样本终端包括移动终端和模拟器终端;
根据每一个样本终端的多个预设参数各自对应的检测结果,生成训练集;
根据样本训练集,使用机器学习算法对权重模型进行权重训练,得到多个预设参数分别对应的权重。
进一步地,服务器301具体还用于:
判断出终端为模拟器终端时,执行以下操作中的任意一个:
对终端上的移动APP的当前账号进行禁用;
对终端上的移动APP进行禁用;
向终端上的移动APP发送表征终端为模拟器终端的提示信息,以使提示信息显示在移动APP上。
本发明实施例提供的模拟器检测系统,与本发明实施例所提供的模拟器检测方法属于同一发明构思,可执行本发明实施例所提供的模拟器检测方法,具备执行模拟器检测方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例提供的模拟器检测方法,此处不再加以赘述。
本领域内的技术人员应明白,本发明实施例中的实施例可提供为方法、系统、或计算机程序产品。因此,本发明实施例中可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例中可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例中是参照根据本发明实施例中实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例中的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例中范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种模拟器检测方法,其特征在于,所述方法包括:
SDK组件从运行于终端上的移动APP的运行环境中获取多个预设参数并分别进行检测,所述多个预设参数包括CPU架构信息、软件参数和硬件参数;
所述SDK组件根据所述检测获得所述多个预测参数分别对应的检测结果,并上传至服务器;
所述服务器根据预设的权重模型对所有所述检测结果结合所述多个预设参数分别对应的权重进行加权计算,获得加权计算结果;
所述服务器根据所述加权计算结果判断所述终端是否为模拟器终端。
2.根据权利要求1所述的方法,其特征在于,所述软件参数包括终端标识信息、手机号码、运营商名、QEMU驱动、QEMU属性中的至少一个,所述硬件参数包括电池状态、蓝牙信息、网卡信息、传感器信息中的至少一个,其中,传感器信息包括传感器标识以及传感器所检测到的环境数据。
3.根据权利要求1所述的方法,其特征在于,所述CPU架构信息通过如下过程得到:
在所述移动APP运行时,所述SDK组件执行预先映射到内存中的汇编代码,其中,所述汇编代码包含循环跳转指令和累加指令;
获取所述汇编代码的执行结果,并根据所述执行结果获取CPU架构信息,其中,所述CPU架构信息用于指示所述终端的CPU架构是ARM架构还是X86架构。
4.根据权利要求1至3任意一项所述的方法,其特征在于,所述权重模型中所述多个预设参数分别对应的权重为预先设定或者预先使用机器学习的方法训练得到;
优选地,所述训练的过程包括:
针对多个样本终端中的每一个样本终端,通过所述SDK组件对运行于所述样本终端上的所述移动APP的运行环境中的多个预设参数分别进行检测,得到所述多个预设参数各自对应的检测结果,其中,所述多个样本终端包括移动终端和模拟器终端;
根据每一个所述样本终端的所述多个预设参数各自对应的检测结果,生成训练集;
根据所述训练集,使用机器学习算法对所述权重模型进行权重训练,得到所述多个预设参数分别对应的权重。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述服务器判断出所述终端为模拟器终端时,执行以下操作中的任意一个:
对所述终端上的所述移动APP的当前账号进行禁用;
对所述终端上的所述移动APP进行禁用;
向所述终端上的所述移动APP发送表征所述终端为模拟器终端的提示信息,以使所述提示信息显示在所述移动APP上。
6.一种模拟器检测系统,其特征在于,包括服务器和内置于移动APP的SDK组件,其中:
所述SDK组件,用于从运行于终端上的移动APP的运行环境中获取多个预设参数并分别进行检测,所述多个预设参数包括CPU架构信息、软件参数和硬件参数;
所述SDK组件,还用于根据所述检测获得所述多个预测参数分别对应的检测结果,并上传至所述服务器;
所述服务器,用于根据预设的权重模型对所有所述检测结果结合所述多个预设参数分别对应的权重进行加权计算,获得加权计算结果;
所述服务器,还用于根据所述加权计算结果判断所述终端是否为模拟器终端。
7.根据权利要求6所述的系统,其特征在于,所述软件参数包括终端标识信息、手机号码、运营商名、QEMU驱动、QEMU属性中的至少一个,所述硬件参数包括电池状态、蓝牙信息、网卡信息、传感器信息中的至少一个,其中,传感器信息包括传感器标识以及传感器所检测到的环境数据。
8.根据权利要求6所述的系统,其特征在于,所述SDK组件具体用于:
在所述移动APP运行时,执行预先映射到内存中的汇编代码,其中,所述汇编代码包含循环跳转指令和累加指令;
获取所述汇编代码的执行结果,并根据所述执行结果获取CPU架构信息,其中,所述CPU架构信息用于指示所述终端的CPU架构是ARM架构还是X86架构。
9.根据权利要求6至8任意一项所述的系统,其特征在于,所述权重模型中所述多个预设参数分别对应的权重为预先设定或者预先使用机器学习的方法训练得到;
优选地,所述服务器具体用于:
针对多个样本终端中的每一个样本终端,通过所述SDK组件对运行于所述样本终端上的所述移动APP的运行环境中的多个预设参数分别进行检测,得到所述多个预设参数各自对应的检测结果,其中,所述多个样本终端包括移动终端和模拟器终端;
根据每一个所述样本终端的所述多个预设参数各自对应的检测结果,生成训练集;
根据所述训练集,使用机器学习算法对所述权重模型进行权重训练,得到所述多个预设参数分别对应的权重。
10.根据权利要求6所述的系统,其特征在于,所述服务器具体还用于:
判断出所述终端为模拟器终端时,执行以下操作中的任意一个:
对所述终端上的所述移动APP的当前账号进行禁用;
对所述终端上的所述移动APP进行禁用;
向所述终端上的所述移动APP发送表征所述终端为模拟器终端的提示信息,以使所述提示信息显示在所述移动APP上。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910797103.8A CN110619210A (zh) | 2019-08-27 | 2019-08-27 | 一种模拟器检测方法及系统 |
CA3152837A CA3152837A1 (en) | 2019-08-27 | 2020-06-24 | Simulator detection method and system |
PCT/CN2020/097836 WO2021036450A1 (zh) | 2019-08-27 | 2020-06-24 | 一种模拟器检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910797103.8A CN110619210A (zh) | 2019-08-27 | 2019-08-27 | 一种模拟器检测方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110619210A true CN110619210A (zh) | 2019-12-27 |
Family
ID=68922017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910797103.8A Pending CN110619210A (zh) | 2019-08-27 | 2019-08-27 | 一种模拟器检测方法及系统 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN110619210A (zh) |
CA (1) | CA3152837A1 (zh) |
WO (1) | WO2021036450A1 (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100615A (zh) * | 2020-09-11 | 2020-12-18 | 北京明略昭辉科技有限公司 | 设备的识别方法及装置、存储介质、电子设备 |
CN112288428A (zh) * | 2020-09-24 | 2021-01-29 | 咪咕文化科技有限公司 | 模拟器的检测方法、装置、电子设备及存储介质 |
WO2021036450A1 (zh) * | 2019-08-27 | 2021-03-04 | 苏宁云计算有限公司 | 一种模拟器检测方法及系统 |
CN112468446A (zh) * | 2020-11-02 | 2021-03-09 | 上海绊糖信息科技有限公司 | 一种保护用户隐私的移动运行环境安全检测系统 |
CN112559328A (zh) * | 2020-12-04 | 2021-03-26 | 北京字节跳动网络技术有限公司 | 指令模拟引擎的判别方法、装置、设备及介质 |
CN112905301A (zh) * | 2021-03-04 | 2021-06-04 | 中国科学院信息工程研究所 | 一种Android模拟器的检测方法及装置 |
CN112954575A (zh) * | 2021-01-28 | 2021-06-11 | 歌尔科技有限公司 | 一种无线耳机故障检测方法、故障检测设备及无线耳机 |
CN112988324A (zh) * | 2021-01-28 | 2021-06-18 | 中国科学院信息工程研究所 | 一种基于cpu信息的安卓模拟器识别方法及系统 |
CN113435103A (zh) * | 2021-05-19 | 2021-09-24 | 深圳供电局有限公司 | 配电房异常检测方法、系统、服务器、边缘网关和介质 |
CN113613074A (zh) * | 2021-07-27 | 2021-11-05 | Oppo广东移动通信有限公司 | 直播场景检测方法、装置、终端及存储介质 |
CN114362980A (zh) * | 2020-09-28 | 2022-04-15 | 腾讯科技(深圳)有限公司 | 协议挂登录账号识别方法、装置、计算机设备和存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114706630A (zh) * | 2022-04-14 | 2022-07-05 | 上海上讯信息技术股份有限公司 | 一种基于文件格式识别模拟器的方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6049866A (en) * | 1996-09-06 | 2000-04-11 | Silicon Graphics, Inc. | Method and system for an efficient user mode cache manipulation using a simulated instruction |
CN104951355A (zh) * | 2015-07-03 | 2015-09-30 | 北京数字联盟网络科技有限公司 | 识别应用程序虚拟运行环境的方法和装置 |
CN107102886A (zh) * | 2017-04-14 | 2017-08-29 | 北京洋浦伟业科技发展有限公司 | 安卓模拟器的检测方法及装置 |
CN107169351A (zh) * | 2017-05-11 | 2017-09-15 | 北京理工大学 | 结合动态行为特征的Android未知恶意软件检测方法 |
CN108021805A (zh) * | 2017-12-18 | 2018-05-11 | 上海众人网络安全技术有限公司 | 检测Android应用程序运行环境的方法、装置、设备及存储介质 |
CN109062667A (zh) * | 2018-07-27 | 2018-12-21 | 平安科技(深圳)有限公司 | 一种模拟器识别方法、识别设备及计算机可读介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106095927B (zh) * | 2016-06-12 | 2019-06-21 | 北京三快在线科技有限公司 | 一种位置数据的处理方法和装置 |
CN106815058B (zh) * | 2016-12-08 | 2020-11-03 | 同盾控股有限公司 | 一种模拟器的识别方法和系统 |
CN109558739B (zh) * | 2017-09-26 | 2022-04-15 | 腾讯科技(深圳)有限公司 | 程序运行方法、装置、终端及可读介质 |
CN108064085B (zh) * | 2017-12-13 | 2020-06-02 | 中国联合网络通信集团有限公司 | 一种无线资源分配方法及装置 |
CN109117250B (zh) * | 2018-07-27 | 2022-03-08 | 平安科技(深圳)有限公司 | 一种模拟器识别方法、识别设备及计算机可读介质 |
CN110619210A (zh) * | 2019-08-27 | 2019-12-27 | 苏宁云计算有限公司 | 一种模拟器检测方法及系统 |
-
2019
- 2019-08-27 CN CN201910797103.8A patent/CN110619210A/zh active Pending
-
2020
- 2020-06-24 WO PCT/CN2020/097836 patent/WO2021036450A1/zh active Application Filing
- 2020-06-24 CA CA3152837A patent/CA3152837A1/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6049866A (en) * | 1996-09-06 | 2000-04-11 | Silicon Graphics, Inc. | Method and system for an efficient user mode cache manipulation using a simulated instruction |
CN104951355A (zh) * | 2015-07-03 | 2015-09-30 | 北京数字联盟网络科技有限公司 | 识别应用程序虚拟运行环境的方法和装置 |
CN107102886A (zh) * | 2017-04-14 | 2017-08-29 | 北京洋浦伟业科技发展有限公司 | 安卓模拟器的检测方法及装置 |
CN107169351A (zh) * | 2017-05-11 | 2017-09-15 | 北京理工大学 | 结合动态行为特征的Android未知恶意软件检测方法 |
CN108021805A (zh) * | 2017-12-18 | 2018-05-11 | 上海众人网络安全技术有限公司 | 检测Android应用程序运行环境的方法、装置、设备及存储介质 |
CN109062667A (zh) * | 2018-07-27 | 2018-12-21 | 平安科技(深圳)有限公司 | 一种模拟器识别方法、识别设备及计算机可读介质 |
Non-Patent Citations (4)
Title |
---|
假_F89C: "Android判断模拟器还是真机的方法", 《HTTPS://WWW.JIANSHU.COM/P/3D2D080BC20E》 * |
普通的程序员: "一行代码帮你检测Android模拟器(更新至1.1.0)", 《HTTPS://WWW.JIANSHU.COM/P/434B3075B5DD》 * |
杨露菁,吉文阳,郝卓楠,李翀伦,吴俊锋: "《智能图像处理及应用》", 30 March 2019 * |
看书的小蜗牛: "Android模拟器识别检测技术", 《HTTPS://WWW.JIANSHU.COM/P/1DB610CC8B84》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021036450A1 (zh) * | 2019-08-27 | 2021-03-04 | 苏宁云计算有限公司 | 一种模拟器检测方法及系统 |
CN112100615A (zh) * | 2020-09-11 | 2020-12-18 | 北京明略昭辉科技有限公司 | 设备的识别方法及装置、存储介质、电子设备 |
CN112288428A (zh) * | 2020-09-24 | 2021-01-29 | 咪咕文化科技有限公司 | 模拟器的检测方法、装置、电子设备及存储介质 |
CN114362980A (zh) * | 2020-09-28 | 2022-04-15 | 腾讯科技(深圳)有限公司 | 协议挂登录账号识别方法、装置、计算机设备和存储介质 |
CN114362980B (zh) * | 2020-09-28 | 2023-07-28 | 腾讯科技(深圳)有限公司 | 协议挂登录账号识别方法、装置、计算机设备和存储介质 |
CN112468446A (zh) * | 2020-11-02 | 2021-03-09 | 上海绊糖信息科技有限公司 | 一种保护用户隐私的移动运行环境安全检测系统 |
CN112468446B (zh) * | 2020-11-02 | 2023-04-07 | 上海绊糖信息科技有限公司 | 一种保护用户隐私的移动运行环境安全检测系统 |
CN112559328A (zh) * | 2020-12-04 | 2021-03-26 | 北京字节跳动网络技术有限公司 | 指令模拟引擎的判别方法、装置、设备及介质 |
CN112954575A (zh) * | 2021-01-28 | 2021-06-11 | 歌尔科技有限公司 | 一种无线耳机故障检测方法、故障检测设备及无线耳机 |
CN112988324A (zh) * | 2021-01-28 | 2021-06-18 | 中国科学院信息工程研究所 | 一种基于cpu信息的安卓模拟器识别方法及系统 |
CN112905301A (zh) * | 2021-03-04 | 2021-06-04 | 中国科学院信息工程研究所 | 一种Android模拟器的检测方法及装置 |
CN113435103A (zh) * | 2021-05-19 | 2021-09-24 | 深圳供电局有限公司 | 配电房异常检测方法、系统、服务器、边缘网关和介质 |
CN113613074A (zh) * | 2021-07-27 | 2021-11-05 | Oppo广东移动通信有限公司 | 直播场景检测方法、装置、终端及存储介质 |
CN113613074B (zh) * | 2021-07-27 | 2023-08-18 | Oppo广东移动通信有限公司 | 直播场景检测方法、装置、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CA3152837A1 (en) | 2021-03-04 |
WO2021036450A1 (zh) | 2021-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110619210A (zh) | 一种模拟器检测方法及系统 | |
CN108073519B (zh) | 测试用例生成方法和装置 | |
CN102231131B (zh) | 测试电子设备内的软件 | |
CN101964036B (zh) | 漏洞检测方法及装置 | |
US20170046246A1 (en) | Multi-data analysis based proactive defect detection and resolution | |
CN107729227B (zh) | 应用程序测试范围确定方法、系统、服务器和存储介质 | |
US20100115496A1 (en) | Filter generation for load testing managed environments | |
CN110704304B (zh) | 一种应用程序测试方法、装置、存储介质和服务器 | |
CN106951780A (zh) | 重打包恶意应用的静态检测方法和装置 | |
US9921827B1 (en) | Developing versions of applications based on application fingerprinting | |
CN108804918B (zh) | 安全性防御方法、装置、电子设备及存储介质 | |
CN107145446B (zh) | 一种应用程序app的测试方法、装置和介质 | |
CN110580222A (zh) | 一种软件测试用例生成方法及系统 | |
CN107392018A (zh) | 应用程序脱壳方法及装置 | |
CN111045927A (zh) | 性能测试评估方法、装置、计算机设备及可读存储介质 | |
CN112966438A (zh) | 机器学习算法选择方法、分布式计算系统 | |
CN109992515A (zh) | 测试方法及装置、电子设备 | |
CN111091863A (zh) | 一种存储设备故障检测方法及相关装置 | |
US9811447B2 (en) | Generating a fingerprint representing a response of an application to a simulation of a fault of an external service | |
CN110389897A (zh) | Sdk逻辑测试方法、装置、存储介质及服务器 | |
CN113127331A (zh) | 一种基于故障注入的测试方法、装置及计算机设备 | |
CN108984386A (zh) | 应用程序搜索的测试方法、装置及存储介质 | |
CN111597101B (zh) | Sdk接入状态检测方法、计算机设备及计算机可读存储介质 | |
CN115525528A (zh) | 页面质量检测方法、装置、电子设备和存储介质 | |
CN111444093A (zh) | 项目开发过程质量的确定方法、装置、计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191227 |