一种安卓模拟器检测方法、计算机设备及存储介质与流程

文档序号:18884516发布日期:2019-10-15 20:40阅读:286来源:国知局
一种安卓模拟器检测方法、计算机设备及存储介质与流程

本发明涉及计算机技术领域,尤其涉及一种安卓模拟器检测方法、计算机设备及存储介质。



背景技术:

随着通信技术的发展,安卓模拟器(在电脑上模拟安卓操作系统,并能安装、使用、卸载安卓应用程序的软件,即电脑上能够操作安卓系统)已经广泛应用于社会之中。因为安卓模拟器能够修改各种移动终端配置参数,所以很多游戏玩家通过使用模拟器进行伪造多台终端用户,甚至还可以修改app的数据,达到篡改游戏数据的目的。因此为了保证安卓应用以及游戏的安全性使用者需要得知安卓应用程序的运行位置是在移动终端上,还是在电脑上的安卓模拟器中。

目前,检测安卓应用程序的运行位置的方法是通过java层代码来判断移动终端中是否存在安卓模拟器特有的进程通信通道和imei信息,但是由于安卓模拟器可以修改进程通信信道以及手机的imei信息,所以大大的降低了安卓模拟器的检测准确性。

因此,现有技术有待于进一步的改进。



技术实现要素:

鉴于上述现有技术中的不足之处,本发明的目的在于提供一种安卓模拟器检测方法、计算机设备及存储介质,克服现有技术中通过java层代码来判断移动终端中是否存在安卓模拟器特有的进程通信通道和imei信息检测安卓应用程序的运行位置,由于安卓模拟器可以修改进程通信信道以及手机的imei信息,导致安卓模拟器的检测准确性低的缺陷。

本发明所公开的第一实施例为一种安卓模拟器检测方法,其中,包括以下步骤:

s1、获取安卓应用程序的签名文件,判断所述签名文件下是否存在与安卓模拟器匹配的第一特征信息,若否,则执行步骤s2;若是,则执行步骤s3;

s2、获取安卓系统的系统文件,提取所述系统文件中与所述安卓模拟器匹配的第二特征信息,并计算所述第二特征信息所对应的风险特征值,判断所述风险特征值是否超出预设风险特征阈值,若是,则执行步骤s3;

s3、判定所述安卓应用程序在安卓模拟器上运行。

所述的安卓模拟器检测方法,其中,所述步骤s1之前,还包括:

预先设置用于判定所述安卓应用程序在安卓模拟器上运行的风险特征值,并将所述风险特征值初始化为0。

所述的安卓模拟器检测方法,其中,所述第一特征信息为与所述安卓模拟器所匹配签名文件中含有的具有唯一标识的字符串信息;

所述步骤s1中判断所述签名文件下是否存在与安卓模拟器匹配的第一特征信息的步骤包括:

判断所述安卓应用程序的签名文件中是否含有所述字符串信息。

所述的安卓模拟器检测方法,其中,步骤s2中,所述第二特征信息包括:属性文件信息和cpu类型信息中的一种或两种。

所述的安卓模拟器检测方法,其中,当所述第二特征信息为属性文件信息时,所述步骤s2中获取安卓系统的系统文件,提取所述系统文件中与所述安卓模拟器匹配的第二特征信息的步骤包括:

获取安卓系统的系统文件,判断所述系统文件中的属性文件信息是否与预设的第一模拟器信息相匹配,若是,则提取所述属性文件信息。

所述的安卓模拟器检测方法,其中,当所述第二特征信息为cpu类型信息时,所述步骤s2中获取安卓系统的系统文件,提取所述系统文件中与所述安卓模拟器匹配的第二特征信息的步骤包括:

获取安卓系统的系统文件,判断所述系统文件中的cpu类型信息是否与预设的第二模拟器信息相匹配,若是,则提取所述cpu类型信息。

所述的安卓模拟器检测方法,其中,步骤s2中计算所述第二特征信息所对应的风险特征值的步骤包括:

根据提取出的所述第二特征信息的个数计算所述风险特征值;其中所述风险特征值等于提取出的所述第二特征信息的个数。

所述的安卓模拟器检测方法,其中,所述根据提取出的所述第二特征信息的个数计算所述风险特征值的步骤之后,还包括:

