应用程序的运行识别方法、装置,终端设备及存储介质与流程

文档序号:21409294发布日期:2020-07-07 14:44阅读:199来源:国知局
应用程序的运行识别方法、装置,终端设备及存储介质与流程

本发明涉及软件测试技术领域,尤其涉及应用程序的运行识别方法、装置,终端设备及存储介质。



背景技术:

安卓(android)系统一种基于linux的自由及开放源代码的操作系统,主要使用于移动终端设备。应用程序(application,app)可以安装在移动终端设备上,并通过安卓系统运行。

现有的安卓系统可以在多种环境中运行,如手机、家电或者pc模拟器等。然而,这些可运行安卓系统的环境并不都是安全的,若用户通过不安全环境中的安卓系统运行应用程序,会给用户数据带来安全隐患。



技术实现要素:

为解决上述技术问题,本发明实施例期望提供一种应用程序的运行识别方法、装置,终端设备及存储介质,能够识别应用程序运行的硬件环境和软件环境,从而判断当前应用程序运行的环境是否安全,以提高用户数据的安全性。

本发明的技术方案是这样实现的:

第一方面,本发明实施例提供了一种应用程序的运行识别方法,包括:

确定应用程序运行的硬件环境,其中,应用程序为当前正在运行的程序,硬件环境为终端设备环境或者模拟器环境;

确定应用程序运行的软件环境。

可选的,确定应用程序运行的硬件环境,具体包括:

若检测到管道文件,则确定应用程序运行在模拟器环境;或者,

在设置bkpt断点指令后,若检测到异常信息,则确定应用程序运行在模拟器环境;或者,

根据硬件信息确定应用程序运行在终端设备环境,其中,硬件信息包括终端设备标识码、电话号码、网卡、传感器中的至少一种。

可选的,确定应用程序运行的软件环境,具体包括:

利用预设的检测方法,确定应用程序运行的软件环境,其中,预设的检测方法包括debug调试检测方法、monkey检测方法、ptrace检测方法、手势/路径操作检测方法中的至少一种。

可选的,方法还包括:

根据硬件环境和软件环境,对应用程序的数据进行处理。

第二方面,本发明实施例提供了一种应用程序的运行识别装置,包括:确定模块;

确定模块,用于确定应用程序运行的硬件环境,其中,应用程序为当前正在运行的程序,硬件环境为终端设备环境或者模拟器环境;以及确定应用程序运行的软件环境。

可选的,确定模块,具体用于若检测到管道文件,则确定应用程序运行在模拟器环境;或者,在设置bkpt断点指令后,若检测到异常信息,则确定应用程序运行在模拟器环境;或者,根据硬件信息确定应用程序运行在终端设备环境,其中,硬件信息包括终端设备标识码、电话号码、网卡、传感器中的至少一种。

可选的,确定模块,具体用于利用预设的检测方法,确定应用程序运行的软件环境,其中,预设的检测方法包括debug调试检测方法、monkey检测方法、ptrace检测方法、手势/路径操作检测方法中的至少一种。

可选的,还包括:处理模块;

处理模块,用于根据硬件环境和软件环境,对应用程序的数据进行处理。

第三方面,本发明实施例提供了一种终端设备,包括:

一个或多个处理器;

存储器,用于存储一个或多个程序;

当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如本发明实施例第一方面任一的应用程序的运行识别方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如本发明实施例第一方面任一的应用程序的运行识别方法。

本发明实施例提供了一种应用程序的运行识别方法、装置,终端设备及存储介质。通过识别应用程序运行的硬件环境和软件环境,从而判断当前应用程序运行的环境是否安全,以提高用户数据的安全性。

附图说明

图1为本发明实施例提供的一种应用程序的运行识别方法的流程示意图;

图2为本发明实施例提供的另一种应用程序的运行识别方法的流程示意图;

图3为本发明实施例提供的一种应用程序的运行识别装置的结构示意图;

图4为本发明实施例提供的另一种应用程序的运行识别装置的结构示意图;

图5为本发明实施例提供的一种终端设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

需要说明的是,本发明中术语“系统”和“网络”在本文中常被可互换使用。本发明实施例中提到的“和/或”是指”包括一个或更多个相关所列项目的任何和所有组合。本发明的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于限定特定顺序。

还需要说明是,本发明下述各个实施例可以单独执行,各个实施例之间也可以相互结合执行,本发明实施例对此不作具体限制。

下面,对应用程序的运行识别方法、装置及其技术效果进行详细描述。

