CN111158935A - 一种应用程序检测方法、装置、计算机设备及存储介质 - Google Patents

一种应用程序检测方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN111158935A
CN111158935A CN201911413474.8A CN201911413474A CN111158935A CN 111158935 A CN111158935 A CN 111158935A CN 201911413474 A CN201911413474 A CN 201911413474A CN 111158935 A CN111158935 A CN 111158935A
Authority
CN
China
Prior art keywords
application program
identification code
application
local identification
terminal
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.)
Granted
Application number
CN201911413474.8A
Other languages
English (en)
Other versions
CN111158935B (zh
Inventor
孙学伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN201911413474.8A priority Critical patent/CN111158935B/zh
Publication of CN111158935A publication Critical patent/CN111158935A/zh
Application granted granted Critical
Publication of CN111158935B publication Critical patent/CN111158935B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例提出的一种应用程序检测方法、装置、计算机设备及存储介质,应用于安装有第一应用程序和第二应用程序的终端上,第一应用程序和第二应用程序之间预先建立有用于进程间通信的进程间通信链路,在对第一应用程序进行检测时,第一应用程序接收到检测指令获取自身持有的本机识别码,并通过进程间通信链路获取第二应用程序持有的本机识别码,将获取的两个本机识别码进行比较,判断是否一致,若不一致,就确定第一应用程序是被能伪装机型的应用程序启动的分身应用程序。本方案通过终端中的第二应用程序辅助完成对第一应用程序的检测,避免了现有技术中完全通过第一应用程序内部进程进行检测时,多开软件对检测函数进行hook造成的检测失效。

Description

一种应用程序检测方法、装置、计算机设备及存储介质
技术领域
本发明实施例涉及移动终端技术领域,具体涉及一种应用程序检测方法、装置、计算机设备及存储介质。
背景技术
随着互联网技术的飞速发展,用户对于同一系统下运行多个相互独立的应用程序的需求非常强烈,尤其是各种社交应用,已经成为了移动互联网时代下人们必不可少的联络工具。用户在使用这些社交应用时,大多数人都是工作、生活的应用账号分开设置,以便于不被工作影响生活。因此,具有创建分身应用程序的功能的应用程序(下称多开软件)应运而生,多开软件可以通过在同一终端中创建应用程序的分身应用程序来帮助用户在同一个终端上使用多账号在线。例如,通过创建某社交应用程序的分身应用程序,用户可以在一部手机上,同时使用主号或者小号登陆该社交应用程序,主号与小号的使用互不影响,满足了大多数用户工作与生活信息的分开处理需求。
但是,目前很多应用程序供应商不希望自家的应用程序被多开软件多开,例如抢票应用、投票应用等等,若这些应用程序被多开,则会出现一些类似刷票的不公平竞争行为,为了防止这种不公平竞争行为的发生,出现了一些对应用程序进行检测的方法,通过对检测到的分身应用程序进行处理来减少分身应用程序,例如:方法1:通过调用context.GetFiles Dir()函数进行应用程序的数据文件夹的路径检测,若检测到路径异常,则确定存在应用程序为被多开软件创建的分身应用程序,但是,有些多开软件会hook住context.GetFiles Dir()函数,使得被检测的应用程序的路径没有任何异常,从而导致通过调用context.get Files Dir()函数无法检测到被多开软件创建的分身应用程序。方法2:通过proc/self/maps文件对多开软件进行检测,为多开软件包名设置一个黑名单,检测终端的maps文件中是否包含有黑名单中的多开软件包名,如果有,则确定终端中存在多开软件,但对有些多开软件,maps文件中并没有自己的包名,因此无法通过maps文件检测到这些多开软件。方法3:通过获取安装的应用程序的包名进行判断,但多数多开软件会hook获取包名的函数,从而导致这种方式也失效。
综上,现有检测应用程序的方法通常都是在待检测应用进程内部通过各种系统API或进程信息进行检测,而由于被双开的待检测应用的进程是由多开软件创建的,可以说该进程已经不可信,多开软件会通过各种技术方案绕过这些检测,导致现有方案失效。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本发明实施例提供了一种应用程序检测方法。
有鉴于此,第一方面,本发明实施例提供一种应用程序检测方法,应用于安装有第一应用程序和第二应用程序的终端上,所述第一应用程序和所述第二应用程序之间预先建立有用于进程间通信的进程间通信链路,所述方法包括:
所述第一应用程序接收到检测指令时,获取自身持有的本机识别码;
所述第一应用程序通过所述进程间通信链路,获取所述第二应用程序持有的本机识别码;
所述第一应用程序比较自身持有的本机识别码与所述第二应用程序持有的本机识别码是否相同;
若不相同,则确定所述第一应用程序是被能伪装机型的应用程序创建的分身应用程序;
若相同,则确定所述第一应用程序为非分身应用程序。
在一种可能的实现方式中,所述第一应用程序通过下述方式持有本机识别码:
所述第一应用程序调用预设的系统API函数,获取本机识别码,其中,所述系统API函数为用于获取终端的硬件信息的函数;
所述第一应用程序将获取到的所述本机识别码保存到本地,并作为自身持有的本机识别码。
在一种可能的实现方式中,所述第一应用程序通过所述进程间通信链路,获取所述第二应用程序持有的本机识别码,包括:
所述第一应用程序调用所述第二应用程序中预先设置的获取识别码功能,所述获取识别码功能用于向所述第一应用程序提供所述第二应用程序持有的本机识别码;
所述第一应用程序通过所述获取识别码功能获取所述第二应用程序持有的本机识别码。
在一种可能的实现方式中,所述方法还包括:
在所述第一应用程序比较自身持有的本机识别码与所述第二应用程序持有的本机识别码是否相同之前,检测所述第一应用程序是否获取到所述第二应用程序持有的本机识别码;
若没有获取到,则判定所第一应用程序为非分身应用程序;
若获取到,则执行所述第一应用程序比较自身持有的本机识别码与所述第二应用程序持有的本机识别码是否相同的步骤。
在一种可能的实现方式中,所述方法还包括:
所述第一应用程序将检测结果存储至终端;
在所述第一应用程序获取自身持有的本机识别码之前,检测所述终端中是否存储有所述第一应用程序的检测结果;
若所述终端中存储有所述第一应用程序的检测结果,则获取所述终端中存储的所述第一应用程序的检测结果;
若所述终端中没有存储所述第一应用程序的检测结果,则执行所述第一应用程序获取自身持有的本机识别码的步骤。
在一种可能的实现方式中,所述方法还包括:
确定所述第一应用程序是被能伪装机型的应用程序创建的分身应用程序后,执行如下操作中的任意一种或多种:关闭所述第一应用程序的预设功能、关闭所述第一应用程序、结束所述第一应用程序的进程。
第二方面,本发明实施例还提供了一种应用程序检测装置,应用于安装有第一应用程序和第二应用程序的终端上,所述第一应用程序和所述第二应用程序之间预先建立有用于进程间通信的进程间通信链路,所述装置包括:
第一获取模块,用于所述第一应用程序接收到检测指令时,获取自身持有的本机识别码;
第二获取模块,用于所述第一应用程序通过所述进程间通信链路,获取所述第二应用程序持有的本机识别码;
比较模块,用于所述第一应用程序比较自身持有的本机识别码与所述第二应用程序持有的本机识别码是否相同;
第一确定模块,用于若所述第一应用程序比较自身持有的本机识别码与所述第二应用程序持有的本机识别码不相同,则确定所述第一应用程序是被能伪装机型的应用程序创建的分身应用程序;
第二确定模块,用于若所述第一应用程序比较自身持有的本机识别码与所述第二应用程序持有的本机识别码相同,则确定所述第一应用程序为非分身应用程序。
在一种可能的实现方式中,所述第一应用程序通过下述方式持有本机识别码:
所述第一应用程序调用预设的系统API函数,获取本机识别码,其中,所述系统API函数为用于获取终端的硬件信息的函数所述第一应用程序将获取到的所述本机识别码保存到本地,并作为自身持有的本机识别码。
在一种可能的实现方式中,所述第二获取模块,具体用于:
所述第一应用程序调用所述第二应用程序中预先设置的获取识别码接口,所述获取识别码接口用于向所述第一应用程序提供所述第二应用程序持有的本机识别码;
所述第一应用程序通过所述获取识别码接口获取所述第二应用程序持有的本机识别码。
在一种可能的实现方式中,,所述装置还包括:
第一检测模块,具体用于:
在所述第一应用程序比较自身持有的本机识别码与所述第二应用程序持有的本机识别码是否相同之前,检测所述第一应用程序是否获取到所述第二应用程序持有的本机识别码,若没有获取到,则判定所第一应用程序为非分身应用程序,若获取到,则执行所述第一应用程序比较自身持有的本机识别码与所述第二应用程序持有的本机识别码是否相同的步骤。
在一种可能的实现方式中,所述第一应用程序将检测结果存储至终端,所述装置还包括:
第二检测模块,具体用于:
在所述第一应用程序获取自身持有的本机识别码之前,所述第一应用程序检测所述终端中是否存储有所述第一应用程序的检测结果,若所述终端中存储有所述第一应用程序的检测结果,则获取所述终端中存储的所述第一应用程序的检测结果,若所述终端中没有存储所述第一应用程序的应用检测结果,则执行所述第一应用程序获取自身持有的本机识别码的步骤。
在一种可能的实现方式中,所述装置还包括:
处理模块,具体用于:
确定所述第一应用程序是被能伪装机型的应用程序创建的分身应用程序后,执行如下操作中的任意一种或多种:关闭所述第一应用程序的预设功能、关闭所述第一应用程序、结束所述第一应用程序的进程。
第三方面,本发明实施例还提供了一种计算机设备,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的数据处理程序,以实现第一方面所述的应用程序检测方法。
第四方面,本发明实施例还提供了一种存储介质,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现第一方面所述的应用程序检测方法。
相比现有技术,本发明实施例提出的一种应用程序检测方法,应用于安装有第一应用程序和第二应用程序的终端上,第一应用程序和第二应用程序之间预先建立有用于进程间通信的进程间通信链路,在对第一应用程序进行检测时,第一应用程序接收到检测指令获取自身持有的本机识别码,并通过进程间通信链路获取第二应用程序持有的本机识别码,将获取的两个本机识别码进行比较,判断是否一致,若不一致,就确定第一应用程序是被能伪装机型的应用程序启动的分身应用程序。本方案通过终端中的第二应用程序辅助完成对第一应用程序的检测,避免了现有技术中完全通过第一应用程序内部进程进行检测时,多开软件对检测函数进行hook造成的检测失效。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种应用程序检测方法的流程图;
图2为本发明实施例二提供的一种应用程序检测方法的流程图;
图3为本发明实施例提供的一种应用程序检测装置的框图;
图4为本发明实施例提供的一种计算机设备框图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
现有的多开软件通常通过对终端的机型进行伪装,建立一个虚拟系统,使被多开的应用程序运行在虚拟系统中,从而实现在一台终端上同时运行一个应用程序的多个实例。通过多开软件对应用程序进行双开或多开时,有时会为用户的使用提供方便,例如可以使用户在同一台设备同时登录工作账号和生活账号,方便用户同时接收工作和生活中的相关信息;但有的应用程序如果被多开软件双开或多开,则可能会带来一些不利的影响,例如有一些人利用双开软件对投票软件进行双开,这就导致本来只能一人投一票的规则被破坏,导致出现一人可以投两票甚至更多票的刷票行为发生。例如图1所示的一种终端应用界面示意图,在终端的界面中存在两个爱奇艺泡泡app的图标和一个爱奇艺app的图标,这表示爱奇艺泡泡app被多开软件双开了,其中一个爱奇艺泡泡app是运行在多开软件构建的虚拟系统中的分身应用程序,而爱奇艺泡泡app是一款可以进行投票的应用程序,用户可以通过对爱奇艺泡泡app进行双开或多开来刷票,所以为了防止用户通过这种方式进行刷票,本发明提供了一种用于检测应用是否为被多开软件开启的分身应用程序的应用程序检测方法。
本发明提供的应用程序检测方法适用于终端,终端可以以各种形式来实施。例如,本发明中描述的终端可以包括诸如移动电话、智能电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、导航装置等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。终端中安装有应用程序,并设置有用于获取终端识别码的API(应用程序编程接口),安装在终端中的应用程序可以通过调用获取终端识别码的API来获取终端的识别码,其中,终端的识别码是可以表示终端身份的,具有唯一性的识别码,例如识别码可以是终端的IMEI(国际移动设备识别码)、android ID以及mac地址中的任意一个,也可是IMEI、android ID以及mac地址的任意一种组合。
本发明实施例提供的一种应用程序检测方法,该方法适用于终端,所述终端中安装有第一应用程序(即需要进行应用检测的应用程序)和与第一应用程序之间建立有进程间通信链路的第二应用程序,为了保证第一应用程序的检测结果的准确性,第二应用程序优选的为非分身应用程序,优选的,所述第一应用程序和所述第二应用程序属于同一产品矩阵,所述同一产品矩阵可以理解为属于同一家开发公司,例如爱奇艺app和爱奇艺泡泡app两者为同一开发公司开发,所以两者属于同一产品矩阵,再例如腾讯QQ和微信也属于同一产品矩阵。因为本申请涉及到了不同应用程序之间的信息的交互,而不同公司之间信息交互可能存在安全隐患,对应用程序造成影响,因此为了避免不同公司的应用程序之间的相互影响,本申请中的第二应用程序和第一应用程序可以属于同一产品矩阵。
实施例一
图1本发明实施例提供的一种应用程序检测方法的流程图,该方法应用于安装有第一应用程序和第二应用程序的终端上,所述第一应用程序和所述第二应用程序之间预先建立有用于进程间通信的进程间通信链路,如图1所示,以对第一应用程序进行检测为例,该方法包括如下步骤:
S11.所述第一应用程序接收到检测指令时,获取自身持有的本机识别码。
其中,检测指令可以是由终端生成的用于检测第一应用程序是否为分身应用程序的指令。
在一个可能的实现方式中,可以在第一应用程序刚开启时,向第一应用程序发送检测指令。具体的可以通过下述方式来确定是否向第一应用程序发送检测指令:
检测第一应用程序的当前是否为开启状态,若所述第一应用程序当前不是开启状态,则不向所述第一应用程序发送检测指令,若所述第一应用程序当前是开启状态,则检测所述第一应用程序在前一时刻是否为开启状态,若所述第一应用程序在前一时刻为开启状态,则不向所述第一应用程序发送检测指令,若所述第一应用程序在前一时刻不是开启状态,则向所述第一应用程序发送检测指令,其中前一时刻是前几秒,可以根据具体需求设定,例如可以为前1秒或前5秒。
之所以在第一应用程序刚开启时,向第一应用程序发送检测指令,是为了及时确定第一应用程序是否为分身应用程序,如果是分身应用程序的话可以及时的采取一些措施,避免分身应用程序产生的不良影响。
在一个可能的实现方式中,第一应用程序可以通过下述方式持有的本机识别码:
所述第一应用程序在初始化或接收到检测指令时,调用终端中预设的系统API函数,获取本机识别码,其中,所述系统API函数为用于获取终端的硬件信息的函数,该系统API函数可以是预先存储在终端中的,也可以是第一应用程序自身携带的,第一应用程序将获取到的所述本机识别码保存到本地(其中,具体的可以存储到终端中预先设置的用于存储第一应用程序的相关数据的文件夹),并作为自身持有的本机识别码。
在一个可能的实现方式中,第一应用程序在获取本身持有的本机识别码时可以直接去本地查找并调用。
第一应用程序在通过系统API函数获取本机识别码时,通常会有下述两种情况:
情况1:所述第一应用程序是非分身应用程序,则所述第一应用程序通过系统API函数获取到的本机识别就是所述终端的硬件信息,也就是所述终端真正的识别码,因为非分身应用程序是运行在终端的系统上的,所以其获取的本机识别码必然是终端真正的识别码。
情况2:所述第一应用程序是被能伪装机型的应用程序(下称分身软件)创建的分身应用程序,则所述第一应用程序获取到的本机识别码就是由所述能伪装机型的应用程序提供的伪装识别码,也就是错误的识别码,因为分身应用程序是运行在分身软件构建的虚拟系统中的,所以其获取到的本机识别码就是分身软件提供的伪装识别码。
S12.所述第一应用程序通过所述进程间通信链路,获取所述第二应用程序持有的本机识别码。
其中,进程间通信链路与预先建立的可以使第一应用程序和第二应用程序进行进程间通信的链路。
在一个可能的实现方式中,所述进程间通信链路通过下述方式建立:
在第二应用程序中设置获取识别码接口(例如Content Provider,ContentProvider的作用是为不同的应用程序之间的数据共享,提供统一的接口),将ContentProvider的权限设置为第一应用程序可以调用,且可以向第一应用程序发送第二应用程序持有的本机识别码。
在一个可能的实现方式中,所述第一应用程序采用下述方式获取所述第二应用程序持有的本机识别码:
第一应用程序调用第二应用程序中预先设置的获取识别码接口,通过所述获取识别码接口获取所述第二应用程序持有的本机识别码。
在一个可能的实现方式中,第二应用程序通过下述方式持有本机识别码:
第二应用程序调用预设的系统API函数(与第一应用程序调用的系统API函数相同),所述系统API函数可以为预先存储在终端中的,也可以为第二应用程序自身携带的,通过所述系统API函数获取所述终端的硬件信息,将获取的硬件信息存储在本地(其中,具体的可以存储到终端中预先设置的用于存储第二应用程序的相关数据的文件夹),作为第二应用程序持有的本机识别码,由于第二应用程序为非分身应用程序,所以第二应用程序持有的本机识别码为所述终端的真正识别码。
在一个可能的实现方式中,在将第二应用程序获取的本机识别码存储至本地之前,还可以通过只有特定应用程序(例如:第一应用程序和同一产品矩阵内的其他应用程序)知道密钥的加密算法(例如:MD5消息摘要算法)对获取的本机识别码进行加密,进行加密的目的是为了防止非特定应用程序通过获取识别码功能来获取第二应用程序持有的本机识别码。
S13.所述第一应用程序比较自身持有的本机识别码与所述第二应用程序持有的本机识别码是否相同。
因为非分身应用程序和分身应用程序持有的本机识别码是不同的,所以在保证第二应用程序持有的本机识别码是所述终端真正的识别码的情况下,可以通过将自身持有的本机识别码与第二应用程序持有的识别码进行比较,来确定自身持有的本机识别码是否正确。
S14.若不相同,则确定所述第一应用程序是被能伪装机型的应用程序创建的分身应用程序。
如果第一应用程序自身持有的本机识别码与第二应用程序持有的本机识别码不同,则确定自身持有的本机识别码是错误的,也就是错误的识别码。
根据S11描述的情况2可以知道,如果第一应用程序自身持有的本机识别码是错误的,则就可以确定第一应用程序是被分身软件创建的分身应用程序。
S15.若相同,则确定所述第一应用程序为非分身应用程序。
如果第一应用程序自身持有的本机识别码与第二应用程序持有的本机识别码相同,则确定自身持有的本机识别码是正确的,也就是真正的识别码。
根据S11描述的情况1可以知道,如果第一应用程序自身持有的本机识别码是正确的,则就可以确定第一应用程序是非分身应用程序。
本发明实施例提出的一种应用程序检测方法,应用于安装有第一应用程序和第二应用程序的终端上,第一应用程序和第二应用程序之间预先建立有用于进程间通信的进程间通信链路,在对第一应用程序进行检测时,第一应用程序接收到检测指令获取自身持有的本机识别码,并通过进程间通信链路获取第二应用程序持有的本机识别码,将获取的两个本机识别码进行比较,判断是否一致,若不一致,就确定第一应用程序是被能伪装机型的应用程序启动的分身应用程序。本方案通过终端中的第二应用程序辅助完成对第一应用程序的检测,避免了现有技术中完全通过第一应用程序内部进程进行检测时,多开软件对检测函数进行hook造成的检测失效。
在一种可能的实现方式中,由于终端故障等原因可能会出现第一应用程序无法获取到第二应用程序持有的本机识别码的情况,为了防止出现此种情况时导致该检测方法无法正常运行,在上述实施例提供的应用程序检测方法的基础上,在S12之后还可以检测预设时长内(具体时长根据需求设定)所述第一应用程序是否获取到所述第二应用程序持有的本机识别码,若所述第一应用程序没有获取到所述第二应用程序持有的本机识别码,则判定所第一应用程序为非分身应用分身应用程序程序分身应用程序,还可以打印出log(日志,通常是系统或者某些软件对已完成的某种处理的记录)标识验证通过,若所述第一应用程序获取到所述第二应用程序持有的本机识别码,则执行S13。
之所以在第一应用程序不能获取到第二应用程序持有的本机识别码,导致无法通过该应用检测方法来确定第一应用程序是否为非分身应用时,将第一应用程序确定为非分身应用,是因为当检测到分身应用程序后为了消除分身应用程序的影响,通常会对检测出的分身应用程序进行关闭进程或卸载等操作,因此在无法确定第一应用程序是否是分身应用程序时,为了防止将第一应用程序错误的确定为分身应用程序而导致第一应用程序被结束进程或卸载等情况的发生,将第一应用程序确定为非分身应用更好一些。
实施例二
在本实施例中,在实施例一所述的应用程序检测方法的基础上,如图2所示,该检测方法还可以包括S16和S10。
执行完S15后,执行S16.将检测结果存储至终端中。
在一个可能的实现方式中,可以将检测结果存储至终端的SP(SharedPreferences,是Android平台上一个轻量级的存储类)中,如果对检测结果进行存储的话,在对第一应用程序进行检测时,可以在执行S11之前先执行S10检测终端中是否存储有与第一应用程序对应的检测结果,如果有,则直接调用终端中存储的检测结果作为第一应用程序的检测结果即可,无需再通过上述S11-S15对第一应用程序进行检测,如果终端在没有存储与第一应用程序对应的检测结果则再通过上述S11-S15对第一应用程序进行检测,确定与第一应用程序对应的检测结果。
在应用程序检测方法中加入上述步骤,是由于通过该应用检测方法对一个应用程序进行检测时,需要跟另外一个应用程序进行通信,会比较耗时,因此为了避免重复检测造成的时间浪费,在该应用程序检测方法中加入上述步骤。
实施例三
在本实施例中,在实施例一或实施例二所述的应用程序检测方法的基础上,该检测方法还可以包括:
确定出所述第一应用程序是被能伪装机型的应用程序创建的分身应用程序后,执行如下操作中的任意一种或多种:关闭所述第一应用程序的预设功能、关闭所述第一应用程序、结束所述第一应用程序的进程。
本实施例的目的是消除分身应用程序的不良影响。
图3为本发明实施例提供的一种应用程序检测装置的框图,该装置应用于安装有第一应用程序和第二应用程序的终端上,所述第一应用程序和所述第二应用程序之间预先建立有用于进程间通信的进程间通信链路,如图3所示,该装置可以包括:
第一获取模块301,用于所述第一应用程序接收到检测指令时,获取自身持有的本机识别码;
第二获取模块302,用于所述第一应用程序通过所述进程间通信链路,获取所述第二应用程序持有的本机识别码;
比较模块303,用于所述第一应用程序比较自身持有的本机识别码与所述第二应用程序持有的本机识别码是否相同;
第一确定模块304,用于若所述第一应用程序比较自身持有的本机识别码与所述第二应用程序持有的本机识别码不相同,则确定所述第一应用程序是被能伪装机型的应用程序创建的分身应用程序;
第二确定模块305,用于若所述第一应用程序比较自身持有的本机识别码与所述第二应用程序持有的本机识别码相同,则确定所述第一应用程序为非分身应用程序。
在一种可能的实现方式中,所述第一应用程序通过下述方式持有本机识别码:
所述第一应用程序调用预设的系统API函数,获取本机识别码,其中,所述系统API函数为用于获取终端的硬件信息的函数所述第一应用程序将获取到的所述本机识别码保存到本地,并作为自身持有的本机识别码。
在一种可能的实现方式中,所述第二获取模块302,具体用于:
所述第一应用程序调用所述第二应用程序中预先设置的获取识别码接口,所述获取识别码接口用于向所述第一应用程序提供所述第二应用程序持有的本机识别码;
所述第一应用程序通过所述获取识别码接口获取所述第二应用程序持有的本机识别码。
在一种可能的实现方式中,,所述装置还包括:
第一检测模块,具体用于:
在所述第一应用程序比较自身持有的本机识别码与所述第二应用程序持有的本机识别码是否相同之前,检测所述第一应用程序是否获取到所述第二应用程序持有的本机识别码,若没有获取到,则判定所第一应用程序为非分身应用程序,若获取到,则执行所述第一应用程序比较自身持有的本机识别码与所述第二应用程序持有的本机识别码是否相同的步骤。
在一种可能的实现方式中,所述第一应用程序将检测结果存储至终端,所述装置还包括:
第二检测模块,具体用于:
在所述第一应用程序获取自身持有的本机识别码之前,所述第一应用程序检测所述终端中是否存储有所述第一应用程序的检测结果,若所述终端中存储有所述第一应用程序的检测结果,则获取所述终端中存储的所述第一应用程序的检测结果,若所述终端中没有存储所述第一应用程序的应用检测结果,则执行所述第一应用程序获取自身持有的本机识别码的步骤。
在一种可能的实现方式中,所述装置还包括:
处理模块,具体用于:
确定所述第一应用程序是被能伪装机型的应用程序创建的分身应用程序后,执行如下操作中的任意一种或多种:关闭所述第一应用程序的预设功能、关闭所述第一应用程序、结束所述第一应用程序的进程。
在本申请另一实施例中,还提供了一种计算机设备,如图4所示,包括处理器401、通信接口402、存储器403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信;
存储器403,用于存放计算机程序;
处理器401,用于执行存储器403上所存放的程序时,实现如下步骤:
第一应用程序接收到检测指令时,获取自身持有的本机识别码;
所述第一应用程序通过预设的与第二应用程序之间的进程间通信链路,获取所述第二应用程序持有的本机识别码;
所述第一应用程序比较自身持有的本机识别码与所述第二应用程序持有的本机识别码是否相同;
若不相同,则确定所述第一应用程序是被能伪装机型的应用程序创建的分身应用程序;
若相同,则确定所述第一应用程序为非分身应用程序。
上述计算机设备提到的通信总线404可以是外设部件互连标准(PeripheralComponent Interconnect,简称PCI)总线或扩展工业标准结构(Extended IndustryStandard Architecture,简称EISA)总线等。该通信总线404可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口402用于上述计算机设备与其他设备之间的通信。
存储器403可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器401可以是通用处理器,包括中央处理器(Central ProcessingUnit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请另一实施例中,还提供了一种存储介质,所述存储介质上存储有数据处理方法程序,所述数据处理方法程序被处理器执行时实现上述任一所述的应用程序检测方法的步骤。
本发明实施例在具体实现时,可以参阅上述各个实施例,具有相应的技术效果。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(Programmable LogicDevice,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种应用程序检测方法,其特征在于,应用于安装有第一应用程序和第二应用程序的终端上,所述第一应用程序和所述第二应用程序之间预先建立有用于进程间通信的进程间通信链路,所述方法包括:
所述第一应用程序接收到检测指令时,获取自身持有的本机识别码;
所述第一应用程序通过所述进程间通信链路,获取所述第二应用程序持有的本机识别码;
所述第一应用程序比较自身持有的本机识别码与所述第二应用程序持有的本机识别码是否相同;
若不相同,则确定所述第一应用程序是被能伪装机型的应用程序创建的分身应用程序;
若相同,则确定所述第一应用程序为非分身应用程序。
2.根据权利要求1所述的方法,其特征在于,所述第一应用程序通过下述方式持有本机识别码:
所述第一应用程序调用预设的系统API函数,获取本机识别码,其中,所述系统API函数为用于获取终端的硬件信息的函数所述第一应用程序将获取到的所述本机识别码保存到本地,并作为自身持有的本机识别码。
3.根据权利要求1所述的方法,其特征在于,所述第一应用程序通过所述进程间通信链路,获取所述第二应用程序持有的本机识别码,包括:
所述第一应用程序调用所述第二应用程序中预先设置的获取识别码接口,所述获取识别码接口用于向所述第一应用程序提供所述第二应用程序持有的本机识别码;
所述第一应用程序通过所述获取识别码接口获取所述第二应用程序持有的本机识别码。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述第一应用程序比较自身持有的本机识别码与所述第二应用程序持有的本机识别码是否相同之前,检测所述第一应用程序是否获取到所述第二应用程序持有的本机识别码;
若没有获取到,则判定所第一应用程序为非分身应用程序;
若获取到,则执行所述第一应用程序比较自身持有的本机识别码与所述第二应用程序持有的本机识别码是否相同的步骤。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述第一应用程序将检测结果存储至终端;
在所述第一应用程序获取自身持有的本机识别码之前,所述第一应用程序检测所述终端中是否存储有所述第一应用程序的检测结果;
若所述终端中存储有所述第一应用程序的检测结果,则获取所述终端中存储的所述第一应用程序的检测结果;
若所述终端中没有存储所述第一应用程序的应用检测结果,则执行所述第一应用程序获取自身持有的本机识别码的步骤。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述第一应用程序是被能伪装机型的应用程序创建的分身应用程序后,执行如下操作中的任意一种或多种:关闭所述第一应用程序的预设功能、关闭所述第一应用程序、结束所述第一应用程序的进程。
7.一种应用程序检测装置,其特征在于,应用于安装有第一应用程序和第二应用程序的终端上,所述第一应用程序和所述第二应用程序之间预先建立有用于进程间通信的进程间通信链路,所述装置包括:
第一获取模块,用于所述第一应用程序接收到检测指令时,获取自身持有的本机识别码;
第二获取模块,用于所述第一应用程序通过所述进程间通信链路,获取所述第二应用程序持有的本机识别码;
比较模块,用于所述第一应用程序比较自身持有的本机识别码与所述第二应用程序持有的本机识别码是否相同;
第一确定模块,用于若所述第一应用程序比较自身持有的本机识别码与所述第二应用程序持有的本机识别码不相同,则确定所述第一应用程序是被能伪装机型的应用程序创建的分身应用程序;
第二确定模块,用于若所述第一应用程序比较自身持有的本机识别码与所述第二应用程序持有的本机识别码相同,则确定所述第一应用程序为非分身应用程序。
8.根据权利要求7所述的装置,其特征在于,所述第一应用程序通过下述方式持有本机识别码:
所述第一应用程序调用预设的系统API函数,获取本机识别码,其中,所述系统API函数为用于获取终端的硬件信息的函数所述第一应用程序将获取到的所述本机识别码保存到本地,并作为自身持有的本机识别码。
9.一种计算机设备,其特征在于,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的数据处理程序,以实现权利要求1-6中任一项所述的应用程序检测方法。
10.一种存储介质,其特征在于,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现权利要求1-6中任一项所述的应用程序检测方法。
CN201911413474.8A 2019-12-31 2019-12-31 一种应用程序检测方法、装置、计算机设备及存储介质 Active CN111158935B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911413474.8A CN111158935B (zh) 2019-12-31 2019-12-31 一种应用程序检测方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911413474.8A CN111158935B (zh) 2019-12-31 2019-12-31 一种应用程序检测方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN111158935A true CN111158935A (zh) 2020-05-15
CN111158935B CN111158935B (zh) 2023-07-25

Family

ID=70560111

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911413474.8A Active CN111158935B (zh) 2019-12-31 2019-12-31 一种应用程序检测方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN111158935B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102204210A (zh) * 2011-05-18 2011-09-28 华为技术有限公司 启动应用的方法、服务器和系统
CN103544409A (zh) * 2012-07-11 2014-01-29 腾讯科技(深圳)有限公司 一种应用程序控制方法、用户设备及服务器
CN106445582A (zh) * 2016-08-30 2017-02-22 宇龙计算机通信科技(深圳)有限公司 一种删除应用程序分身的方法及终端
CN106445671A (zh) * 2016-10-10 2017-02-22 广东欧珀移动通信有限公司 一种应用程序的管理方法、装置及终端
CN107038063A (zh) * 2017-04-18 2017-08-11 北京奇虎科技有限公司 在终端设备上启动应用分身的方法及装置
WO2018053904A1 (zh) * 2016-09-22 2018-03-29 宇龙计算机通信科技(深圳)有限公司 一种信息处理方法及终端
WO2018094951A1 (zh) * 2016-11-28 2018-05-31 武汉斗鱼网络科技有限公司 一种跨进程通信的方法、装置及可读取存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102204210A (zh) * 2011-05-18 2011-09-28 华为技术有限公司 启动应用的方法、服务器和系统
CN103544409A (zh) * 2012-07-11 2014-01-29 腾讯科技(深圳)有限公司 一种应用程序控制方法、用户设备及服务器
CN106445582A (zh) * 2016-08-30 2017-02-22 宇龙计算机通信科技(深圳)有限公司 一种删除应用程序分身的方法及终端
WO2018053904A1 (zh) * 2016-09-22 2018-03-29 宇龙计算机通信科技(深圳)有限公司 一种信息处理方法及终端
CN106445671A (zh) * 2016-10-10 2017-02-22 广东欧珀移动通信有限公司 一种应用程序的管理方法、装置及终端
WO2018094951A1 (zh) * 2016-11-28 2018-05-31 武汉斗鱼网络科技有限公司 一种跨进程通信的方法、装置及可读取存储介质
CN107038063A (zh) * 2017-04-18 2017-08-11 北京奇虎科技有限公司 在终端设备上启动应用分身的方法及装置

Also Published As

Publication number Publication date
CN111158935B (zh) 2023-07-25

Similar Documents

Publication Publication Date Title
CN109492378B (zh) 一种基于设备识别码的身份验证方法、服务器及介质
CN109561085B (zh) 一种基于设备识别码的身份验证方法、服务器及介质
CN109144665B (zh) 一种模拟器识别方法、识别设备及计算机可读介质
CN109062667B (zh) 一种模拟器识别方法、识别设备及计算机可读介质
CN112434306B (zh) 可信度量方法,装置,系统,电子设备及存储介质
US9665465B1 (en) Automated determination of application permissions
US10614208B1 (en) Management of login information affected by a data breach
US20140020096A1 (en) System to profile application software
CN104767713B (zh) 账号绑定的方法、服务器及系统
CN112235321B (zh) 短信验证码防刷方法及装置
CN110278192B (zh) 外网访问内网的方法、装置、计算机设备及可读存储介质
CN106465076B (zh) 一种控制短信息读取的方法和终端
CN109145590B (zh) 一种函数hook检测方法、检测设备及计算机可读介质
CN111752770A (zh) 服务请求的处理方法、系统、计算机设备和存储介质
CN110247897B (zh) 一种系统登录方法、设备、网关及计算机可读存储介质
US20170116427A1 (en) Token-based control of software installation and operation
CN116048639A (zh) 操作系统的启动方法、装置、电子设备及可读存储介质
CN111259368A (zh) 一种登录系统的方法及设备
CN112215593B (zh) 一种支付方法、装置、服务器及存储介质
CN110363011B (zh) 用于验证基于uefi的bios的安全性的方法和设备
WO2020233044A1 (zh) 一种插件校验方法、设备、服务器及计算机可读存储介质
CN111158935A (zh) 一种应用程序检测方法、装置、计算机设备及存储介质
CN113596600A (zh) 直播嵌入程序的安全管理方法、装置、设备及存储介质
US20200244461A1 (en) Data Processing Method and Apparatus
CN109934016B (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
GR01 Patent grant
GR01 Patent grant