一种模拟器识别方法、识别设备及计算机可读介质与流程

文档序号:16467245发布日期:2019-01-02 22:51阅读:166来源:国知局
一种模拟器识别方法、识别设备及计算机可读介质与流程

本发明涉及通信技术领域,尤其涉及一种模拟器识别方法、识别设备及计算机可读介质。



背景技术:

android模拟器是一个能在windows、linux等各种平台模拟出android系统的运行环境的应用,用户可以在个人计算机等终端中的android模拟器上运行android系统的应用。在使用android系统的应用时,对于某些业务,如需要进行风险监测的业务,并不希望它被运行在模拟器上,因此需要对终端是否运行于android模拟器环境进行识别。而目前风险识别设备对android模拟器的识别能力有限,无法有效识别出终端是否运行于模拟器环境。



技术实现要素:

本发明实施例提供一种模拟器识别方法、识别设备及计算机可读介质,有助于提升模拟器识别的准确性。

第一方面,本发明实施例提供了一种模拟器识别方法,包括:

获取目标终端的设备信息,所述设备信息包括与所述目标终端的机型信息、中央处理器cpu的生产商标识、内存空间值、安装的应用的第一数目、存储的文件的第二数目、使用的网络制式、运行状态、连接的无线保真wi-fi热点的路由器信息中的任一项或多项;

根据预先设置的多个模拟器识别规则和所述目标终端的设备信息,确定所述目标终端的设备信息在所述多个模拟器识别规则命中的目标识别规则,其中,所述多个模拟器识别规则是根据历史记录中运行于模拟器环境的终端的设备信息确定出的;

根据预先设置的所述目标识别规则的权重和权重阈值,识别所述目标终端是否运行于模拟器环境。

可选的,所述根据预先设置的所述目标识别规则的权重和权重阈值,识别所述目标终端是否运行于模拟器环境,包括:

当命中的所述目标识别规则为多个时,根据预先设置的各模拟器识别规则的权重,计算各个所述目标识别规则的权重的和;

判断所述权重的和是否大于预先设置的权重阈值;

当所述权重的和大于所述权重阈值时,确定所述目标终端运行于模拟器环境。

可选的,所述方法还包括:

分别统计历史记录中运行于模拟器环境的终端的设备信息命中所述多个模拟器识别规则的命中信息,所述命中信息包括命中频率和/或命中次数;

根据各模拟器识别规则对应的命中信息确定各模拟器识别规则对应的权重;

其中,每个模拟器识别规则对应的权重和该模拟器识别规则对应的命中频率成正比,和/或,每个模拟器识别规则对应的权重和该模拟器识别规则对应的命中次数成正比。

可选的,所述机型信息包括所述目标终端的型号和/或品牌,所述路由器信息包括路由器的名称和/或媒体访问控制(mediaaccesscontrol,mac)地址;所述多个模拟器识别规则包括以下至少两项:

待识别终端连接的wi-fi热点的路由器的名称与预置的第一黑名单内的路由器名称相同;

所述待识别终端连接的wi-fi热点的路由器的mac地址处于预置的第二黑名单内的mac地址集合;

所述待识别终端的型号与预置的第三黑名单内的任一终端型号相同;

所述待识别终端的品牌与预置的第四黑名单内的任一终端品牌相同;

所述待识别终端的中央处理器cpu的生产商标识与预置的白名单中的所有生产商标识均不相同;

所述待识别终端中未配置有预设模块,所述预设模块包括蓝牙模块、温度传感器、光线传感器中的一个或多个;

所述待识别终端的内存空间值小于预设内存阈值;

所述待识别终端安装的应用的第一数目小于预设的第一数目阈值;

所述待识别终端存储的文件的第二数目小于预设的第二数目阈值;

所述待识别终端使用的网络制式与预设的网络制式列表中的所有网络制式均不相同;

所述待识别终端的系统中存在预设路径和名称的系统文件;

所述待识别终端的运行状态为root状态。

可选的,在所述根据预先设置的多个模拟器识别规则和所述目标终端的设备信息,确定所述目标终端的设备信息在所述多个模拟器识别规则命中的目标识别规则之前,所述方法还包括:

获取所述目标终端的设备信息对应的目标函数的flag值,并根据所述flag值确定所述目标函数是否被hook;

当确定所述目标函数被hook时,从所述目标函数的内存中获取所述目标函数对应的目标函数指针;

根据预先存储的各函数指针和函数的对应关系,确定出所述目标函数指针对应的原始函数,并根据所述原始函数确定出原始设备信息;

根据预先设置的多个模拟器识别规则和所述目标终端的设备信息,确定所述目标终端的设备信息在所述多个模拟器识别规则命中的目标识别规则,包括:

根据预先设置的多个模拟器识别规则和所述原始设备信息,确定所述原始设备信息在所述多个模拟器识别规则命中的目标识别规则。

可选的,所述根据所述flag值确定所述目标函数是否被hook,包括:

将所述flag值中的预设位置处的字符与预设的固定字符进行比较,所述预设位置处的字符的字符数与所述固定字符的字符数相同;

当比较得到所述预设位置处的字符与所述固定字符不同时,确定所述目标函数被hook。

可选的,所述根据所述flag值确定所述目标函数是否被hook,包括:

按照预设的逻辑算法对所述flag值进行逻辑运算,以得到运算结果值,其中,所述逻辑算法是根据预设字符串和系统中的原生函数执行时的跳转地址确定的;

当所述运算结果值为正整数时,确定所述目标函数被hook。

第二方面,本发明实施例提供了一种识别设备,该识别设备包括用于执行上述第一方面的方法的单元。

第三方面,本发明实施例提供了另一种识别设备,包括处理器、用户接口、通信接口和存储器,所述处理器、用户接口、通信接口和存储器相互连接,其中,所述存储器用于存储支持识别设备执行上述方法的计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行上述第一方面的方法。

