CN112883370B - 应用程序状态检测方法和装置、存储介质和电子设备 - Google Patents
应用程序状态检测方法和装置、存储介质和电子设备 Download PDFInfo
- Publication number
- CN112883370B CN112883370B CN201911206445.4A CN201911206445A CN112883370B CN 112883370 B CN112883370 B CN 112883370B CN 201911206445 A CN201911206445 A CN 201911206445A CN 112883370 B CN112883370 B CN 112883370B
- Authority
- CN
- China
- Prior art keywords
- instruction
- application program
- result
- private directory
- register
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开涉及一种应用程序状态检测方法和装置、存储介质和电子设备,其中,所述方法包括:确定所述应用程序的私有目录的路径;在系统内核态中加载用于开启所述私有目录的开启伪指令;获取响应于所述开启伪指令的开启结果;根据所述开启结果,判断所述应用程序是否能够开启所述私有目录,如果不能开启所述私有目录,则所述应用程序处于双开状态。
Description
技术领域
本公开涉及信息技术领域,具体地,涉及一种应用程序状态检测方法和装置、存储介质和电子设备。
背景技术
很多搭载在安卓平台的应用程序面临着被劫持的风险。劫持软件可以将原本运行在安卓系统中的应用程序置于虚拟化的沙箱中,并借此随意修改应用程序内的函数和逻辑,从而达到操纵该应用程序的目的。这些劫持软件使应用程序的安全性难以保障,并对用户的信息安全以及应用程序运营商的经济安全带来了很大的隐患。
想要避免被劫持软件所劫持,首先需要应用程序检测出自身是否被双开。目前用于检测应用程序被双开的方法主要是通过检测该应用程序对应的私有目录的数量,如果存在一个以上的私有目录,则说明该应用程序被双开,存在被劫持的风险。
但是这种方法通过检测私有目录数量来检测是否双开,并且通过与系统交换数据的API(Application Programming Interface,应用程序调用接口)返回检测结果,存在被劫持软件删除应用程序自身的私有目录以欺骗检测或修改API并返回错误数据以欺骗检测的风险。
发明内容
本公开的目的是提供一种应用程序状态检测方法和装置、存储介质和电子设备,以解决上述技术问题。
为了实现上述目的,本公开的第一方面,提供一种应用程序状态检测方法,包括:确定所述应用程序的私有目录的路径;在系统内核态中加载用于开启所述私有目录的开启伪指令;获取响应于所述开启伪指令的开启结果;根据所述开启结果,判断所述应用程序是否能够开启所述私有目录,如果不能开启所述私有目录,则所述应用程序处于双开状态。
可选地,所述在系统内核态中加载用于开启所述私有目录的开启伪指令,包括:通过加载指令,在目标寄存器中加载所述开启伪指令;通过软中断指令,进入所述系统内核态;所述获取响应于所述开启伪指令的开启结果,包括:获取从中断优先寄存器IP寄存器返回至所述目标寄存器的所述开启结果,所述开启结果是所述系统内核态读取所述目标寄存器中的所述开启伪指令之后存入所述IP寄存器的。
可选地,所述在系统内核态中加载用于开启所述私有目录的开启伪指令,包括::通过LDR加载指令,在所述目标寄存器中加载所述开启伪指令,所述开启伪指令为NR_open伪指令;所述通过软中断指令,进入所述系统内核态,包括:通过SWI软中断指令,进入所述系统内核态。
可选地,所述开启结果为数值结果,所述数值结果表征所述私有目录中通过所述NR_open伪指令可以开启的文件数目,所述根据所述开启结果,判断所述应用程序是否能够开启所述私有目录,包括:判断所述开启结果是否小于0,若所述开启结果小于0,则所述应用程序处于双开状态。
可选地,所述目标寄存器为空闲寄存器,所述在目标寄存器中加载所述开启伪指令之前,还包括:在系统寄存器中确定空闲寄存器,将所述空闲寄存器作为目标寄存器。
可选地,在确定所述应用程序处于双开状态之后,所述方法还包括:生成提示信息,所述提示信息用于提示用户所述应用程序处于双开状态。
可选地,在所述获取响应于所述开启伪指令的开启结果之前,所述方法还包括:返回系统用户态;所述获取响应于所述开启伪指令的开启结果,包括:在所述系统用户态中获取所述开启结果。
本公开的第二方面,提供一种应用程序状态检测装置,包括:确定模块,用于确定所述应用程序的私有目录的路径;加载模块,用于在系统内核态中加载用于开启所述私有目录的开启伪指令;获取模块,用于获取响应于所述开启伪指令的开启结果;判断模块,用于根据所述开启结果,判断所述应用程序是否能够开启所述私有目录,如果不能开启所述私有目录,则所述应用程序处于双开状态。
可选地,所述加载模块,用于通过加载指令,在目标寄存器中加载所述开启伪指令,并通过软中断指令,进入所述系统内核态;所述获取模块,用于获取从中断优先寄存器IP寄存器返回至所述目标寄存器的所述开启结果,所述开启结果是所述系统内核态读取所述目标寄存器中的所述开启伪指令之后存入所述IP寄存器的。
可选地,所述加载模块,用于通过LDR加载指令,在目标寄存器中加载所述开启伪指令,所述开启伪指令为NR_open伪指令,并通过SWI软中断指令,进入所述系统内核态。
可选地,所述开启结果为数值结果,所述数值结果表征所述私有目录中通过所述NR_open伪指令可以开启的文件数目,所述判断模块,用于判断所述开启结果是否小于0,若所述开启结果小于0,则所述应用程序处于双开状态。
可选地,所述目标寄存器为空闲寄存器,所述装置还包括指定模块,用于在系统寄存器中确定空闲寄存器,将所述空闲寄存器作为目标寄存器。
可选地,所述装置还包括提示模块,用于生成提示信息,所述提示信息用于提示用户所述应用程序处于双开状态。
可选地,所述装置还包括返回模块,用于返回系统用户态;所述获取模块,用于在所述系统用户态中获取所述开启结果。
本公开的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时本公开第一方面中任一项所述方法的步骤。
本公开的第四方面,提供一种电子设备,包括:存储器,其上存储有计算机程序;处理器,用于执行所述存储器中的所述计算机程序,以本公开第一方面中任一项所述方法的步骤。
通过上述技术方案,在系统内核态中直接查询应用程序对自身的私有目录是否能够开启,如果能够开启则说明应用程序没有被双开,如果不能开启则说明应用程序被双开,本方案没有使用容易被挟持性的沙盒软件修改的C函数进行数据查询,也没有使用容易被沙盒软件修改的API接口进行数据交换,因此可以更精准地判断应用程序是否被双开,从而降低应用程序被双开导致的信息安全和财产安全的风险。
进一步地,在确定所述应用程序处于双开状态之后,可以生成提示信息,所述提示信息用于提示用户所述应用程序处于双开状态。这样,用户察觉到应用程序被双开,可以及时规避应用程序双开所带来的风险。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据一示例性公开实施例示出的一种应用程序状态检测方法的流程图。
图2是根据一示例性公开实施例示出的一种应用程序状态检测方法的流程图。
图3是根据一示例性公开实施例示出的一种应用程序状态检测装置的框图。
图4是根据一示例性公开实施例示出的一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
在安卓系统中,一个应用程序的UID(User Identification,用户身份证明)下应该只存在一个路径为“/data/data/应用程序包名”的私有目录,在被双开以后,双开应用程序的沙盒软件会新增一个“/data/data/应用程序包名”的目录,因此,现有技术给出了一种可以通过检测应用程序的私有目录数量,从而判断应用程序是否被双开,从而降低被双开造成的信息安全及财产安全风险。
但是,一些劫持软件可能会篡改应用程序和系统进行数据交流的API的信息,并修改通过该API传输的检测数据,使应用程序无法检测出自身被双开。或者,一些劫持软件可能在将应用程序置入沙盒后卸载安装在系统内的应用程序,删除该应用程序的私有目录,使应用程序的路径下只存在一个私有目录。又或者,一些挟持软件可能修改应用程序私有目录的路径,将应用程序的目录置于自身的私有目录下,从而逃避应用程序对私有目录数目的检测。
由于系统与应用程序之间的数据交换通常需要使用C函数逻辑的语言,或者C函数逻辑的API,因此,目前,尚没有检测应用程序是否双开的方法可以有效地避免挟持软件通过修改应用程序函数逻辑绕开检测的情况。
下列实施例提供了一种进入系统内核态开启应用程序的私有目录,并根据开启结果判断应用程序是否处于双开状态的方法,这样,不通过系统与应用程序之间的API进行数据传输,并且不依赖于对私有目录数量的判断,从而可以避免挟持软件通过上述方式绕开双开检测的情况,从而提升应用程序的安全性。
图1是根据一示例性公开实施例示出一种应用程序状态检测方法的流程图,如图1所示,该方法包括以下步骤:
S11、确定所述应用程序的私有目录的目标路径。
在安卓系统中,一个应用程序的UID下应该会存在一个路径为“/data/data/应用程序包名”的私有目录,用于存放该应用程序的一些文件和下载信息。一般都会包括cache,databases,files,lib,shared_prefs等文件夹,而沙盒软件会在沙盒软件自身的私有目录下再次创建用于存放该应用程序的文件的目录(例如“/data/data/沙盒软件包名/app_plugin/应用程序包名”),如果该应用程序在沙盒软件中被双开,沙盒软件在运行该应用程序调用的文件是通过沙盒软件的私有目录中指向该应用程序的路径,而非是该应用程序自身的私有目录的路径。也就是说,沙盒软件中的应用程序没有访问应用程序本身创建的私有目录的权限。
对于应用程序而言,开启其自身的私有目录需要通过一条指向该私有目录的路径,例如,“/data1/data2/应用程序包名”的私有目录,路径为data1、data2、应用程序包名,目标路径在创建私有目录时已经唯一确定,因此在采用本方法时,只需对存储的目标路径进行调用即可。
S12、在系统内核态中加载用于开启所述私有目录的开启伪指令。
系统内核态区分于系统用户态,与应用程序不共用同一套函数,而是使用自身的函数库,并且与系统用户态不同,其与应用程序之间的数据交换也并非通过API接口。一般而言,应用程序运行在系统用户态,既不能访问内核态所在的内存空间,也不能调用内核态中的函数。因此,如果利用系统软中断机制直接进入系统内核态检测是否可以开启私有目录,则其调用的函数为libc系统库函数,而非可以被挟持软件篡改的C函数,并且应用程序与系统直接进行数据交换的数据传输接口也并不是可以被篡改的API接口。这样,在查询过程中不使用C函数逻辑的语言和API,就可以避免挟持软件通过对C函数进行修改从而绕过检测的可能性。
在一种可能的实施方式中,可以通过加载指令,在目标寄存器中加载所述开启伪指令,并通过软中断指令,进入所述系统内核态,使系统读取目标寄存器中的开启伪指令从而获得开启结果。
该开启伪指令可以是应用于系统内核态的系统调用函数,例如,可以是NR_open伪指令,该指令用于确定进程可打开的最大文件数。
S13、获取响应于所述开启伪指令的开启结果。
在系统内核态完成了该开启伪指令的指示,对私有目录中的文件进行了开启操作以后,操作系统会将查询的结果反馈至发出指令的位置。该查询结果可以反馈出应用程序是否可以打开自身的私有目录。
在一种可能的实施方式中,可以先返回系统用户态,在系统用户态中获取所述开启结果。
S14、根据所述开启结果,判断所述应用程序是否能够开启所述私有目录,如果不能开启所述私有目录,则所述应用程序处于双开状态。
如果应用程序运行在沙盒软件中,由于沙盒软件没有对应用程序的私有目录中的文件进行开启的权限,只有对自身私有目录中指向应用程序的文件目录有开启权限,因此,如果应用程序通过沙盒软件进行了上述的步骤,则反馈结果应是无法开启私有目录,如果应用程序是安装在系统环境中而非沙盒软件中,则反馈结果应是可以开启私有目录。
对应背景技术中提到的“劫持软件删除应用程序自身的私有目录以欺骗检测或修改API并返回错误数据”两种欺骗方式,如果劫持软件删除了应用程序自身的私有目录以绕开检测,则由于没有私有目录的路径,反馈的开启结果自然是无法开启私有目录;而如果挟持软件修改API以反馈错误数据,由于本方法中,应用程序没有通过API与系统进行数据交换,因此挟持软件即使修改了API也无法避开对应用程序是否双开的检测。
在一种可能的实施方式中,在确定所述应用程序处于双开状态之后,可以生成提示信息,所述提示信息用于提示用户所述应用程序处于双开状态。这样,用户察觉到应用程序被双开,可以及时规避应用程序双开所带来的风险。
通过上述的技术方案,在系统内核态中直接查询应用程序对自身的私有目录是否能够开启,如果能够开启则说明应用程序没有被双开,如果不能开启则说明应用程序被双开,本方案没有使用容易被挟持性的沙盒软件修改的C函数进行数据查询,也没有使用容易被沙盒软件修改的API接口进行数据交换,因此可以更精准地判断应用程序是否被双开,从而降低应用程序被双开导致的信息安全和财产安全的风险。
进一步地,在确定所述应用程序处于双开状态之后,可以生成提示信息,所述提示信息用于提示用户所述应用程序处于双开状态。这样,用户察觉到应用程序被双开,可以及时规避应用程序双开所带来的风险。
图2是根据一示例性公开实施例示出的一种应用程序状态检测方法的流程图,如图2所示,所述方法包括以下步骤:
S21、确定所述应用程序的私有目录的路径。
在安卓系统中,一个应用程序的UID下应该会存在一个路径为“/data/data/应用程序包名”的私有目录,用于存放该应用程序的一些文件和下载信息。一般都会包括cache,databases,files,lib,shared_prefs等文件夹,而沙盒软件会在沙盒软件自身的私有目录下再次创建用于存放该应用程序的文件的目录(例如“/data/data/沙盒软件包名/app_plugin/应用程序包名”),如果该应用程序在沙盒软件中被双开,沙盒软件在运行该应用程序调用的文件是通过沙盒软件的私有目录中指向该应用程序的路径,而非是该应用程序自身的私有目录的路径。也就是说,沙盒软件中的应用程序没有访问应用程序本身创建的私有目录的权限。
对于应用程序而言,开启其自身的私有目录需要通过一条指向该私有目录的路径,例如,“/data1/data2/应用程序包名”的私有目录,路径为data1、data2、应用程序包名,目标路径在创建私有目录时已经唯一确定,因此在采用本方法时,只需对存储的目标路径进行调用即可。
S22、通过LDR加载指令(字数据加载指令),在目标寄存器中加载所述开启伪指令,所述开启伪指令为NR_open伪指令。
其中,所述目标寄存器为空闲寄存器。可选地,可以在系统寄存器中确定空闲寄存器,将所述空闲寄存器作为目标寄存器。或者,由于系统寄存器中靠后的寄存器(如R7寄存器、R8寄存器)通常情况下是空闲状态,因此,可以设置这些寄存器为目标寄存器,从而节省用于确定空闲寄存器的系统资源。
通过LDR加载指令,可以在目标寄存器中加载指令,当系统进入内核态后,系统内核态可以直接读取目标寄存器中的指令,完成目标寄存器中指令的指示操作。该开启伪指令可以是NR_open伪指令,NR_open伪指令采用系统内核态的系统调用函数,该指令用于确定进程可打开的最大文件数。
S23、通过SWI(Software Interrupt,软件中断)软中断指令,进入所述系统内核态。
系统内核态区分于系统用户态,与应用程序不共用同一套函数,而是使用自身的函数库,并且与系统用户态不同,其与应用程序之间的数据交换也并非通过API接口。一般而言,应用程序运行在系统用户态,既不能访问内核态所在的内存空间,也不能调用内核态中的函数。因此,如果利用系统软中断机制直接进入系统内核态检测是否可以开启私有目录,则其调用的函数为libc系统库函数,而非可以被挟持软件篡改的C函数,并且应用程序与系统直接进行数据交换的数据传输接口也并不是可以被篡改的API接口。这样,在查询过程中不使用C函数逻辑的语言和API,就可以避免挟持软件通过对C函数进行修改从而绕过检测的可能性。
利用SWI软中断指令,可以使系统进入内核态,并且,在系统进入内核态之后,可以读取目标寄存器中的指令,以完成目标寄存器中指令所指示的操作。
S24、获取从中断优先寄存器IP寄存器返回至所述目标寄存器的所述开启结果。
其中,所述开启结果是所述系统内核态读取所述目标寄存器中的所述开启伪指令之后存入所述IP寄存器的。由于该开启结果所响应的指令是目标寄存器中加载的,所以该开启结果会被IP寄存器反馈至目标寄存器。当需要调用开启结果时,可以直接从目标寄存器中获取。
在一种可能的实施方式中,可以先返回系统用户态,在系统用户态中获取所述开启结果。
S25、根据所述开启结果,判断所述应用程序是否能够开启所述私有目录,如果不能开启所述私有目录,则所述应用程序处于双开状态。
其中,开启结果为数值结果,所述数值结果表征所述私有目录中通过所述NR_open伪指令可以开启的文件数目。如果应用程序具备开启私有目录的权限,则该数值结果应当是大于0或等于0的数值,如果应用程序不具备开启私有目录的权限,该数值结果应当是小于0的数值。
因此,可以通过判断所述开启结果是否小于0判断应用程序是否能开启所述私有目录,若所述开启结果小于0,则所述应用程序不能开启私有目录,应用程序处于双开状态。
在一种可能的实施方式中,在确定所述应用程序处于双开状态之后,可以生成提示信息,所述提示信息用于提示用户所述应用程序处于双开状态。这样,用户察觉到应用程序被双开,可以及时规避应用程序双开所带来的风险。
进一步地,在确定所述应用程序处于双开状态之后,可以生成提示信息,所述提示信息用于提示用户所述应用程序处于双开状态。这样,用户察觉到应用程序被双开,可以及时规避应用程序双开所带来的风险。
通过上述的技术方案,通过SWI指令进入系统内核态,通过在系统内核态中加载目标寄存器内的NR_open伪指令,查询应用程序可以开启的私有目录中的文件数量,从而得到能够反映应用程序是否能够开启自身的私有目录的开启结果,如果能够开启则说明应用程序没有被双开,如果不能开启则说明应用程序被双开。本方案没有使用容易被挟持性的沙盒软件修改的C函数进行数据查询,而是采用了系统内核态使用的系统库函数,也没有使用容易被沙盒软件修改的API接口进行数据交换,而是读取IP寄存器发送至目标寄存器的开启结果,因此可以防止沙盒软件通过修改C函数逻辑绕开双开检测,能够更精准地判断应用程序是否被双开,从而降低应用程序被双开导致的信息安全和财产安全的风险。
图3是根据一示例性公开实施例示出的一种应用程序状态检测装置的框图,如图3所示,所述应用程序状态检测装置300包括确定模块310、加载模块320、获取模块330、判断模块340。
其中,确定模块310,用于确定所述应用程序的私有目录的路径.
加载模块320,用于在系统内核态中加载用于开启所述私有目录的开启伪指令。
获取模块330,用于获取响应于所述开启伪指令的开启结果。
判断模块340,用于根据所述开启结果,判断所述应用程序是否能够开启所述私有目录,如果不能开启所述私有目录,则所述应用程序处于双开状态。
可选地,所述加载模块,用于通过加载指令,在目标寄存器中加载所述开启伪指令,并通过软中断指令,进入所述系统内核态;所述获取模块,用于获取从中断优先寄存器IP寄存器返回至所述目标寄存器的所述开启结果,所述开启结果是所述系统内核态读取所述目标寄存器中的所述开启伪指令之后存入所述IP寄存器的。
可选地,所述加载模块,用于通过LDR加载指令,在目标寄存器中加载所述开启伪指令,所述开启伪指令为NR_open伪指令;通过SWI软中断指令,进入所述系统内核态。
可选地,所述开启结果为数值结果,所述数值结果表征所述私有目录中通过所述NR_open伪指令可以开启的文件数目,所述判断模块,用于判断所述开启结果是否小于0,若所述开启结果小于0,则所述应用程序处于双开状态。
可选地,所述目标寄存器为空闲寄存器,所述装置还包括指定模块,用于在系统寄存器中确定空闲寄存器,将所述空闲寄存器作为目标寄存器。
可选地,所述装置还包括提示模块,用于生成提示信息,所述提示信息用于提示用户所述应用程序处于双开状态。
可选地,所述装置还包括返回模块,用于返回系统用户态;所述获取模块,用于在所述系统用户态中获取所述开启结果。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
通过上述技术方案,在系统内核态中直接查询应用程序对自身的私有目录是否能够开启,如果能够开启则说明应用程序没有被双开,如果不能开启则说明应用程序被双开,本方案没有使用容易被挟持性的沙盒软件修改的C函数进行数据查询,也没有使用容易被沙盒软件修改的API接口进行数据交换,因此可以更精准地判断应用程序是否被双开,从而降低应用程序被双开导致的信息安全和财产安全的风险。
进一步地,在确定所述应用程序处于双开状态之后,可以生成提示信息,所述提示信息用于提示用户所述应用程序处于双开状态。这样,用户察觉到应用程序被双开,可以及时规避应用程序双开所带来的风险。
图4是根据一示例性实施例示出的一种电子设备400的框图。如图4所示,该电子设备400可以包括:处理器401,存储器402。该电子设备400还可以包括多媒体组件403,输入/输出(I/O)接口404,以及通信组件405中的一者或多者。
其中,处理器401用于控制该电子设备400的整体操作,以完成上述的应用程序状态检测方法中的全部或部分步骤。存储器402用于存储各种类型的数据以支持在该电子设备400的操作,这些数据例如可以包括用于在该电子设备400上操作的任何应用程序或方法的指令,以及应用程序相关的数据。该存储器402可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-OnlyMemory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-OnlyMemory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件403可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器402或通过通信组件405发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口404为处理器401和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件405用于该电子设备400与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near Field Communication,简称NFC),2G、3G、4G、NB-IOT、eMTC、或其他5G等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件405可以包括:Wi-Fi模块,蓝牙模块,NFC模块等等。
在一示例性实施例中,电子设备400可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的应用程序状态检测方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的应用程序状态检测方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器402,上述程序指令可由电子设备400的处理器401执行以完成上述的应用程序状态检测方法。
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的应用程序状态检测方法的代码部分。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
Claims (8)
1.一种应用程序状态检测方法,其特征在于,所述方法包括:
确定应用程序的私有目录的路径;
在系统内核态中加载用于开启所述私有目录的开启伪指令;
获取响应于所述开启伪指令的开启结果;
根据所述开启结果,判断所述应用程序是否能够开启所述私有目录,
如果不能开启所述私有目录,则所述应用程序处于双开状态;
所述在系统内核态中加载用于开启所述私有目录的开启伪指令,包括:
通过加载指令,在目标寄存器中加载所述开启伪指令;
通过软中断指令,进入所述系统内核态;
所述获取响应于所述开启伪指令的开启结果,包括:
获取从中断优先IP寄存器返回至所述目标寄存器的所述开启结果,所述开启结果是所述系统内核态读取所述目标寄存器中的所述开启伪指令之后存入所述中断优先IP寄存器的;
所述开启结果表征所述私有目录中通过所述伪指令可以开启的文件数目,所述根据所述开启结果,判断所述应用程序是否能够开启所述私有目录,包括:
若所述开启结果小于0,则所述应用程序不能开启所述私有目录。
2.根据权利要求1所述的方法,其特征在于,所述在系统内核态中加载用于开启所述私有目录的开启伪指令,包括:
通过LDR加载指令,在所述目标寄存器中加载所述开启伪指令,所述开启伪指令为NR_open伪指令;
所述通过软中断指令,进入所述系统内核态,包括:
通过SWI软中断指令,进入所述系统内核态。
3.根据权利要求1或2所述的方法,其特征在于,所述目标寄存器为空闲寄存器,所述在目标寄存器中加载所述开启伪指令之前,还包括:
在系统寄存器中确定空闲寄存器,
将所述空闲寄存器作为目标寄存器。
4.根据权利要求1所述的方法,其特征在于,在确定所述应用程序处于双开状态之后,所述方法还包括:
生成提示信息,所述提示信息用于提示用户所述应用程序处于双开状态。
5.根据权利要求1所述的方法,其特征在于,在所述获取响应于所述开启伪指令的开启结果之前,所述方法还包括:
返回系统用户态;
所述获取响应于所述开启伪指令的开启结果,包括:
在所述系统用户态中获取所述开启结果。
6.一种应用程序状态检测装置,其特征在于,所述装置包括:
确定模块,用于确定所述应用程序的私有目录的路径;
加载模块,用于在系统内核态中加载用于开启所述私有目录的开启伪指令;
获取模块,用于获取响应于所述开启伪指令的开启结果;
判断模块,用于根据所述开启结果,判断所述应用程序是否能够开启所述私有目录,如果不能开启所述私有目录,则所述应用程序处于双开状态;
所述加载模块,用于通过加载指令,在目标寄存器中加载所述开启伪指令,并通过软中断指令,进入所述系统内核态;所述获取模块,用于获取从中断优先IP寄存器返回至所述目标寄存器的所述开启结果,所述开启结果是所述系统内核态读取所述目标寄存器中的所述开启伪指令之后存入所述中断优先IP寄存器的;
所述开启结果表征所述私有目录中通过所述伪指令可以开启的文件数目,所述判断模块,用于当所述开启结果小于0时,确定所述应用程序不能开启所述私有目录。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-5中任一项所述方法的步骤。
8.一种电子设备,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求1-5中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911206445.4A CN112883370B (zh) | 2019-11-29 | 2019-11-29 | 应用程序状态检测方法和装置、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911206445.4A CN112883370B (zh) | 2019-11-29 | 2019-11-29 | 应用程序状态检测方法和装置、存储介质和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112883370A CN112883370A (zh) | 2021-06-01 |
CN112883370B true CN112883370B (zh) | 2022-12-20 |
Family
ID=76039087
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911206445.4A Active CN112883370B (zh) | 2019-11-29 | 2019-11-29 | 应用程序状态检测方法和装置、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112883370B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114637541A (zh) * | 2022-03-22 | 2022-06-17 | 马上消费金融股份有限公司 | 运行环境确定方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103632101A (zh) * | 2013-12-09 | 2014-03-12 | 北京奇虎科技有限公司 | 一种拦截系统调用的方法和装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7681022B2 (en) * | 2006-07-25 | 2010-03-16 | Qualcomm Incorporated | Efficient interrupt return address save mechanism |
CN106339309B (zh) * | 2015-07-14 | 2020-01-31 | 腾讯科技(深圳)有限公司 | 应用程序的测试方法、客户端及系统 |
CN106354773B (zh) * | 2016-08-22 | 2020-05-01 | 北京奇虎科技有限公司 | 应用程序存储数据的方法及装置 |
CN106778243B (zh) * | 2016-11-28 | 2020-06-09 | 北京奇虎科技有限公司 | 基于虚拟机的内核漏洞检测文件保护方法及装置 |
-
2019
- 2019-11-29 CN CN201911206445.4A patent/CN112883370B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103632101A (zh) * | 2013-12-09 | 2014-03-12 | 北京奇虎科技有限公司 | 一种拦截系统调用的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112883370A (zh) | 2021-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107426169B (zh) | 一种基于权限的业务处理方法及装置 | |
US11221838B2 (en) | Hot update method, operating system, terminal device, system, and computer-readable storage medium for a system process | |
US10310992B1 (en) | Mitigation of cyber attacks by pointer obfuscation | |
KR102160916B1 (ko) | 안전한 도메인과 덜 안전한 도메인을 이용한 데이터 처리 장치 및 방법 | |
KR101760822B1 (ko) | 보안을 구현하기 위한 방법, 방화벽, 단말 및 판독가능 저장 매체 | |
KR102036411B1 (ko) | 보안 엘리먼트의 비휘발성 메모리 내로의 데이터의 로딩의 보안화 | |
CN108763951B (zh) | 一种数据的保护方法及装置 | |
KR100790602B1 (ko) | 디바이스 제어기, 디바이스 제어 방법 및 디바이스 제어프로그램이 저장된 기록 매체 | |
EP3580680B1 (en) | Device and method for reinforcing control flow integrity of software application | |
GB2552966A (en) | Methods and apparatus for protecting domains of a device from unauthorised accesses | |
CN109684795B (zh) | 应用程序反调试的方法、装置及电子设备 | |
CN110659491B (zh) | 一种计算机系统恢复方法、装置、设备及可读存储介质 | |
CN112883370B (zh) | 应用程序状态检测方法和装置、存储介质和电子设备 | |
US10628188B2 (en) | Disabling just-in-time translation for application functions | |
CN106982428B (zh) | 一种安全配置方法,安全控制装置及安全配置装置 | |
CN111222122A (zh) | 应用权限管理方法、装置及嵌入式设备 | |
US11314870B1 (en) | Auto-containment of potentially vulnerable applications | |
KR20180015723A (ko) | 보안 구역과 하위 보안 구역 사이의 전이를 위한 장치 및 방법 | |
KR101207434B1 (ko) | 이종의 디지털 문서 보호 시스템 간의 충돌 방지 시스템 및 방법 | |
CN113282363A (zh) | 一种优化混合app的方法及装置 | |
CN111522560A (zh) | 软件安装方法、装置、存储介质及电子设备 | |
CN111523115B (zh) | 信息确定方法、函数调用方法及电子设备 | |
CN103886251B (zh) | 系统加固的方法及装置 | |
CN111008375B (zh) | 一种数据保护方法及装置 | |
CN109635589B (zh) | So文件调用的方法及装置 |
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 |