判断安卓系统下的应用程序个数是否超过预设的应用程序个数阈值,若是,则将所述风险特征值加1。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现所述的方法的步骤。

有益效果,本发明提供了一种安卓模拟器检测方法、计算机设备及存储介质,通过获取安卓应用程序的签名文件,判断所述签名文件下是否存在与安卓模拟器匹配的第一特征信息;若否,则获取安卓系统的系统文件,提取所述系统文件中与所述安卓模拟器匹配的第二特征信息,并计算所述第二特征信息所对应的风险特征值,判断所述风险特征值是否超出预设风险特征阈值;若是,则判定所述安卓应用程序在安卓模拟器上运行。本发明所述的方法、计算机设备及存储介质,通过提取安卓系统文件中与安卓模拟器匹配的多个特征信息计算风险特征值,根据风险特征值与预设风险特征阈值比较判断安卓应用程序的运行位置,提高了检测的准确性,能够在用户使用安卓应用程序时,保护用户的财产安全。

附图说明

图1是本发明所提供的安卓模拟器检测方法的较佳实施例的流程图;

图2是本发明所提供的安卓模拟器检测方法的具体应用实施例的流程图;

图3是本发明的计算机设备的功能原理图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供的一种安卓模拟器检测方法,可以应用于终端中。其中,终端可以但不限于是各种个人计算机、笔记本电脑、手机、平板电脑、车载电脑和便携式可穿戴设备。本发明的终端采用多核处理器。其中,终端的处理器可以为中央处理器(centralprocessingunit,cpu),图形处理器(graphicsprocessingunit,gpu)、视频处理单元(videoprocessingunit,vpu)等中的至少一种。

为了解决现有技术中通过java层代码来判断移动终端中是否存在安卓模拟器特有的进程通信通道和imei信息检测安卓应用程序的运行位置,由于安卓模拟器可以修改进程通信信道以及手机的imei信息,导致安卓模拟器的检测准确性低的问题,本发明提供了一种安卓模拟器检测方法。

请参照图1,图1是本发明提供的一种安卓模拟器检测方法的较佳实施例的流程图。

在实施例一中,所述安卓模拟器检测方法有三个步骤:

s1、获取安卓应用程序的签名文件,判断所述签名文件下是否存在与安卓模拟器匹配的第一特征信息,若否,则执行步骤s2;若是,则执行步骤s3。

现有技术中安卓应用程序在模拟器上运行时,所述安卓应用程序的签名文件下一般会含有与安卓模拟器相匹配的信息。因此本实施例中在判断安卓应用程序是否在模拟器上运行时会首先获取安卓应用程序的签名文件,获取安卓应用程序的签名文件的方法包括使用java自带的api获取或者使用系统隐藏的api进行获取。优选地,本实施例中使用java自带的api如android.os.build.fingerprint获取安卓应用程序的签名文件,判断所述签名文件下是否存在与安卓模拟器匹配的第一特征信息。

在一具体实施例中,所述第一特征信息为与所述安卓模拟器所匹配签名文件中含有的具有唯一标识的字符串信息,所述字符串信息包括generic、keys、sdk和xbox中的一种或多种。只要在模拟器中运行的安卓应用程序,其签名文件中含有带有generic的字符串,表示自动生成被模拟的数据,sdk和xbox表示安卓模拟器的内核是由xbos模拟的,因此,当安卓应用程序的签名文件含有带有generic、keys、sdk或xbox的字符串信息,则代表所述安卓应用程序在安卓模拟器中运行。但由于安卓模拟器能够修改各种移动终端配置参数,为了防止安卓模拟器篡改安卓应用程序下的签名文件,因此本实施例中判断所述签名文件下不存在与安卓模拟器匹配的第一特征信息后,还进行后续检测。

下面回到图1,实施例1中步骤s1之后还包括步骤:

s2、获取安卓系统的系统文件,提取所述系统文件中与所述安卓模拟器匹配的第二特征信息,并计算所述第二特征信息所对应的风险特征值,判断所述风险特征值是否超出预设风险特征阈值,若是,则执行步骤s3。

为了进一步确定所述安卓应用程序是否在安卓模拟器中运行,本实施例中进一步获取运行所述安卓应用程序的安卓系统的系统文件,提取所述系统文件中与所述安卓模拟器匹配的第二特征信息。优选地,所述第二特征信息包括属性文件信息和cpu类型信息中的一种或两种。