第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。

本发明实施例能够通过获取终端的设备信息,确定预设的多个模拟器识别规则中该目标终端的设备信息命中的模拟器识别规则,进而根据预设的该命中的模拟器识别规则的权重和预设权重阈值,来识别该目标终端是否运行于模拟器环境,使得实现了结合多个模拟器识别规则来进行模拟器识别,这就有助于提升模拟器识别的准确性。

附图说明

为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种模拟器识别方法的流程示意图;

图2是本发明实施例提供的另一种模拟器识别方法的流程示意图;

图3是本发明实施例提供的又一种模拟器识别方法的流程示意图;

图4是本发明实施例提供的一种识别设备的结构示意图;

图5是本发明实施例提供的另一种识别设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请的技术方案可应用于识别设备中,该识别设备可包括各种终端、服务器或与终端连接的风险识别产品(设备)等等,用于对终端中的模拟器行为进行识别(简称“模拟器识别”),以识别终端(或终端中的应用,如识别植入sdk的应用)是否运行于模拟器环境,或者称为识别终端是否使用模拟器登录。在本申请中,模拟器可以是指android模拟器或其他模拟器。本申请涉及的终端可以是手机、电脑、平板、个人计算机、智能手表等,本申请不做限定。

具体的,本申请可通过设置多个模拟器识别规则,并通过获取终端的各种设备信息,比如连接的wi-fi热点信息、机型信息、cpu的生产商信息、模块配置信息、内存空间信息、安装的应用的数目、存储的文件的数目、使用的网络制式、系统文件异常信息、运行状态等信息中的一项或多项,并根据各种设备信息命中的模拟器识别规则,结合多个模拟器识别规则来进行模拟器识别,从而能够提升模拟器识别的准确性。以下分别详细说明。

请参见图1,图1是本发明实施例提供的一种模拟器识别方法的流程示意图。具体的,如图1所示,该模拟器识别方法可以包括以下步骤:

101、获取目标终端的设备信息。

其中,该目标终端可以是指需要进行模拟器识别的任一终端,比如与风险识别产品连接的终端,或者处于特定风控场景下的终端,或者触发(比如通过预设按键或手势或预设的其他触发方式)了模拟器识别的终端,等等,本申请不做限定。该风控场景可以包括登录场景、交易场景、app优惠领域场景等等。

可选的,该获取的设备信息可包括与该目标终端的机型信息、cpu的生产商标识、内存空间值、安装的应用的第一数目、存储的文件的第二数目、使用的网络制式、模块配置信息、运行状态、连接的无线保真wi-fi热点的路由器信息中的任一项或多项。其中,该机型信息可包括该目标终端的型号和/或品牌,该模块配置信息包括是否配置有预设模块如蓝牙模块、温度传感器、光线传感器等等,该路由器信息可包括路由器的名称和/或媒体访问控制mac地址等等。

102、根据预先设置的多个模拟器识别规则和该目标终端的设备信息,确定该目标终端的设备信息在该多个模拟器识别规则命中的目标识别规则。

其中,该多个模拟器识别规则可以是根据历史记录中运行于模拟器环境的终端的设备信息确定出的,以提升模拟器识别的效率和可靠性。例如,该多个模拟器识别规则可以包括以下至少两项:

规则1:待识别终端连接的wi-fi热点的路由器的名称与预置的第一黑名单内的路由器名称相同;

规则2:待识别终端连接的wi-fi热点的路由器的mac地址处于预置的第二黑名单内的mac地址集合;

其中,检测mac地址是否处于预置的mac地址集合还可以称为检测mac地址是否与该mac地址集合中的mac地址相同;相应的,mac地址处于mac地址集合可以是指该mac地址与该mac地址集合中的任一mac地址相同。

规则3:待识别终端的型号与预置的第三黑名单内的任一终端型号相同;

规则4:待识别终端的品牌与预置的第四黑名单内的任一终端品牌相同;

可选的,上述的黑名单如第一黑名单、第二黑名单、第三黑名单、第四黑名单等包括的设备信息可以是历史数据中识别为模拟器的终端(即识别为运行在模拟器环境的终端)对应的设备信息,比如统计次数最多的前l(l为大于0的整数,如取8)个设备信息(路由器名称、mac地址、型号或品牌等等),或者统计次数大于预设阈值的设备信息等等,此处不赘述。

例如,该第一黑名单包括历史数据中识别为模拟器的终端所连接的路由器的名称中统计次数较多的名称,比如统计次数最多的前m(m为大于0的整数,如取10)个名称,或者统计次数大于预设数目阈值(第一阈值)的名称;又如,该第二黑名单包括历史数据中识别为模拟器的终端所连接的路由器的mac地址中统计次数较多的mac地址或者由该mac地址组成的mac地址集合,比如统计次数最多的前n(n为大于0的整数,如取50)个mac地址,或者统计次数大于预设数目阈值(第二阈值)的mac地址,或者由这些mac地址确定的mac地址集合,等等,本申请不做限定。其中,该第一阈值和第二阈值可以预先设置得到。

规则5:待识别终端的中央处理器cpu的生产商标识与预置的白名单中的所有生产商标识均不相同;

其中,该白名单中可包括一个或多个合法的cpu生产商的标识。

规则6:待识别终端中未配置有预设模块,该预设模块包括蓝牙模块、温度传感器、光线传感器中的一个或多个;

其中,该预设模块可以为根据历史数据统计的识别为模拟器的终端中没有配置的模块,如蓝牙模块、温度传感器、光线传感器。因此如果识别到终端没有配置该预设模块,则可能为模拟器。

规则7:待识别终端的内存空间值小于预设内存阈值;

规则8:待识别终端安装的应用的第一数目小于预设的第一数目阈值;

规则9:待识别终端存储的文件的第二数目小于预设的第二数目阈值;

