一种基于用户信息的安卓模拟器识别方法及系统与流程

文档序号:25543225发布日期:2021-06-18 20:40
一种基于用户信息的安卓模拟器识别方法及系统与流程

本发明涉及计算机技术领域,用于识别安卓模拟器,更具体地,是一种基于用户信息的安卓模拟器识别方法及系统。



背景技术:

安卓模拟器是指能在个人计算机运行并模拟安卓手机系统的模拟器,能安装、使用、卸载安卓应用的软件,利用安卓模拟器,用户即使没有手机硬件设备,也能在模拟器中使用移动应用程序。

安卓模拟器设计的初衷是便于安卓开发人员在自己的设备之上进行应用程序的安装、调试等工作,从而提升工作效率。其主要工作原理是通过在电脑上进行指令的翻译,并且在宿主机上进行执行。安卓模拟器自诞生以来,由于其成本低廉、性能优越、隐蔽性强等特点,被广泛应用于互联网黑产之中,进而导致了网络欺骗、游戏作弊、刷单、刷评论等不法行为,严重侵犯了网络空间安全。例如,不法分子使用电脑等设备大量安装安卓模拟器,下载对应的app并注册大量账号,以此获取新用户奖励,造成了企业推广费用的损失。

目前各大安卓厂商普遍采用的是获取安卓设备的imei、imsi等唯一标识符来对安卓设备进行唯一标识。然而获取这些信息需要获得安卓设备的read_phone_state权限,该权限属于高危权限,使用时须有用户授权。其次是目前的黑产已经有成熟的方案可以绕过这类单一的标识符,导致依赖单标识符的鉴别方法已经无法识别出安卓模拟器。因此,如何在零权限下,准确地辨识出哪些接入设备是真实安卓设备,哪些接入设备是安卓模拟器设备,是本领域技术人员亟待解决的技术难题。

中国专利申请cn108985048a公开了一种模拟器识别方法及相关装置,其通过关联设备的设备属性组,其中设备属性组包括该关联设备多维度的设备属性(多维度包括设备信息维度、配置信息维度和运行信息维度),进行模拟器识别。但该方法偏向于获取硬件信息,需要获取对应的权限。



技术实现要素:

为解决上述问题,本发明提出的一种基于用户信息的安卓模拟器识别方法及系统,通过在用户设备的app中安装对应的设备指纹收集sdk,可以在不影响用户正常使用app的同时,有效鉴别出用户使用的设备是安卓模拟器还是真实安卓设备,解决了现有技术过度依赖imei、imsi等强标识符的问题,有效打击依赖安卓模拟器的黑色产业。

为达到上述目的,本发明采用具体技术方案是:

一种基于用户信息的安卓模拟器识别方法,其步骤包括:

1)服务端收集客户端的用户设备信息,其中所述用户设备信息通过在app中嵌入设备指纹sdk得到;

2)根据用户设备信息,构建m维的特征向量,其中m为属性的数量;

3)将所述特征向量输入至安卓模拟器识别模型,获取识别结果;

其中,通过以下步骤得到所述安卓模拟器识别模型:

a)获取若干样本用户设备信息;

b)根据若干样本用户设备信息,分别构建若干m维的样本特征向量,

c)依据m维的样本特征向量进行机器学习,得到所述安卓模拟器识别模型。

进一步地,收集用户设备信息的方法包括:访问对应类的成员变量、执行系统命令和访问特定文件。

进一步地,对应类包括:android.os.build、settings.global、android.provider.settings.system和android.provider.settings.secure。

进一步地,执行系统命令的方法包括:运行runtime.getruntime().exec()。

进一步地,用户设备信息的格式包括:包含属性名与属性值的json格式数值对

进一步地,用户设备信息包括:用户设备的设置信息、用户设备的基础硬件信息和用户设备的操作系统信息。

进一步地,客户端在向服务端发送用户设备信息之前,对用户设备进行脱敏处理。

进一步地,进行脱敏处理的方法包括:md5摘要算法。

进一步地,机器学习的方法包括:朴素贝叶斯。

进一步地,将依据识别结果生成的校验值发送至客户端;若客户端接收的校验值表示该客户端不是安卓模拟器,则执行对应的逻辑;若客户端接收的校验值表示该客户端是安卓模拟器,则执行app正常的逻辑代码。

一种基于用户信息的安卓模拟器识别系统,包括:

客户端,用以通过在app中嵌入的设备指纹sdk,得到该客户端的用户设备信息;将用户设备信息发送至服务端;

服务端,用以收集客户端的用户设备信息;根据用户设备信息,构建m维的特征向量,其中m为属性的数量;将所述特征向量输入至安卓模拟器识别模型,获取识别结果;

其中,通过以下步骤得到所述安卓模拟器识别模型:

a)获取若干样本用户设备信息;

b)根据若干样本用户设备信息,构建若干m维的样本特征向量,

c)依据m维的样本特征向量进行机器学习,得到所述安卓模拟器识别模型。