图1为本发明实施例提供的一种应用程序的运行识别方法的流程示意图,本发明实施例公开的方法适用于终端设备,具体的,可以由终端设备上装载的应用程序实现,如图1所示,该方法可以包括下述步骤:

s101、应用程序确定应用程序运行的硬件环境,其中,应用程序为当前正在运行的程序,硬件环境为终端设备环境或者模拟器环境。

可以理解的,本发明实施例中的终端设备可以是智能终端手机,也可以是笔记本电脑或者平板电脑,还可以是虚拟机设备等任意可以运行应用程序的设备,或者能控制其他设备运行应用程序的终端设备。

应用程序运行的硬件环境主要可以分为两类:模拟器环境和终端设备环境,其中,模拟器又可以成为计算机模拟,是一种利用计算机(即终端设备)进行模拟的方法,是指主要透过软件模拟硬件处理器的功能和指令系统的程序使计算机或者其他多媒体平台(掌上电脑,手机)能够运行其他平台上的软件。

可选的,模拟器环境可以包括虚拟机环境,云服务器环境等;终端设备环境可以包括手机环境、智能电视环境、嵌入式平台环境、家电环境等;本发明实施例对此不作具体限制。

具体的,应用程序确定应用程序运行的硬件环境的方法至少包括如下三种方法中的任意一种:

方法一、若应用程序检测到管道文件,则确定应用程序运行在模拟器环境。

上述方法一适用于qemu的检测方法,其中,qemu是一套以gnu通用公共许可协议(generalpubliclicense,gpl)许可证分发源码的模拟处理器。其具有两种主要运作模式:usermode模拟模式,亦即是用户模式;以及systemmode模拟模式,亦即是系统模式。

通常搭载了qemu的应用程序会存在两个管道文件,即("/dev/socket/qemud"和"/dev/qemu_pipe"),应用程序可以通过检测是否存在上述两个管道文件来判断应用程序是否搭载了qemu。当应用程序检测到管道文件,则可以确定应用程序运行在模拟器环境。

方法二、在设置bkpt断点指令后,若应用程序检测到异常信息,则确定应用程序运行在模拟器环境。

上述方法二适用于risc微处理器(advancedriscmachines,arm)的断点检测方法。

通常,模拟器环境会因为arm的bkpt断点指令产生异常信息。因此,在设置bkpt断点指令后,若应用程序检测到异常信息,则确定应用程序运行在模拟器环境。

方法三、应用程序根据硬件信息确定应用程序运行在终端设备环境,其中,硬件信息包括终端设备标识码、电话号码、网卡、传感器中的至少一种。

其中,终端设备标识码可以为设备id(deviceid)、国际移动设备身份码(internationalmobileequipmentidentity,imei)、ios独有的广告标识符(identifierforadvertising,idfa)、唯一设备标识码(uniquedeviceidentifier,udid)、通用唯一识别码(universallyuniqueidentifier,uuid)、国际移动用户识别码(internationalmobilesubscriberidentificationnumber,imsi)中的任意一个或者多个的组合。

示例性的,应用程序可以根据应用程序编程接口(applicationprogramminginterface,api)查询终端设备的硬件信息,通过硬件信息确定应用程序运行在终端设备环境。如当硬件信息包括电话号码,则可以确定应用程序运行在手机环境。

可选的,当终端设备为手机时,手机内可以存储有本地彩虹表,其中记载有硬件信息与厂商的对应关系。具体的,本地彩虹表是在应用程序运行时,应用程序通过在webview中调用gpu绘制一个view来实现,对这个view取hash可以得到一个唯一的字符串,这个字符串在不同的终端设备上是不一致的,可通过保存这个字符串作为彩虹表,这样当程序运行时和彩虹表进行对比,就可以快速的得到终端设备的信息。如此,可以直接通过硬件gpu获取终端设备的信息,很难在系统层面做假,是最真实的判断方式。

s102、应用程序确定应用程序运行的软件环境。

具体的,应用程序确定应用程序运行的软件环境的方法可以包括:应用程序利用预设的检测方法,确定应用程序运行的软件环境,其中,预设的检测方法包括debug调试检测方法、monkey检测方法、ptrace检测方法、手势/路径操作检测方法中的至少一种。

对于debug调试检测方法,应用程序中可以设置有调试桥(androiddebugbridge,adb)开关,由于模拟器的adb通常是反射到ip地址为0.0.0.0,因此应用程序可以通过读取“/proc/net/tcp”文件信息来查看应用程序是否开启了adb。