其中,该第一数目阈值和第二数目阈值可以预先设置得到。

规则10:待识别终端使用的网络制式与预设的网络制式列表中的所有网络制式均不相同;

可选的,识别设备可以结合待识别终端如目标终端所在的目标区域确定哪些是正常的网络制式,比如通过预先配置不同区域及其对应的网络制式列表,来确定与该目标区域对应的网络制式列表,该网络制式列表中的网络制式即为该目标区域的正常网络制式。如果检测到该目标终端使用的网络制式不为其对应的网络制式列表中的网络制式,则该目标终端可能运行于模拟器环境,因为模拟器可能篡改网络制式信息。

规则11:待识别终端的系统中存在预设路径和名称的系统文件;

如果目标终端中存在异常的系统文件,则可能为模拟器。例如,该异常的系统文件可包括以下路径和名称的系统文件:/dev/qemu_pipe、/dev/socket/qemud、/system/lib/libc_malloc_debug_qemu.so、/sys/qemu_trace、/proc/tty/drivers/goldfish等等。

规则12:待识别终端的运行状态为root状态。如果检测到目标终端处于androidroot状态,则可能为模拟器。

其中,设备信息命中模拟器识别规则也可以称为设备信息满足模拟器识别规则或符合模拟器识别规则等等。该待识别终端即为需要通过确定其设备信息命中的模拟器识别规则以进行模拟器识别的终端,如上述的目标终端。

103、根据预先设置的该目标识别规则的权重和权重阈值,识别该目标终端是否运行于模拟器环境。

其中,该多个模拟器识别规则的权重可以预先设置得到,比如由风控人员根据经验进行设置,或者根据历史记录中识别为模拟器的终端命中各模拟器识别规则的频率或次数进行设置,等等。例如,设置的权重由大到小依次为:规则1=规则2>规则3=规则4>规则5>规则6=规则7=规则8=规则9=规则10>规则11>规则12。对于模拟器识别规则的权重的设置或者确定方式,本申请不做限定。

也就是说,本申请能够通过预置多个模拟器识别规则,进行在进行模拟器识别时,能够通过获取终端的设备信息,并检测该设备信息是否命中该多个模拟器识别规则,进而根据命中的模拟器识别规则的权重和预设权重阈值,来进行模拟器识别,比如在命中的模拟器识别规则的权重大于该权重阈值时,确定该终端运行于模拟器环境。进一步的,如果该目标终端的设备信息并未命中任何模拟器识别规则,则可确定该目标终端未运行于模拟器环境。

例如,在一些实施例中,该预设的多个模拟器识别规则为上述的规则1、2、3,预设的规则1的权重为0.7,规则2的权重为0.7,规则3的权重为0.5,权重阈值为0.6,该获取的设备信息包括目标终端连接的wi-fi热点的路由器的名称和mac地址,以及该目标终端的型号。则识别设备可通过检测该设备信息中的路由器的名称是否与该第一黑名单内的路由器名称相同,以及该设备信息中的mac地址是否处于该第二黑名单内的mac地址集合,以及该设备信息中的型号是否与该第三黑名单内的任一终端型号相同。如果识别设备检测到该路由器的名称与该第一黑名单内的任一路由器名称相同,则确定命中规则1,如果识别设备检测到该mac地址处于该第二黑名单内的任一mac地址集合,则确定命中规则2,如果识别设备检测到该型号与该第三黑名单内的任一终端型号相同,则确定命中规则3。假设识别设备确定该目标终端的设备信息命中规则2,未命中规则1和3,规则2对应的权重0.7大于权重阈值0.6,则可确定该目标终端运行于模拟器环境。

在本发明实施例中,识别设备能够通过获取终端的设备信息,确定预设的多个模拟器识别规则中该目标终端的设备信息命中的模拟器识别规则,进而根据预设的该命中的模拟器识别规则的权重和预设权重阈值,来识别该目标终端是否运行于模拟器环境,使得实现了结合多个模拟器识别规则来进行模拟器识别,这就有助于提升模拟器识别的准确性。

请参见图2,图2是本发明实施例提供的另一种模拟器识别方法的流程示意图。具体的,如图2所示,该模拟器识别方法可以包括以下步骤:

201、分别统计历史记录中运行于模拟器环境的终端的设备信息命中该多个模拟器识别规则的命中信息,该命中信息包括命中频率和/或命中次数。

202、根据各模拟器识别规则对应的命中信息确定各模拟器识别规则对应的权重。

其中,每个模拟器识别规则对应的权重可以和该模拟器识别规则对应的命中频率成正比,和/或,每个模拟器识别规则对应的权重可以和该模拟器识别规则对应的命中次数成正比。

也就是说,本申请可通过对识别为运行于模拟器环境的终端的历史数据,包括命中的模拟器规则进行大数据分析,根据该历史数据命中上述规则的频率和/或次数来灵活设置模拟器识别规则的权重。例如,命中某一规则的命中频率的频率越高,该规则对应的权重设置为越大;命中某一规则的命中次数越高,该规则对应的权重设置为越大,等等。可选的,可预先建立该命中频率(和/或命中次数)与权重之间的映射关系,或者,预先建立该命中频率(和/或命中次数)和重要等级之间的映射关系以及重要等级和权重之间的映射关系等等。进而识别设备可根据每一模拟器识别规则的命中频率和/或命中次数,确定其对应的权重。进一步可选的,还可按照预设时间间隔去统计最近的预设时间段内各模拟器识别规则的新的命中频率和/或命中次数,进而根据该新的命中频率和/或命中次数更新各规则的权重,以进一步提升模拟器识别的准确性。