与现有的安卓模拟器识别方法相比,本发明具有以下几点优势:

1、收集用户设备信息和进行指纹生成的时间的单位为毫秒级,后端服务器进行朴素贝叶斯模型的验证所需时间也是毫秒级。所以在网络环境良好的情况下,检测过程不会让用户察觉,可以在不影响用户体验的同时,有效检测出安卓模拟器。

2、本发明所提及的设备信息完全不会泄露用户的个人信息,保证了用户个人信息安全。

3、本发明采集的数据不需要任何用户的授权,且本文提到的方法在收集了大量的数据之后训练出的朴素贝叶斯的模型可以有效抵抗关键属性的修改来绕过的方法。

本发明的目的是为了能够在零权限的基础上鉴别安卓模拟器,有效对抗黑色产业的网络欺骗,用对应的app进行ddos攻击等。本发明的效果在于:精心选择了对应的设备的属性,并且在零权限的基础上获取这些属性。通过md5算法来对敏感数据进行脱敏处理,并且将数据发送到后端服务器进行判断。后端服务器采用了基于朴素贝叶斯的机器学习算法判断结果,并将结果返回给客户端,客户端根据结果采取对应的措施,从而有效打击了使用安卓模拟器的黑色产业。

附图说明

图1是本发明一实施例中基于用户信息的安卓模拟器识别系统的总括流程示意图。

图2是本发明一实施例中嵌入app中的sdk构成示意图。

图3是本发明一实施例中后端服务器构成示意图。

图4是本发明一实施例中系统建立和总括流程图。

图5是本发明一实施例中设备信息收集模块示意图。

图6是本发明一实施例中指纹生成模块示意图。

图7是本发明一实施例中指纹识别模块示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的目的、特征和优点能够更加明显易懂,下面结合附图和事例对本发明中技术核心作进一步详细的说明。

本发明的安卓模拟器识别方法及系统,包括以下步骤:

1)在对应的app中嵌入设备指纹收集sdk代码。相关的代码包括设备信息收集模块、指纹生成模块、数据传输模块、结果校验模块。

2)在服务器中启用对应的后端系统,后端系统包括数据传输模块、指纹识别模块。

3)当用户使用对应的app的时候,该app会自动调用相关的代码,执行对应的代码进行检测。

4)设备指纹收集sdk会收集用户所使用设备的各种信息,包括用户设备的设置信息、用户设备的基础硬件信息和用户设备的操作系统信息。将收集到的数据进行序列化,并且通过数据传输模块发送到对应的服务器后端系统中。

5)服务器接收序列化的数据后,将该数据输入到对应的朴素贝叶斯方法训练得到的模型中,判断其是否是模拟器。如果朴素贝叶斯的判定结果是模拟器,则将结果发送回客户端的结果校验模块;如果朴素贝叶斯模型判定结果不是模拟器,则发送正常的数据给客户端。

6)客户端接收对应的结果,如果发现结果是模拟器,则退出app(或者执行其他指定的操作),然后释放对应的资源。如果结果是真实设备,则接受来自服务器端的数据,进行对应的操作。

本发明的安卓模拟器识别系统,包括:

——设备信息收集模块;

——指纹生成模块;

——数据传输模块;

——指纹识别模块;

——结果校验模块;

1、设备信息收集模块。部署在用户安装的app中,用来获取用户设备的信息。通过精心选取的属性,能够在不需要任何的权限下快速获取用户的设备信息,且该设备信息收集模块并不会上传任何涉及用户隐私的属性值。

2、指纹生成模块。部署在用户安装的app上,用于将设备信息收集模块收集到的信息进行处理,并且生成对应的指纹信息。本系统为了保证用户的隐私安全和减少用户使用的网络流量,对包含个人信息的内容进行哈希处理,即使用md5算法计算了对应信息的摘要,并将生成的摘要发送到服务器端进行比对。

3、数据传输模块,用以客户端与服务端之间数据的传输。在app端(即客户端),数据传输模块传递json格式的数值对,包含了属性名与对应的属性值(敏感信息使用摘要值进行代替),可表示为

{“属性名1”:“属性值1”

“属性名2”:“属性值2”(如果是敏感信息用对应的md5值代替)

…}。在服务端,数据传输模块传递json格式的属性校验结果,校验结果有true和false两类属性,true表示校验结果是模拟器,false表示校验结果是真实设备。

4、指纹识别模块,部署在后端服务器上,校验设备的指纹用以判断其是否是模拟器。指纹识别模块在接受到来自客户端的指纹时,将使用训练好的朴素贝叶斯模型来判断对应的指纹数据是否是模拟器设备。如果判定结果是模拟器,则将结果标记为“true”,否则就认为是真实设备,标记校验结果为“false”。

5、结果校验模块,部署在用户安装的app中,用以接收后端服务器发送回来的结果,如果发现鉴别结果是安卓模拟器,那么该模块会直接退出当前的app(或者根据app要求执行其他操作);如果鉴别结果是真实的安卓设备,那么就调用app正常的处理逻辑处理后端服务器发来的响应。