具体实施时,当所述第二特征信息为属性文件信息时,需要获取所述安卓系统的属性文件信息,判断所述安卓系统的属性文件信息是否与所述安卓模拟器相匹配,若是,则将所述属性文件信息提取出来。由于读取属性文件信息的方法是私有的,不提供公开api,因此本实施例中调用指定class类利用java反射机制对属性文件信息进行暴力反射加载获得所述属性文件信息。具体地,java反射机制是在运动状态下,对于任意一个类,都能够知道这个类的所以属性和方法,要想解剖一个类,必须先要获取到该类的字节码文件对象,获取class文件对象的方法包括object类的getclass()方法、静态属性class、class类中静态方法forname()等。优选地,本实施例中通过反射获取无参构造方法并使用getdeclaremethods()获取属性文件信息。

具体实施时,所述属性文件信息包括基带(baseband)信息、渠道(flavor)信息、主板(board)信息、平台(platform)信息和硬件(hardware)信息等。当获取到这些属性文件信息后,需要依次判断基带(baseband)信息、渠道(flavor)信息、主板(board)信息、平台(platform)信息和硬件(hardware)信息是否与第一模拟器信息相匹配,若匹配则将匹配的属性文件信息提取出来。例如:首先判断属性文件信息中的基带(baseband)信息是否与第一模拟器信息相匹配,若是,则提取基带(baseband)信息;再判断渠道(flavor)信息是否与第一模拟器信息相匹配,若否,则进一步判断主板(board)信息是否与第一模拟器信息相匹配,依次类推,将所述属性文件信息中与第一模拟器信息相匹配的所有子信息项提取出来。

具体实施时,本实施例中还预先设置了用于判断是否提取属性文件信息的第一模拟器信息,所述第一模拟器信息包括android_x86或者vbox。android_x86即在intel硬件基础上模拟和运行安卓应用程序的平台,当一个安卓应用程序运行在包含android_x86属性文件信息的安卓系统上时,则判定该安卓应用程序运行在安卓模拟器上的风险较大。vbox是一种开源虚拟机,当一个安卓应用程序运行在包含vbox属性文件信息的安卓系统上时,则判定该安卓应用程序运行在安卓模拟器上的风险较大。

具体实施时,由于安卓模拟器可能模拟真机的属性文件信息,为了增加模拟器检测的准确性,本实施例中在对系统文件中的属性文件信息进行判定后,还进一步获取系统文件中的cpu类型信息,判断所述cpu类型信息是否与预设的第二模拟器信息相匹配,若是,则提取所述cpu类型信息。

具体地,本实施例中通过安卓系统的内建命令(shell命令)读取proc目录下的cpuinfo文件获取cpu类型信息。proc目录是一种内核和内核模块用来向进程(process)发送消息的机制,可以让用户能够和内核内部数据结构进行交互,获取有关进程状态信息等。proc目录下的文件包括/proc/cpuinfo-cpu信息(型号,家族,缓存大小等);/proc/meminfo-物理内存、交换空间等的信息;/proc/mounts-已加载的文件系统的列表等。本实施例中通过读取proc目录下的cpuinfo文件可以获取安卓系统的cpu类型信息。

进一步地,安卓系统的shell命令可以访问数据库、记录无线通讯日志,删除应用,使用一些linux命令,如ls//查看目录;date//打印或设置当前系统时间;cat/proc/meminfo//查看内存信息;cat/proc/cpuinfo//查看cpu信息等,因此本实施例中通过安卓系统的shell命令可以读取proc目录下的cpuinfo文件获取安卓系统的cpu类型信息。安卓系统执行外建命令时不但会触发磁盘i/o,还需要fork出一个单独的进程来执行,执行完成后再推出,而执行内建命令相当于调用当前shell进程的一个函数,安卓系统的内建命令(shell命令)相对于安卓系统的外建命令执行速度更快。

具体实施时,本实施例中还预先设置了用于判断是否提取cpu类型信息的第二模拟器信息,所述第二模拟器信息包括x86或dalvik.vm。市场上的pc机即桌面机常使用因特尔处理器,其属于x86架构,而手机则绝大部分属于arm架构,当一个安卓应用程序运行在包含x86的cpu类型信息的安卓系统上时,则判定该安卓应用程序运行在安卓模拟器上的风险较大。dalvik.vm是在安卓系统上运行安卓程序的虚拟机,当一个安卓应用程序运行在包含dalvik.vm的cpu类型信息的安卓系统上时,则判定该安卓应用程序运行在安卓模拟器上的风险较大。