可选的,识别设备还可根据该命中频率和/或命中次数设置或选取该进行模拟器识别的多个模拟器识别规则(即上述的多个模拟器识别规则),如将命中频率或次数最高的前l(l为大于0的整数,如取6)个规则作为该多个模拟器识别的规则,或者将预设时间段内的命中频率高于预设频率阈值的规则作为该多个模拟器识别规则,或者将预设时间段内的命中次数高于预设次数阈值的规则作为该多个模拟器识别规则,等等,此处不一一列举。从而提升了模拟器设置规则的灵活性和可靠性,并能够提升识别效率。

203、获取目标终端的设备信息。

可选的,在进行模拟器识别时,识别设备可通过获取目标终端的设备底层多项设备信息,比如该设备信息可包括以下一项或多项:连接的wi-fi热点的路由器信息(包括路由器名称(或wi-fi名称)如wi-fi服务集标识(servicesetidentifier,ssid),路由器mac地址(或wi-fimac地址)如wi-fi基本服务集标识(basicservicesetidentifier,bssid)等)、机型(型号和/或品牌)、cpu生产商信息、蓝牙信息、传感器信息、用户使用痕迹信息如内存空间值、使用的网络制式、android状态(或称为运行状态,如是否处于root状态)、系统文件异常信息(如是否存在预设路径和名称的系统文件)、安装的应用的数目、存储的文件的数目、接入app的包名、接入app的版本号、sdk的版本号、操作系统类型、操作系统版本、设备唯一标识码(udid)、是否已经越狱(比如1代表已越狱,0代表未越狱)、经纬度信息、网络类型、指定app是否安装(比如1代表已安装,0代表未安装)、是否安装了阿里小号、是否安装了v8插件、当前时间戳(比如精度为毫秒)、广告标示符、vendor标识符、设备型号、主机名、cpu核心数、cpu类型、cpu子类型、屏幕分辨率、存储总空间、存储剩余空间、时区、语言、电量、电池状态、运营商名称、国家iso、启动时间、键盘列表、did被抹掉或篡改、localfile中存储的did、是否打开gps开关(比如0代表关闭,1代表开启)、gps授权状态、app加载的动态链接库列表等等,来进行模拟器识别。可选的,本申请可采用android底层源生api采集设备信息,使得设备信息不容易被篡改。

具体的,识别设备可通过获取多项设备信息来进行模拟器识别,以提升识别的可靠性。而且,该识别设备可根据预设的多个模拟器识别规则使用该获取的设备信息项中与该多个模拟器识别规则对应的部分信息用于模拟器识别,即获取的设备信息项多于需要使用到的设备信息项,使得非法分子无法确定具体使用哪些信息来进行模拟器识别的,这就有助于防止非法分子了解到某一识别规则后篡改相关设备信息导致无法及时识别模拟器的情况的发生,即防止识别规则被破解,使得提升了模拟器识别的可靠性。

204、根据预先设置的多个模拟器识别规则和该目标终端的设备信息,确定该目标终端的设备信息在该多个模拟器识别规则命中的目标识别规则。

其中,该多个模拟器识别规则可以是根据历史记录中运行于模拟器环境的终端的设备信息确定出的,此处不赘述。

205、当命中的该目标识别规则为多个时,根据预先设置的各模拟器识别规则的权重,计算各个该目标识别规则的权重的和。

206、判断该权重的和是否大于预先设置的权重阈值。

207、当该权重的和大于该权重阈值时,确定该目标终端运行于模拟器环境。

具体的,识别设备可通过判断获取的设备信息是否命中预先设置的多个模拟器识别规则,根据是否命中的结果确定各规则的权重,并根据各规则的权重识别是否为模拟器。其中,如果命中某一规则,则取该命中的规则的权重为预先设置的权重;如果未命中某一规则,则取该未命中的规则的权重为0。也即,统计命中的模拟器识别规则即目标识别规则的权重。进一步的,可以预先设置一个阈值,如果累计得到命中的各目标识别规则的权重之和超过该阈值,则可识别为模拟器,即确定该目标终端运行于模拟器环境。

例如,在一些实施例中,该预设的多个模拟器识别规则为上述的规则1-12,预设的规则1、2的权重均为0.4,规则3、4的权重均为0.35,规则5的权重为0.3,规则6、7、8、9、10的权重均为0.25,规则11的权重为0.2,规则12的权重为0.1,预设的权重阈值为1。该获取的设备信息包括目标终端连接的wi-fi热点的路由器的名称和mac地址,目标终端的型号、品牌、cpu的生产商标识、模块配置信息、内存空间值、安装的应用的第一数目、存储的文件的第二数目、使用的网络制式、运行状态及其他信息。则识别设备可通过检测该设备信息中的路由器的名称是否与该第一黑名单内的路由器名称相同,以及该设备信息中的mac地址是否处于该第二黑名单内的mac地址集合,以及该设备信息中的型号是否与该第三黑名单内的任一终端型号相同,以及该设备信息中的品牌是否与第四黑名单内的任一终端品牌相同,以及该设备信息中的cpu的生产商标识是否与该白名单中的所有生产商标识均不相同,以及该设备信息中的模块配置信息是否指示该目标终端配置有预设模块,以及该设备信息中的内存空间值是否小于预设内存阈值,以及该设备信息中的安装的应用的第一数目是否小于该第一数目阈值,以及该设备信息中的存储的文件的第二数目是否小于预设的第二数目阈值,以及该设备信息中的使用的网络制式是否与预设的网络制式列表中的所有网络制式均不相同,以及该设备信息中的系统文件信息指示是否存在预设路径和名称的系统文件,以及设备信息中的运行状态是否为root状态。如果识别设备检测到该路由器的名称与该第一黑名单内的任一路由器名称相同,则确定命中规则1,如果识别设备检测到该mac地址处于该第二黑名单内的任一mac地址集合,则确定命中规则2,如果识别设备检测到该型号与该第三黑名单内的任一终端型号相同,则确定命中规则3,等等,此处不赘述。假设识别设备确定该目标终端的设备信息命中规则1、2、5、12,未命中规则3、4、6、7、8、9、10和11,则命中的规则的权重之和为0.4+0.4+0.3+0.1=1.2,1.2大于权重阈值1,则可确定该目标终端运行于模拟器环境。如果命中的规则的权重之和小于1,则可确定该目标终端未运行于模拟器环境,或者还可结合其他信息进一步识别,或者还可间隔预设时间后再次进行模拟器识别,或者根据权重之和的大小对终端部分操作进行控制,等等,本申请不做限定。