具体来说,在本发明中,设计了一套可靠而有效的基于用户信息的安卓模拟器识别系统,包括如下:

如图1所示,针对基于用户信息的安卓模拟器识别系统的总括流程示意图。系统分为客户端与服务端两个部分,对于客户端,需要在app中嵌入相应的sdk;对于服务端,需要在后端服务器中安装对应的判别系统。当用户在打开客户端时,sdk中的代码会自动运行,收集用户设备的信息形成指纹并发送给服务器,在服务端进行校验。校验完毕后,后端服务器把结果发回给客户端,客户端根据结果执行相应的代码。

如图2所示,客户端sdk包括设备信息收集模块、指纹生成模块、数据传输模块和结果校验模块。

如图3所示,服务端包括指纹识别模块、数据传输模块。

如图4所示,基于用户信息的安卓模拟器识别系统建立和总括流程图,包括:

步骤100,当用户打开嵌入了sdk的app的时候,app中嵌入的sdk会自动执行,通过访问对应类的成员变量、执行系统命令、访问特定文件等方法收集用户的设备信息,信息包括用户设备的设置信息、用户设备的基础硬件信息和用户设备的操作系统信息。

步骤200,通过步骤100中获取到的各种信息,将其中的敏感信息在本地进行脱敏处理,本系统采用的是md5摘要算法来获取敏感信息的摘要信息,该哈希值具有唯一性,并且不存在技术手段能够从摘要信息还原出原始信息。即:

md5(敏感信息)=93d27c6a0f1c340434a75fe00fb16079

将属性名与对应的属性值(如果是敏感信息则为对应的md5值)组成为json格式的数值对:

{“bootcount”:“42”

“wallpaper”:“93d27c6a0f1c340434a75fe00fb16079”

}

步骤300,客户端的数据传输模块将步骤200中生成的数值对传送到服务端,服务端接收该数值对。

步骤400,服务端根据获取的指纹数值对,将其输入到用朴素贝叶斯训练完成的模型中,判断该设备是否是模拟器。如果结果是模拟器,则标记校验结果为“true”;否则标记结果为“false”。将最后的结果封装成json数据格式:

{“result”:“true”}

步骤500,服务端的数据传输模块将步骤400中生成的校验值对传送到客户端,客户端端接收该校验值对。

步骤600,客户端接收到校验值,如果发现是“true”,说明是当前的设备是安卓模拟器,那么就执行对应的逻辑;如果发现是“false”,说明当前的设备是正常设备,那么就执行app正常的逻辑代码。

如图5所示,设备信息收集模块示意图,包括:

步骤110,利用安卓系统中提供的指定类来获取设备的一些基础信息。安卓系统中包含了android.os.build、settings.global、android.provider.settings.system、android.provider.settings.secure等类,可以通过直接访问其下的成员变量来直接获取对应的属性。

步骤120,利用安卓系统提供的runtime.getruntime().exec()方法执行对应的系统命令,并且收集命令执行之后的结果。

步骤130,通过读取安卓系统指定目录下对应的文件内容,可以获取到一些设备信息。

步骤140,将所有属性名和属性值,组合成json格式的数值对。

步骤150,将json数据传递到指纹生成模块。

如图6所示,指纹生成模块示意图,包括:

步骤210,判断相关的属性值是否带有敏感信息。

步骤220,如果相关的属性值携带了敏感信息,那么就使用md5摘要算法进行消息摘要计算,并用计算得到的结果作为属性值;如果相关的属性值没有携带敏感信息,那么就直接使用。

步骤230,将处理完成的数据传递给数据传输模块。

如图7所示,指纹识别模块示意图,包括:

步骤610,获取客户端传递过来的设备指纹信息。

步骤620,利用之前训练的朴素贝叶斯模型进行判定。根据安卓设备的属性构建特征向量x,则特征向量的维度为m,即属性的数量。将类别y的真实值用c表示,考虑到模拟器识别模型为二分类问题,则c的值为1或0。若样本来自模拟器,则y的值为1;若样本来自真实设备,则y的值为0。本发明假设设备的特征之间相互独立,根据全概率公式展开公式,得到:

根据上述公式得知,计算某样本属于类别y的概率,首先需要计算类别y在训练集d上的先验概率p(y=1)与p(y=0),并计算特征向量中的每一个特征xi在每一类上的条件概率p(xi|y=c)。根据统计学计算方法,能够得出在每一类上,独立特征向量对应的条件概率向量,并根据待预测样本s的特征向量x判定其类别st:

步骤630,若相应的设备判定为模拟器,则生成{“result”:“true”},否则生成{“result”:“false”}。

步骤640,将数据传输到数据传输模块。

最后所应说明的是,以上实施案例仅用以说明本发明的技术方案而非限制,尽管使用事例对本发明进行了详细说明,本领域的普通技术人员应当理解,可对本发明的技术方案进行修改或者等价替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

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