具体实施时,为了判定所述安卓应用程序在安卓模拟器中运行的概率,本实施例中会预先设置一用于判定所述安卓应用程序在安卓模拟器上运行的风险特征值,并将所述风险特征值初始化为0。提取出与第一模拟器信息相匹配的属性文件信息和与第二模拟器信息相匹配的cpu类型信息后,根据提取出的属性文件信息和cpu类型信息的个数计算所述风险特征值。具体的计算方法为将提取出的属性文件信息和cpu类型信息的个数作为风险特征值。例如前述步骤中提到属性文件信息包括基带(baseband)信息、渠道(flavor)信息、主板(board)信息、平台(platform)信息和硬件(hardware)信息等5个子信息项,当提取出的与第一模拟器信息相匹配的子信息项包括基带(baseband)信息、渠道(flavor)信息、主板(board)信息,且提取出cpu类型信息时,则可确定提取出的属性文件信息和cpu类型信息的个数为4,则计算所述风险特征值也为4。

具体实施时,本实施例还预先设置了一风险特征阈值,当判断风险特征值大于风险特征阈值时,则判定安卓应用程序在安卓模拟器上运行,否则判定安卓应用程序不在安卓模拟器上运行。所述风险特征阈值可以根据用户需要自行设定,如设定1、2、3、4或5等。优选地,本实施例中设定所述风险特征阈值为3或4,如上述步骤中计算出的风险特征值为4,则若预设风险特征阈值为3,则判定安卓应用程序在模拟器上运行,若预设风险特征阈值为4,则判定安卓应用程序不在安卓模拟器上运行。

进一步地,安卓模拟器上的应用程序数量一般较少,而真机的应用程序一般较多。为了提高检测的准确性,本实施例中在提取出与模拟器信息相匹配的属性文件信息和cpu类型信息,并根据提取出的属性文件信息和cpu类型信息的个数计算出风险特征值后,还根据安卓系统中应用程序个数对安卓应用程序是否在安卓模拟器上运行进行进一步判定。本实施例中设定了一应用程序个数阈值,当安卓系统下的应用程序个数超过预设的应用程序个数阈值时,则将风险特征值加1;否则,风险特征值不变。最后根据风险特征值是否超过风险特征阈值判定应用程序是否在安卓模拟器中运行。例如,如前述步骤中所述根据提取出的属性文件信息和cpu类型信息的个数计算出所述风险特征值为4,假设风险特征阈值设定为4,若安卓系统下的应用程序个数超过预设的应用程序个数阈值,则将风险特征值加1由4变为5,大于预设的风险特征阈值4,判定应用程序在安卓模拟器中运行;反之,若安卓系统下的应用程序个数没有超过预设的应用程序个数阈值,则风险特征值不变仍然为4,没有超过预设的风险特征阈值,则判定应用程序不在安卓模拟器中运行。由于安卓模拟器中的应用程序的数量一般不会超过5个,优选地,本实施例中设定所述应用程序个数阈值为5。

下面回到图1,实施例1中步骤s2之后还包括步骤:

s3、判定所述安卓应用程序在安卓模拟器上运行。

具体实施时,若步骤s1中判定签名文件下存在于安卓模拟器匹配的第一特征信息,则判定安卓应用程序在安卓模拟器上运行。否则,进一步判定系统文件下的属性文件信息和cpu类型信息是否与预设的模拟器信息匹配,根据提取出的与安卓模拟器匹配的属性文件信息和cpu类型信息个数计算风险特征值,若计算出的风险特征值大于预设的风险特征阈值,则判定安卓应用程序在安卓模拟器上运行;否则,判定应用程序未在安卓模拟器上运行。整个判定过程在安卓系统框架下的一个系统组件application类中进行加载,不会干扰应用程序的正常运行,且整个判定过程不是单纯依赖于cpu类型信息或者签名文件进行判定,而是根据计算出的风险特征值的大小进行判定,避免了安卓模拟器模拟真机的cpu类型信息等造成检测结果准确性差的问题。