在本发明实施例中,识别设备能够根据各个类型的模拟器的共性特征生成各种模拟器识别规则,并可根据历史记录中运行于模拟器环境的终端的设备信息命中该多个模拟器识别规则的命中频率和/或命中次数为各模拟器识别规则设置权重,进而在进行模拟器识别时,能够通过采集目标终端的多项设备信息,确定该设备信息命中的模拟器识别规则,进而根据该命中的各模拟器识别规则的权重之和以及预设权重阈值来确定该目标终端是否运行于模拟器环境,使得提升了模拟器规则的权重设置的灵活性和可靠性,实现了结合多个模拟器识别规则来进行模拟器识别,这就提升了模拟器识别的准确性。

请参见图3,图3是本发明实施例提供的又一种模拟器识别方法的流程示意图。具体的,如图3所示,该模拟器识别方法可以包括以下步骤:

301、获取目标终端的设备信息。

其中,获取的设备信息的相关描述可参照上述实施例的相关描述,此处不赘述。

302、获取该目标终端的设备信息对应的目标函数的flag值,并根据该flag值确定该目标函数是否被hook。

可选的,在获取设备信息之后,并在该根据预先设置的多个模拟器识别规则和该目标终端的设备信息,确定该目标终端的设备信息在该多个模拟器识别规则命中的目标识别规则之前,即在根据设备信息进行模拟器识别之前,识别设备还可检测用于进行模拟器识别的设备信息是否被篡改,以确保基于真实的设备信息进行模拟器识别。其中,该检测是否被篡改的设备信息可以仅为该多个模拟器识别规则对应的设备信息,以减小设备开销。

具体的,识别设备能够通过检测设备信息对应的函数是否被hook来识别该篡改行为。其中,该flag值可用于标记所述目标函数的状态,该状态可以是指是否被篡改的状态,或者可以是指读写状态、阻塞与非阻塞状态、退出进程或程序的状态和/或更改文件的内容的状态等等,从而能够根据该flag值确定出该目标函数是否被hook。每一个函数都有对应的flag,该flag为一个变量,当某一函数被hook时,该函数对应的flag会发生改变。由此,识别设备可通过检测函数的flag是否发生改变,来确定该函数是否被hook,也即该函数对应的设备信息是否被篡改。其中,该flag的值可以是存储于该目标函数对应的内存中。

可选的,在根据该flag值确定该目标函数是否被hook时,识别设备可以将该flag值中的预设位置处的字符与预设的固定字符进行比较;当比较得到该预设位置处的字符与该固定字符不同时,确定该目标函数被hook。其中,该预设位置处的字符的字符数与该固定字符的字符数相同,以便于匹配比较。也就是说,该flag发生改变可以是指该flag值的一位或多位发生改变,且该一位或多位可以是指flag的预设位置处的一位或多位。从而识别设备可以通过将获取的flag值预设位置处的一位或多位与未被篡改时的固定字符进行比较,如果flag值的该一位或多位发生改变,即flag值的一位或多位与该固定字符不同,则表明该目标函数被hook,即该目标函数对应的设备信息被篡改。

例如,针对android版本在4.4以上及5.0以下的系统,有的xposed插件对某函数进行hook时,会将该函数的flag值的固定位置处的1位(bit)设置为1;而正常未被篡改的函数,flag值的该位是0(即上述的固定字符)。因此,可通过检测函数的flag值的该固定位是否是0,就可以知道该函数是否被xposed插件进行了hook。也即,如果该测函数的flag值的该固定位不为0,即可表明该函数被hook,该函数被篡改。

可选的,在根据该flag值确定该目标函数是否被hook时,识别设备还可以按照预设的逻辑算法对该flag值进行逻辑运算,以得到运算结果值;当该运算结果值为正整数时,确定该目标函数被hook。其中,该逻辑算法可以是根据预设字符串和系统中的原生函数执行时的跳转地址确定的。也就是说,还可将按照预设逻辑算法对flag处理后的值与未被篡改时的固定字符如0进行比较,如果处理后的该值发生改变,即不为0,比如为某一正整数时,则表明该函数被hook。

例如,针对android版本在5.0及其以上的系统,如果按照逻辑算法如逻辑算式entrypointfromjni&&accessflags&0x10000000结果等于正整数,则可表明该函数被篡改;如果该逻辑算式结果等于0(即为固定字符),则可表明该函数未被篡改。其中,该entrypointfromjni可以是指原生函数如native函数执行时的跳转地址,accessflags即为上述的flag。

进一步可选的,识别设备在根据该flag值确定该目标函数是否被hook之前,还可确定该目标终端目标使用的系统版本,进而根据该目标终端的系统版本去选择根据该flag值确定该目标函数是否被hook的方式,以提升hook检测的效率。其中,该系统版本和hook检测的方式的对应关系可预先设置得到。

303、当确定该目标函数被hook时,从该目标函数的内存中获取该目标函数对应的目标函数指针。

其中,该函数指针和被hook的函数是存储于同一块内存的不同字段中的,且不同函数指针和原始函数存在映射关系,或者说不同函数指针和原始函数的存储地址存在映射关系。