对于monkey检测方法,应用程序可以通过activitymanagerisuseramonkey函数来确定应用程序运行的软件环境。

对于ptrace检测方法,应用程序通过检查/proc/self/status的tracerpid项,由于该项在没有跟踪的时候默认为0,当有程序在跟踪时会修改为对应的pid。因此如果tracerpid不等于0,那么就可以认为应用程序运行在模拟器环境。

对于手势/路径操作检测方法,应用程序可以获取用户触发的手势/路径操作,根据手势/路径操作,确定应用程序运行的软件环境。

其中,用户可以通过外部输入设备(inputdevice)或者触摸终端设备的显示屏等途径做出触控操作。

在本发明上述实施例的基础上,图2为本发明实施例提供的另一种应用程序的运行识别方法的流程示意图,如图2所示,除包括上述实施例中的步骤s101和步骤s102外,该方法还包括:

s103、应用程序根据硬件环境和软件环境,对应用程序的数据进行处理。

示例性的,应用程序对应用程序的数据进行处理至少可以包括以下三种场景中的任意一种:

场景一、当应用程序运行在终端设备环境(如手机),且软件环境安全,则应用程序可以相应用户输入的各种请求指令。

场景二、当应用程序运行在终端设备环境(如智能电视),且软件环境安全,则应用程序可以对应用程序的数据进行调整,例如调整电视的分辨率,图像长宽比等。

场景三、当应用程序运行在模拟器环境(如虚拟机),且软件环境不安全,则应用程序可以保住数据沙箱的安全。

另外,本发明实施例提供的应用程序的运行识别方法可以应用于android系统和/或ios系统,并适配上述系统的所有系统版本,以提高该方法的适配性。

本发明实施例提供了一种应用程序的运行识别方法,通过识别应用程序运行的硬件环境和软件环境,从而判断当前应用程序运行的环境是否安全,以提高用户数据的安全性。

图3为本发明实施例提供的一种应用程序的运行识别装置的结构示意图,具体的该装置可以配置于终端设备中,包括:确定模块10。

确定模块10,用于确定应用程序运行的硬件环境,其中,应用程序为当前正在运行的程序,硬件环境为终端设备环境或者模拟器环境;以及确定应用程序运行的软件环境。

确定模块10,具体用于若检测到管道文件,则确定应用程序运行在模拟器环境;或者,在设置bkpt断点指令后,若检测到异常信息,则确定应用程序运行在模拟器环境;或者,根据硬件信息确定应用程序运行在终端设备环境,其中,硬件信息包括终端设备标识码、电话号码、网卡、传感器中的至少一种。

确定模块10,具体用于利用预设的检测方法,确定应用程序运行的软件环境,其中,预设的检测方法包括debug调试检测方法、monkey检测方法、ptrace检测方法、手势/路径操作检测方法中的至少一种。

可选的,结合图3,图4为本发明实施例提供的另一种应用程序的运行识别装置的结构示意图,还包括:处理模块11。

处理模块11,用于根据硬件环境和软件环境,对应用程序的数据进行处理。

本发明实施例提供的以上应用程序的运行识别装置,可执行本发明方法实施例所提供的应用程序的运行识别方法中应用程序所执行的步骤,具备执行方法相应的功能模块和有益效果。

图5为本发明实施例提供的一种终端设备的结构示意图,如图5所示,该终端设备包括处理器20、存储器21、输入装置22和输出装置23;终端设备中处理器20的数量可以是一个或多个,图5中以一个处理器20为例;终端设备中的处理器20、存储器21、输入装置22和输出装置23可以通过总线或其他方式连接,图5中以通过总线连接为例。总线表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。

存储器21作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的应用程序的运行识别方法对应的程序指令/模块。处理器20通过运行存储在存储器21中的软件程序、指令以及模块,从而执行终端设备的各种功能应用以及数据处理,即实现上述的应用程序的运行识别方法。

存储器21可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器21可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器21可进一步包括相对于处理器20远程设置的存储器,这些远程存储器可以通过网络连接至终端设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置22可用于接收输入的数字或字符信息,以及产生与终端设备的用户设置以及功能控制有关的键信号输入。输出装置23可包括显示屏等显示设备。

本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例所提供的一种应用程序的运行识别方法,该方法具体可以但不限于上述各方法实施例所公开的内容。

本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本公开操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++、ruby、go,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

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