为了更好地理解本发明的技术,本发明还提供一种具体的应用实施例,如图2中所示,具体包括如下步骤:

步骤201、获取安卓应用程序的签名文件;

步骤202、判断签名文件下是否存在第一特征信息,若是,则执行步骤211;若否,则执行步骤203;

步骤203、获取安卓系统的系统文件;

步骤204、提取系统文件中与第一模拟器信息匹配的属性文件信息;

步骤205、提取系统文件中与第二模拟器信息匹配的cpu类型信息;

步骤206、根据属性文件信息和cpu类型信息计算风险特征值;

步骤207、判断安卓系统下的应用程序个数是否超过应用程序个数阈值,若是,则执行步骤208,若否,则执行步骤209;

步骤208、将风险特征值加1;

步骤209、风险特征值不变;

步骤210、判断风险特征值是否超过风险特征阈值,若是,则执行步骤211,若否,则执行步骤212;

步骤211、判定安卓应用程序在模拟器上运行;

步骤212、判定安卓应用程序不在模拟器上运行。

实施例2

基于上述实施例,本发明还提供了一种计算机设备,其原理框图可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和温度传感器。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种安卓模拟器检测方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的温度传感器是预先在计算机设备内部设置,用于检测内部设备的当前运行温度。

本领域技术人员可以理解,图3中示出的原理框图,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所述系统应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时至少可以实现以下步骤:

s1、获取安卓应用程序的签名文件,判断所述签名文件下是否存在与安卓模拟器匹配的第一特征信息,若否,则执行步骤s2;若是,则执行步骤s3;

s2、获取安卓系统的系统文件,提取所述系统文件中与所述安卓模拟器匹配的第二特征信息,并计算所述第二特征信息所对应的风险特征值,判断所述风险特征值是否超出预设风险特征阈值,若是,则执行步骤s3;

s3、判定所述安卓应用程序在安卓模拟器上运行。

在其中的一个实施例中,该处理器执行计算机程序时还可以实现:预先设置用于判定所述安卓应用程序在安卓模拟器上运行的风险特征值,并将所述风险特征值初始化为0。

在其中的一个实施例中,该处理器执行计算机程序时还可以实现:判断所述安卓应用程序的签名文件中是否含有所述字符串信息,若是,则判定安卓应用程序在安卓模拟器上运行。

在其中的一个实施例中,该处理器执行计算机程序时还可以实现:当所述第二特征信息为属性文件信息时,获取安卓系统的系统文件,判断所述系统文件中的属性文件信息是否与预设的第一模拟器信息相匹配,若是,则提取所述属性文件信息。

在其中的一个实施例中,该处理器执行计算机程序时还可以实现:当所述第二特征信息为cpu类型信息时,获取安卓系统的系统文件,判断所述系统文件中的cpu类型信息是否与预设的第二模拟器信息相匹配,若是,则提取所述cpu类型信息。

在其中的一个实施例中,该处理器执行计算机程序时还可以实现:根据提取出的所述第二特征信息的个数计算所述风险特征值;其中所述风险特征值等于提取出的所述第二特征信息的个数。

在其中的一个实施例中,该处理器执行计算机程序时还可以实现:判断安卓系统下的应用程序个数是否超过预设的应用程序个数阈值,若是,则将所述风险特征值加1。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

综上所述,本发明提供一种安卓模拟器检测方法、计算机设备及存储介质,所述方法包括:获取安卓应用程序的签名文件,判断所述签名文件下是否存在与安卓模拟器匹配的第一特征信息;若否,则获取安卓系统的系统文件,提取所述系统文件中与所述安卓模拟器匹配的第二特征信息,并计算所述第二特征信息所对应的风险特征值,判断所述风险特征值是否超出预设风险特征阈值;若是,则判定所述安卓应用程序在安卓模拟器上运行。本发明首先根据安卓应用程序中的签名文件判定安卓应用程序是否在安卓模拟器上运行;若否,则进一步根据提取出的系统文件中与安卓模拟器匹配的第二特征信息计算风险特征值,根据计算出的风险特征值判定安卓应用程序是否在模拟器中运行,避免了安卓模拟器模拟真机的cpu类型信息等造成检测结果准确性差的问题,显著提高了检测准确性,进而在用户使用安卓应用程序时,保证了用户的财产安全。

应当理解的是,本发明的系统应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

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