可选的,在确定该目标函数被hook之后,还可对该被hook的目标函数进行还原,以便于确定出该目标函数对应的真实设备信息。具体的,在确定某一函数如该目标函数被hook之后,可从其内存中快速获取该目标函数对应的函数指针,即上述的目标函数指针,以便于根据该目标函数指针确定出该目标函数对应的原始函数如原生api,即未被hook的真实函数。

304、根据预先存储的各函数指针和函数的对应关系,确定出该目标函数指针对应的原始函数,并根据该原始函数确定出原始设备信息。

在确定出该目标函数对应的内存中的目标函数指针之后,即可进一步确定出该目标函数指针对应的原始函数,即真实的method。进而可通过该原始函数替换该目标函数,实现对被hook的函数的还原。从而识别设备可通过该原始函数确定出该目标终端对应的真实设备信息,以基于真实设备信息进行模拟器识别,也就是说,本本发明实施例可在检测到设备信息被篡改时及时地获取真实的设备信息,以基于真实的设备信息进行模拟器识别,由此提升了模拟器识别的准确性和可靠性。

例如,假设该设备信息包括该路由器的名称和mac地址,如果检测到该路由器的名称对应的函数被hook,即可还原得到真实的原始路由器的名称;如果检测到该mac地址对应的函数被hook,即可还原得到真实的原始mac地址,进而可以基于该真实的原始路由器的名称和mac地址以进行模拟器识别。

应理解,该内存中存储的原始函数指针是不会被篡改的,根据xposed插件的工作原理,在篡改目标函数之前,会将函数的原始信息备份下来,并保存在内存中的特定地址,即该目标函数指针指向的地址。而一旦这些备份信息也被篡改,那xposed插件将无法正常工作。因此,在该目标函数指针指向的特定地址获取到的原始函数,一定是正确的函数,其不会被篡改。

305、根据预先设置的多个模拟器识别规则和该原始设备信息,确定该原始设备信息在该多个模拟器识别规则命中的目标识别规则。

306、根据预先设置的该目标识别规则的权重和权重阈值,识别该目标终端是否运行于模拟器环境。

在确定出真实的原始设备信息之后,即可确定该原始设备信息是否命中对应的模拟器识别规则,进而根据命中结果来进行模拟器识别,识别方式与上述根据设备信息和预设的多个模拟器规则进行模拟器识别的方式类似,具体请参照上述图1所示实施例中步骤102-103以及图2所示实施例中步骤205-207的相关描述,此处不赘述。

可选的,如果确定目标终端运行在模拟器环境中,识别设备可生成告警信息,以进行风控。例如,该告警信息可以包括:风险等级、用户信息、设备恶意行为中的一项或多项。其中,该风险等级可以根据终端的目标风控场景确定出,具体可预先设置得到不同风控场景和风险等级的对应关系;或者,该风险等级可以根据终端目标运行的应用确定出,具体可预先设置得到不同应用和风险等级的对应关系;或者,该风险等级还可根据终端被hook的函数的数目确定出,具体可预先设置得到不同hook数目和风险等级的对应关系;或者,该风险等级还可根据终端被篡改的设备信息的优先级确定出,具体可预先设置得到不同设备信息的优先级,以及各优先级和风险等级的对应关系,等等,本申请不做限定。例如,该风险等级可以分为高危、中危、低危,或者一级、二级、三级等等。该用户信息可包括用户标识(useridentification,uid)、手机号码、身份证号码(如果注册应用时采集到的话)等。该恶意行为可包括篡改mac地址、篡改cpu生产商、篡改手机型号及品牌、篡改手机号码等等,具体可通过上述的hook检测确定出。

此外,可选的,识别设备还可根据该告警信息,向目标终端下发指令,以对目标终端(如终端上运行的app客户端)上的操作进行控制。例如,如果识别设备确定该风险等级为低危,识别设备可以下发指令指示客户端输出提示,要求用户输入验证信息,验证方式包括但不限于短信验证码、图片验证码等方式。如果验证未通过则无法进行后续操作。又如,如果识别设备确定该风险等级为中危,识别设备可以下发指令指示客户端禁止用户在目标风控场景(例如登录、领取红包、兑换优惠券、消费、转账等等)的请求访问操作。又如,如果识别设备确定该风险等级为高危,识别设备可以下发指令指示客户端禁止用户一切请求访问操作,等等,此处不一一列举。

例如,对于某些手机游戏,使用模拟器可以获得比手机更强的性能(实际上属于游戏作弊),本申请能够通过上述的识别方式识别出游戏应用是否运行在模拟器环境中,能够及时的发现运行于模拟器中的游戏行为,进而可制止该行为,防止作弊给用户带来的损失。

又如,某一金融机构推出的小额贷款的风控策略是仅允许特定区域的用户如北上广的用户贷款,非法用户可能使用模拟器修改gps定位,达到绕过风控策略的目的,骗取贷款。由此,本申请可通过上述的识别方式识别出设备是否运行于模拟器环境,并在确定设备运行于模拟器环境之后,拒绝该用户的贷款请求。进一步的,本申请还可采用上述的hook检测方式对该gps定位进行还原,以获取得到用户的真实定位信息。

又如,非法分子通过在模拟器中设置手机型号、品牌、厂商等信息,实现一个模拟器软件模拟多台不同安卓手机的目的,从而创建假身份骗取优惠活动、注册奖励等等。通过本申请,能够根据上述的hook检测方式确定手机型号、品牌、厂商等信息被篡改后,还原真实的手机型号、品牌、厂商等信息并进行模拟器识别,进而能够及时地识别出设备操作是否运行在模拟器环境中,并在识别出运行在模拟器环境中时能够及时地制止该行为,避免给合法用户造成损失。

在本发明实施例中,识别设备能够根据设置的多个模拟器识别规则和采集的终端设备信息,根据终端设备信息命中的模拟器识别规则,来识别该终端是否运行于模拟器环境,使得实现了结合多个模拟器识别规则来进行模拟器识别,这就提升了模拟器识别的准确性。而且,在根据设备信息识别是否为模拟器之前,能够通过识别设备信息是否被篡改,并在检测到被篡改时及时地还原真实的设备信息,以基于真实的设备信息进行模拟器识别,这就进一步提升了模拟器识别的准确性。

上述方法实施例都是对本申请的模拟器识别方法的举例说明,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

请参见图4,图4是本发明实施例提供的一种识别设备的结构示意图。本发明实施例的识别设备包括用于执行上述模拟器识别方法的单元。具体的,本实施例的识别设备400可包括:获取单元401和处理单元402。其中,

获取单元401,用于获取目标终端的设备信息,所述设备信息包括与所述目标终端的机型信息、中央处理器cpu的生产商标识、内存空间值、安装的应用的第一数目、存储的文件的第二数目、使用的网络制式、运行状态、连接的无线保真wi-fi热点的路由器信息中的任一项或多项;

处理单元402,用于根据预先设置的多个模拟器识别规则和所述目标终端的设备信息,确定所述目标终端的设备信息在所述多个模拟器识别规则命中的目标识别规则,其中,所述多个模拟器识别规则是根据历史记录中运行于模拟器环境的终端的设备信息确定出的;

所述处理单元402,还用于根据预先设置的所述目标识别规则的权重和权重阈值,识别所述目标终端是否运行于模拟器环境。

可选的,所述处理单元402,具体用于在命中的所述目标识别规则为多个时,根据预先设置的各模拟器识别规则的权重,计算各个所述目标识别规则的权重的和;判断所述权重的和是否大于预先设置的权重阈值;当所述权重的和大于所述权重阈值时,确定所述目标终端运行于模拟器环境。

可选的,所述识别设备还包括:权重设置单元403,;

所述权重设置单元403,用于分别统计历史记录中运行于模拟器环境的终端的设备信息命中所述多个模拟器识别规则的命中信息;根据各模拟器识别规则对应的命中信息确定各模拟器识别规则对应的权重。

其中,所述命中信息包括命中频率和/或命中次数,每个模拟器识别规则对应的权重和该模拟器识别规则对应的命中频率成正比,和/或,每个模拟器识别规则对应的权重和该模拟器识别规则对应的命中次数成正比。

可选的,所述机型信息包括所述目标终端的型号和/或品牌,所述路由器信息包括路由器的名称和/或媒体访问控制mac地址;所述多个模拟器识别规则包括以下至少两项:

待识别终端连接的wi-fi热点的路由器的名称与预置的第一黑名单内的路由器名称相同;

所述待识别终端连接的wi-fi热点的路由器的mac地址处于预置的第二黑名单内的mac地址集合;

所述待识别终端的型号与预置的第三黑名单内的任一终端型号相同;

所述待识别终端的品牌与预置的第四黑名单内的任一终端品牌相同;

所述待识别终端的中央处理器cpu的生产商标识与预置的白名单中的所有生产商标识均不相同;

所述待识别终端中未配置有预设模块,所述预设模块包括蓝牙模块、温度传感器、光线传感器中的一个或多个;

所述待识别终端的内存空间值小于预设内存阈值;

所述待识别终端安装的应用的第一数目小于预设的第一数目阈值;

所述待识别终端存储的文件的第二数目小于预设的第二数目阈值;

所述待识别终端使用的网络制式与预设的网络制式列表中的所有网络制式均不相同;

所述待识别终端的系统中存在预设路径和名称的系统文件;

所述待识别终端的运行状态为root状态。

可选的,所述识别设备还包括:hook检测单元404和还原单元405;

所述获取单元401,还用于获取所述目标终端的设备信息对应的目标函数的flag值;

hook检测单元404,用于根据所述flag值确定所述目标函数是否被hook;

所述获取单元401,还用于当确定所述目标函数被hook时,从所述目标函数的内存中获取所述目标函数对应的目标函数指针;

还原单元405,用于根据预先存储的各函数指针和函数的对应关系,确定出所述目标函数指针对应的原始函数,并根据所述原始函数确定出原始设备信息;

所述处理单元402,具体用于根据预先设置的多个模拟器识别规则和所述原始设备信息,确定所述原始设备信息在所述多个模拟器识别规则命中的目标识别规则。

可选的,所述hook检测单元404,具体用于将所述flag值中的预设位置处的字符与预设的固定字符进行比较,所述预设位置处的字符的字符数与所述固定字符的字符数相同;当比较得到所述预设位置处的字符与所述固定字符不同时,确定所述目标函数被hook。

可选的,所述hook检测单元404,具体用于按照预设的逻辑算法对所述flag值进行逻辑运算,以得到运算结果值,其中,所述逻辑算法是根据预设字符串和系统中的原生函数执行时的跳转地址确定的;当所述运算结果值为正整数时,确定所述目标函数被hook。

具体的,该识别设备可通过上述单元实现上述图1至图3所示实施例中的模拟器识别方法中的部分或全部步骤。应理解,本发明实施例是对应方法实施例的装置实施例,对方法实施例的描述,也适用于本发明实施例。

请参见图5,图5是本发明实施例提供的另一种识别设备的结构示意图。该识别设备用于执行上述的方法。如图5所示,本实施例中的识别设备500可以包括:一个或多个处理器501和存储器502。可选的,该识别设备还可包括一个或多个用户接口503,和/或,一个或多个通信接口504。上述处理器501、用户接口503、通信接口504和存储器502可通过总线505连接,或者可以通过其他方式连接,图5中以总线方式进行示例说明。其中,存储器502用于存储计算机程序,所述计算机程序包括程序指令,处理器501用于执行存储器502存储的程序指令。

其中,处理器501可用于调用所述程序指令执行以下步骤:获取目标终端的设备信息,所述设备信息包括与所述目标终端的机型信息、中央处理器cpu的生产商标识、内存空间值、安装的应用的第一数目、存储的文件的第二数目、使用的网络制式、运行状态、连接的无线保真wi-fi热点的路由器信息中的任一项或多项;根据预先设置的多个模拟器识别规则和所述目标终端的设备信息,确定所述目标终端的设备信息在所述多个模拟器识别规则命中的目标识别规则,其中,所述多个模拟器识别规则是根据历史记录中运行于模拟器环境的终端的设备信息确定出的;根据预先设置的所述目标识别规则的权重和权重阈值,识别所述目标终端是否运行于模拟器环境。

可选的,处理器501调用所述程序指令执行所述根据预先设置的所述目标识别规则的权重和权重阈值,识别所述目标终端是否运行于模拟器环境时,具体执行以下步骤:当命中的所述目标识别规则包括多个时,根据预先设置的各模拟器识别规则的权重,计算各个所述目标识别规则的权重的和;判断所述权重的和是否大于预先设置的权重阈值;当所述权重的和大于所述权重阈值时,确定所述目标终端运行于模拟器环境。

可选的,处理器501还用于调用所述程序指令执行以下步骤:分别统计历史记录中运行于模拟器环境的终端的设备信息命中所述多个模拟器识别规则的命中信息,所述命中信息包括命中频率和/或命中次数;根据各模拟器识别规则对应的命中信息确定各模拟器识别规则对应的权重;其中,每个模拟器识别规则对应的权重和该模拟器识别规则对应的命中频率成正比,和/或,每个模拟器识别规则对应的权重和该模拟器识别规则对应的命中次数成正比。

可选的,所述机型信息包括所述目标终端的型号和/或品牌,所述路由器信息包括路由器的名称和/或媒体访问控制mac地址;所述多个模拟器识别规则包括以下至少两项:待识别终端连接的wi-fi热点的路由器的名称与预置的第一黑名单内的路由器名称相同;所述待识别终端连接的wi-fi热点的路由器的mac地址处于预置的第二黑名单内的mac地址集合;所述待识别终端的型号与预置的第三黑名单内的任一终端型号相同;所述待识别终端的品牌与预置的第四黑名单内的任一终端品牌相同;所述待识别终端的中央处理器cpu的生产商标识与预置的白名单中的所有生产商标识均不相同;所述待识别终端中未配置有预设模块,所述预设模块包括蓝牙模块、温度传感器、光线传感器中的一个或多个;所述待识别终端的内存空间值小于预设内存阈值;所述待识别终端安装的应用的第一数目小于预设的第一数目阈值;所述待识别终端存储的文件的第二数目小于预设的第二数目阈值;所述待识别终端使用的网络制式与预设的网络制式列表中的所有网络制式均不相同;所述待识别终端的系统中存在预设路径和名称的系统文件;所述待识别终端的运行状态为root状态。

可选的,处理器501在调用所述程序指令执行所述根据预先设置的多个模拟器识别规则和所述目标终端的设备信息,确定所述目标终端的设备信息在所述多个模拟器识别规则命中的目标识别规则之前,还执行以下步骤:获取所述目标终端的设备信息对应的目标函数的flag值,并根据所述flag值确定所述目标函数是否被hook;当确定所述目标函数被hook时,从所述目标函数的内存中获取所述目标函数对应的目标函数指针;根据预先存储的各函数指针和函数的对应关系,确定出所述目标函数指针对应的原始函数,并根据所述原始函数确定出原始设备信息;

处理器501调用所述程序指令执行所述根据预先设置的多个模拟器识别规则和所述目标终端的设备信息,确定所述目标终端的设备信息在所述多个模拟器识别规则命中的目标识别规则时,具体执行以下步骤:根据预先设置的多个模拟器识别规则和所述原始设备信息,确定所述原始设备信息在所述多个模拟器识别规则命中的目标识别规则。

可选的,处理器501在调用所述程序指令执行所述根据所述flag值确定所述目标函数是否被hook时,具体执行以下步骤:将所述flag值中的预设位置处的字符与预设的固定字符进行比较,所述预设位置处的字符的字符数与所述固定字符的字符数相同;当比较得到所述预设位置处的字符与所述固定字符不同时,确定所述目标函数被hook。

可选的,处理器501在调用所述程序指令执行所述根据所述flag值确定所述目标函数是否被hook时,具体执行以下步骤:按照预设的逻辑算法对所述flag值进行逻辑运算,以得到运算结果值,其中,所述逻辑算法是根据预设字符串和系统中的原生函数执行时的跳转地址确定的;当所述运算结果值为正整数时,确定所述目标函数被hook。

其中,所述处理器501可以是中央处理单元(centralprocessingunit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

用户接口503可包括输入设备和输出设备,输入设备可以包括触控板、麦克风等,输出设备可以包括显示器(lcd等)、扬声器等。

通信接口504可包括接收器和发射器,用于与其他设备进行通信。

存储器502可以包括只读存储器和随机存取存储器,并向处理器501提供指令和数据。存储器502的一部分还可以包括非易失性随机存取存储器。例如,存储器502还可以存储上述的函数指针和函数的对应关系等等。

具体实现中,本发明实施例中所描述的处理器501等可执行上述图1至图3所示的方法实施例中所描述的实现方式,也可执行本发明实施例图4所描述的各单元的实现方式,此处不赘述。

本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时可实现图1至图3所对应实施例中描述的模拟器识别方法中的部分或全部步骤,也可实现本发明图4或图5所示实施例的识别设备的功能,此处不赘述。

本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述方法中的部分或全部步骤。

所述计算机可读存储介质可以是前述任一实施例所述的识别设备的内部存储单元,例如识别设备的硬盘或内存。所述计算机可读存储介质也可以是所述识别设备的外部存储设备,例如所述识别设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。

在本申请中,术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

以上所述,仅为本发明的部分实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1