文件检测方法、装置、终端及存储介质
文献发布时间:2023-06-19 11:52:33
技术领域
本申请实施例涉及终端技术领域,特别涉及一种文件检测方法、装置、终端及存储介质。
背景技术
目前,为了使应用程序更加轻量化,运行应用程序所需的部分支持文件并未封装在该应用程序的安装包中,而是存储在云端(例如该应用程序对应的后台服务器)。
相关技术中,当应用程序的运行过程中需要利用到上述被存储在云端的支持文件时,终端会从云端实时下载所需的支持文件。
发明内容
本申请实施例提供一种文件检测方法、装置、终端及存储介质。所述技术方案如下:
第一方面,提供了一种文件检测方法,所述方法包括:
接收目标应用程序传递的第一文件的存储路径;
从所述第一文件的存储路径中加载所述第一文件时,获取所述第一文件的特征值;
若不存在第二文件的特征值与所述第一文件的特征值相同,则确定所述第一文件是所述目标应用程序的运行过程中从网络中下载的文件;其中,所述第二文件是所述目标应用程序的安装包所包括的文件。第二方面,提供了一种文件检测装置,所述装置包括:
路径接收模块,用于接收目标应用程序传递的第一文件的存储路径;
特征值获取模块,用于从所述第一文件的存储路径中加载所述第一文件时,获取所述第一文件的特征值;
文件检测模块,用于若不存在第二文件的特征值与所述第一文件的特征值相同,则确定所述第一文件是所述目标应用程序的运行过程中从网络中下载的文件;其中,所述第二文件是所述目标应用程序的安装包所包括的文件。
第三方面,提供了一种终端,所述终端包括处理器和存储器,所述存储器存储有至少一条指令,所述指令由所述处理器加载并执行以实现如第一方面所述的文件检测方法。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如第一方面所述的文件检测方法。
本申请实施例提供的技术方案可以带来的有益效果至少包括:
通过在应用程序加载文件时,将加载到的文件的特征值与应用程序的安装包所包括的文件的特征值进行比对,如果应用程序的安装包所包括的文件的所有特征值与加载到的文件的特征值均不相同,则确定该加载的文件是应用程序的运行过程中从网络上下载的文件,可以实时检测出应用程序的运行过程中加载的文件是否为从网络上下载的文件,为后续的安全性检测提供基础,进而保障应用程序高效且安全地运行。
附图说明
图1是本申请一个示例性实施例示出的文件加载流程的示意图;
图2是本申请一个示例性实施例示出的文件加载流程的流程图;
图3是本申请另一个示例性实施例示出的文件加载方法的流程图;
图4是本申请一个示例性实施例示出的文件加载装置的结构框图;
图5是本申请一个示例性实施例示出的终端的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
应用程序在安装时通常经过安全性校验,因此终端本地存储的文件通常是安全的,然而应用程序的运行过程中从网络上下载的文件并未经过安全性校验,存在一定的风险。检测应用程序的运行过程中加载的文件是否是从网络中下载的文件,进而进行有针对性地安全性检测,可以保障应用程序高效且安全地运行,而相关技术并未提供这种检测方案。
本申请实施例提供的技术方案,通过在应用程序加载文件时,将加载到的文件的特征值与应用程序的安装包所包括的文件的特征值进行比对,如果应用程序的安装包所包括的文件的所有特征值与加载到的文件的特征值均不相同,则确定该加载的文件是应用程序的运行过程中从网络上下载的文件,可以实时检测出应用程序的运行过程中加载的文件是否为从网络上下载的文件,为后续的安全性检测提供基础,进而保障应用程序高效且安全地运行。
在应用程序的运行过程中,加载一个文件通常涉及应用(Java)层、服务(Native)层、内核层。本申请实施例在Native层对加载的文件进行文件检测,本次仅结合图1对Native层的各个函数的调用情况来对Native层的文件加载流程进行讲解。
步骤101,调用nativeLoad函数。
Java层的doLoad函数调用nativeLoad函数,此时文件加载流程进入Native层。
步骤102,调用LoadNativeLibrary函数。
文件加载流程进入Native层时,先由RuntimenativeLoad函数调用JVM_NativeLoad函数,之后由该JVM_NativeLoad函数调用LoadNativeLibrary函数。LoadNativeLibrary函数首先会判断动态库文件的加载情况。具体地,LoadNativeLibrary函数使用libraries->Get(path)获取library。并判断该library是否为空。若该library为空,则说明动态库文件没被加载,此时执行步骤105。
步骤103,调用FindSymbol函数。
LoadNativeLibrary函数还用于调用FindSymbol函数,
步骤104,调用JNI_OnLoad函数。
FindSymbol函数FindSymbol()函数查找JNI_OnLoad函数,如果找不到说明是静态注册,直接返回成功,否则就说明是通过JNIOnLoad动态注册的。
步骤105,调用OpenNativeLibrary函数。
OpenNativeLibrary函数用于打开动态库文件,并返回打开的动态库文件的句柄。
步骤106,调用dlOpen函数。
dlOpen函数用于加载动态库文件。具体地,其用于将库文件加载至调用进程的虚拟地址空间,以及加载动态库文件所依赖的其它动态库文件。
请参考图2,其示出了本申请一个示例性实施例示出的文件检测方法的流程图。该方法可以应用于终端中的操作系统。该方法包括如下几个步骤:
步骤201,接收目标应用程序传递的第一文件的存储路径。
第一文件是指目标应用程序的运行过程中加载的文件。可选地,第一文件可以是预设类型的文件。示例性地,第一文件是共享库(shareobject,so)文件。第一文件的存储路径也即是第一文件在终端本地的存储位置。
在本申请实施例中,由于在Java层加载第一文件时,其已经获取了第一文件的存储路径,其可以直接接收目标应用程序传递的第一文件的存储路径,而无需自行获取。
步骤202,从第一文件的存储路径加载第一文件时,获取第一文件的特征值。
目标应用程序在获取到第一文件的存储路径后,从该存储路径中加载第一文件。可选地,目标应用程序通过调用图1所示实施例中的dlOpen函数来加载第一文件。第一文件的特征值用于唯一标识第一文件。可选地,第一文件的特征值是指第一文件的哈希值,例如SHA-256-Hash值。
可选地,目标应用程序通过如下方式获取第一文件的特征值:
步骤202a,在加载第一文件时,获取目标应用程序的运行信息。
目标应用程序的运行信息用于记录目标应用程序的运行过程。目标应用程序的运行信息通常包括如下内容:堆栈信息、进程信息、库文件信息等等。
步骤202b,从运行信息中读取运行参数。
上述运行参数包括以下一种或多种的组合:堆栈信息、第一进程的进程标识、第一进程的父进程的进程标识、第一文件的存储路径。需要说明的是,第一进程是指正在运行的进程,第一进程的父进程是指创建第一进程的进程。终端通过getpid函数来获取第一进程的进程标识,以及第一进程的父进程的进程标识。第一文件的存储路径可以从路径参数中获取。
步骤202c,根据运行参数获取第一文件。
目标应用程序在获取到上述运行参数后,可以唯一获取该第一文件。
步骤202d,计算第一文件的特征值。
终端读取第一文件的正文内容,之后采用预设函数对第一文件进行处理,得到第一文件的特征值。上述预设函数可以是哈希函数。哈希函数将第一文件的正文内容压缩成摘要,该摘要可以使第一文件区别于其他文件,该摘要也即是第一文件的哈希值。
步骤203,若不存在第二文件的特征值与第一文件的特征值相同,则确定第一文件是目标应用程序的运行过程中从网络中下载的文件。
第二文件是目标应用程序的安装包所包括的文件。目标应用程序是终端正在运行的应用程序,其可以是系统应用程序,也可以是第三方应用程序。由于系统应用程序通常是可以信任的,因此在本申请实施例中,仅以目标应用程序是第三方应用程序为例进行说明。
若存在第二文件的特征值与第一文件的特征值相同,则确定第一文件不是目标应用程序的运行过程中从网络中下载的文件,而是目标应用程序的安装包所包括的文件。
在本申请实施例中,在应用程序的运行过程中加载文件(通过dlOpen函数加载文件)时,添加监控以获取该文件的特征值,通过比对该文件的特征值与应用程序的安装包所包括的文件的特征值进行比对,以检测该文件是否是从网络中下载的文件,以便进行后续的安全性校验。
可选地,终端检测预设的特征值列表中是否包括第一文件的特征值。若预设的特征值列表包括第一文件的特征值,则确定存在第二文件的特征值与第一文件的特征值相同;若预设的特征值列表中不包括第一文件的特征值,则确定不存在第二文件的特征值与第一文件的特征值相同。
预设的特征值列表包括第二文件的特征值。预设的特征值列表可以包括一个应用程序的安装包所包括的文件的特征值,也可以包括多个应用程序的安装包所包括的文件的特征值。当预设的特征值列表包括一个应用程序的安装包所包括的文件的特征值时,终端先获取与目标应用程序相对应的预设的特征值列表,之后检测与目标应用程序相对应的预设的特征值列表是否包括第一文件的特征值。
综上所述,本申请实施例提供的技术方案,通过在应用程序加载文件时,将加载到的文件的特征值与应用程序的安装包所包括的文件的特征值进行比对,如果应用程序的安装包所包括的文件的所有特征值与加载到的文件的特征值均不相同,则确定该加载的文件是应用程序的运行过程中从网络上下载的文件,可以实时检测出应用程序的运行过程中加载的文件是否为从网络上下载的文件,为后续的安全性检测提供基础,进而保障应用程序高效且安全地运行。
在上文实施例中提到,通过比对第一文件的特征值是否存在于预设的特征值列表中,来确定第一文件是否是目标应用程序的运行过程中从网络中下载的文件。下面对预设的特征值列表的获取过程进行讲解。在基于图2所示实施例提供的可选实施例中,在步骤203之前,该文件检测方法还包括如下步骤。
步骤204,在安装目标应用程序时,从目标应用程序的安装包所包括的指定文件读取第二文件的特征值。
目标应用程序的安装包中存在指定文件,该指定文件用于记录目标应用程序的安装包所包括的文件的特征值。可选地,指定文件是MANIFEST.MF文件。
可选地,在安装目标应用程序时,通过调用预设函数来从目标应用程序的安装包所包括的指定文件读取第二文件的特征值。可选地,该预设函数为getminpackageinfo函数。
步骤205,将第二文件的特征值存储至预设的特征值列表中。
终端将读取到的第二文件的特征值添加至预设的特征值列表中。在步骤201中介绍到,终端可以通过getminpackageinfo函数来读取第二文件的特征值,开发人员可以在getminpackageinfo函数中添加用于实现写功能的代码,通过写功能来将第二文件的特征值存储至预设的特征值列表中,以节省开发成本。
在图2实施例中提到,预设的特征值列表可以包括一个应用程序的安装包所包括的文件的特征值,也可以包括多个应用程序的安装包所包括的文件的特征值。当预设的特征值列表包括一个应用程序的安装包所包括的文件的特征值,该情况下,预设的特征值列表通常存在多个。当预设的特征值列表包括多个应用程序的安装包所包括的文件的特征值,该情况下,预设的特征值列表通常存在一个。
压缩文件是指经过压缩软件压缩的文件,压缩软件查找原始文件内的重复字节,并建立一个相同字节的“词典”文件,并采用一个代码来替代该重复字节,进而得到压缩文件。压缩文件可以是后缀名为jar的文件,也可以是后缀名为apk的文件,还可以是后缀名为zip的文件。
由于压缩文件与原始文件的正文内容存在区别,因此二者对应的特征值也不相同。当应用程序的安装包中包括压缩文件时,其指定文件通常不记录该压缩文件的特征值。为了使预设的特征值列表所记录的特征值更为全面,该文件检测方法还可以包括如下步骤:
步骤206,在安装目标应用程序时,若目标应用程序的安装包包括压缩文件,则对压缩文件进行解压缩处理,得到第三文件。
解压缩处理是压缩处理的逆过程,也即将压缩文件还原成原始文件。在本申请实施例中,终端对目标应用程序的安装包中的压缩文件进行解压缩处理,得到第三文件。
当压缩文件为后缀名为jar或者apk的文件时,对其进行解压缩处理,可以得到多个文件,该多个文件中也包括用于记录该压缩文件所包括的文件的特征值的指定文件(例如MANIFEST.MF文件);当压缩文件为后缀名为zip的文件时,对其进行解压缩处理,仅得到一个文件,而无法得到用于记录该文件的特征值的指定文件。
步骤207,获取第三文件的特征值,并将第三文件的特征值存储至预设的特征值列表。
当压缩文件为后缀名为jar或者apk的文件时,可以直接从步骤206中提到的指定文件中读取第三文件的特征值;当压缩文件为后缀名为zip的文件时,则可以参考步骤202中的方法计算第三文件的特征值。将第三文件的特征值存储至预设的特征值列表可以参考步骤302,此处不作赘述。
本申请实施例提供的技术方案,通过在安装应用程序时读取应用程序的安装包所包括的文件的特征值并进行记录,以使得在加载文件时可以将加载到的文件的特征值与记录的特征值进行比对,进而确定该加载的文件是应用程序的运行过程中从网络上下载的文件,为后续的文件检测提供数据支持。
在一个具体的例子中,结合参考图3,其示出了本申请一个实施例示出的文件检测方法的示意图。该文件检测方法可以包括如下步骤:
步骤301,安装应用程序。
步骤302,在安装应用程序时存储应用程序的安装包所包括的文件的特征值。
应用程序的安装包所包括的文件的特征值也即是应用程序所包括的MANIFEST.MF文件。
步骤303,加载第一文件。
其中,加载第一文件涉及到Java层、Native层和内核层。
步骤304,在Native层加载第一文件时获取第一文件的存储路径。
步骤305,计算第一文件的特征值。
步骤306,根据应用程序的安装包所包括的文件的特征值和第一文件的特征值,检测第一文件是否为从网络中下载的文件。
由于目标应用程序的运行过程中从网络中下载的文件并未经过安全性检测,因此可能存在一定的风险。为了避免该风险,终端在确定第一文件为目标应用程序的运行过程中从网络中下载的文件后,可以对第一文件的安全性进行检测。在基于图2所示实施例提供的可选实施例中,该文件检测方法还可以包括如下步骤:
步骤401,对第一文件进行检测,确定第一文件的安全级别。
第一文件的安全级别用于衡量第一文件的安全性。安全级别与安全性之间呈正相关关系。也即,第一文件的安全级别越高,则第一文件的安全性越高;第一文件的安全级别越低,则第一文件的安全性越低。
可选地,终端先确定第一文件的安全得分,之后将该安全得分所处的得分区间对应的安全级别确定为第一文件的安全级别。其中,安全得分可以通过如下方式计算得到:终端从至少一个维度对第一文件进行检测,并根据每个维度对应的检测结果得到每个维度对应的安全得分,之后对各个维度对应的安全得分进行加权,得到第一文件的安全得分。
上述多个维度可以是:检测第一文件是否加壳、检测第一文件是否携带敏感函数、检测第一文件是否携带恶意程序等等。
文件加壳是指对可执行二进制文件进行压缩,加壳后的文件无需解压缩即可直接运行。某些病毒文件经过加壳后,其无法被杀毒软件识别,因此存在较大的安全隐患。若第一文件敏感函数是指能够具有指定功能的函数,该指定可能可以是查看、获取、使用敏感信息等等。恶意程序是指能够实现恶意功能的程序代码,该恶意功能可以是发短信功能、打开数据网络等功能,本申请实施例对此不作限定。
步骤402,当第一文件的安全级别符合预设条件时,将第一文件加载至第二进程的虚拟地址空间。
可选地,预设条件可以是第一文件的安全级别达到预设级别,上述预设级别可以由用户设定,也可以由终端自定义设定。第二进程是指调用进程。
在本申请实施例中,当终端检测出第一文件的安全级别符合预设条件时,也即确认出第一文件为安全文件时,执行后续的文件加载步骤,可以避免在第一文件为恶意文件时运行第一文件的情况发生,提高安全性。
综上所述,本申请实施例提供的技术方案,通过在确定出第一文件是应用程序的运行过程中从网络中下载的文件后对其进行检测,并在确定出第一文件安全的情况下执行后续流程,避免在第一文件为恶意文件时运行第一文件的情况发生,提高安全性。
终端用户给不同应用程序授予了不同的权限。其中,部分应用程序具有敏感权限,例如信息权限、通讯录权限、通话记录权限等等。对于该类应用程序,其存在的安全隐患较大,因此检测该类应用程序的运行过程中加载的文件是否是从网络上下载文件更加必要。在基于图2所示实施例提供的一个可选实施例中,在获取第一文件的特征值之前,该文件检测方法还包括:
步骤403,从第一文件的存储路径中加载第一文件时,检测目标应用程序是否具有敏感权限。
敏感权限是指访问敏感信息的权限。上述敏感信息包括但不限于:位置信息、通讯录信息、通话信息、短信内容、相册内容等等。上述敏感权限包括但不限于:位置信息权限、麦克风权限、通讯录权限、信息权限、通话记录权限、相机权限等等。敏感权限可以由用户预先设定,也可以由终端默认设定。
可选地,终端存储有权限与应用程序之间的对应关系,终端查询该对应关系得到具有敏感权限的应用程序列表,之后检测该应用程序列表中是否包括目标应用程序。若该应用程序列表中包括目标应用程序,则确定目标应用程序具有敏感权限;若该应用程序列表中不包括目标应用程序,则确定目标应用程序不具有敏感权限。
若检测出目标应用程序具有敏感权限,则获取第一文件的特征值,若检测出目标应用程序不具有敏感权限,则结束流程。
具有敏感权限的应用程序能够获取终端用户的敏感信息,当其存在安全隐患时,终端用户的敏感信息可能会泄露;而不具有敏感权限的应用程序存在安全隐患时不会导致敏感信息泄露的情况发生。因此在本申请实施例中,仅检测具有敏感权限的应用程序的运行过程中加载的文件是否为从网络上下载的文件,避免终端对每个应用程序都进行检测,在保障安全性的前提下,可以节省终端的处理资源。
综上所述,本申请实施例提供的技术方案,通过检测具有敏感权限的应用程序的运行过程中加载的文件是否为从网络上下载的文件,避免终端对每个应用程序都进行检测,在保障安全性的前提下,可以节省终端的处理资源。
以下为本申请装置实施例,对于装置实施例中未详细阐述的部分,可以参考上述方法实施例中公开的技术细节。
请参考图4,其示出了本申请一个示例性实施例提供的文件检测装置的框图。该文件检测装置可以通过软件、硬件或者两者的组合实现成为终端的全部或一部分。该文件检测装置包括:
路径接收模块410,用于接收目标应用程序传递的第一文件的存储路径。
特征值获取模块420,用于从所述第一文件的存储路径中加载所述第一文件时,获取所述第一文件的特征值。
文件检测模块430,用于若不存在第二文件的特征值与所述第一文件的特征值相同,则确定所述第一文件是所述目标应用程序的运行过程中从网络中下载的文件;其中,所述第二文件是所述目标应用程序的安装包所包括的文件。
综上所述,本申请实施例提供的技术方案,通过在应用程序加载文件时,将加载到的文件的特征值与应用程序的安装包所包括的文件的特征值进行比对,如果应用程序的安装包所包括的文件的所有特征值与加载到的文件的特征值均不相同,则确定该加载的文件是应用程序的运行过程中从网络上下载的文件,可以实时检测出应用程序的运行过程中加载的文件是否为从网络上下载的文件,为后续的安全性检测提供基础,进而保障应用程序高效且安全地运行。
在基于图4所示实施例提供的可选实施例中,所述特征值获取模块420,用于:
在加载所述第一文件时,获取所述目标应用程序的运行信息;
从所述运行信息中读取运行参数,所述运行参数包括以下一项或多项的组合:目标进程的进程标识、所述目标进程的父进程的进程标识、所述第一文件的存储路径;
根据所述运行参数获取所述第一文件;
计算所述第一文件的特征值。
在基于图4所示实施例提供的一个可选实施例中,所述文件检测模块430,还用于:
检测预设的特征值列表中是否包括所述第一文件的特征值,所述预设的特征值列表包括所述第二文件的特征值;
若所述预设的特征值列表中包括所述第一文件的特征值,则确定存在所述第二文件的特征值与所述第一文件的特征值相同;
若所述预设的特征值列表中不包括所述第一文件的特征值,则确定不存在所述第二文件的特征值与所述第一文件的特征值相同。
可选地,所述装置还包括:特征值存储模块(图中未示出)。
所述特征值存储模块,用于:
在安装所述目标应用程序时,从所述目标应用程序的安装包所包括的指定文件中读取所述第二文件的特征值;
将所述第二文件的特征值存储至所述预设的特征值列表。
可选地,所述特征值存储模块,还用于:
在安装所述目标应用程序时,若所述目标应用程序的安装包包括压缩文件,则对所述压缩文件进行解压缩处理,得到第三文件;
获取所述第三文件的特征值,并将所述第三文件的特征值存储至所述预设的特征值列表。
在基于图4所示实施例提供的一个可选实施例中,所述装置还包括:安全性检测模块(图中未示出)。
所述安全性检测模块,用于:
对所述第一文件进行检测,确定所述第一文件的安全级别;
当所述第一文件的安全级别符合预设条件时,将所述第一文件加载至第二进程的虚拟地址空间。
在基于图4所示实施例提供的一个可选实施例中,所述装置还包括:权限检测模块(图中未示出)。
所述权限检测模块,用于:
检测所述目标应用程序是否具有敏感权限,所述敏感权限是指访问敏感信息的权限;
若所述目标应用程序具有所述敏感权限,则执行所述获取所述第一文件的特征值的步骤。
需要说明的是,上述实施例提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
参考图5,其示出了本申请一个示例性实施例提供的终端的结构方框图。本申请中的终端可以包括一个或多个如下部件:处理器510和存储器520。
处理器510可以包括一个或者多个处理核心。处理器510利用各种接口和线路连接整个终端内的各个部分,通过运行或执行存储在存储器520内的指令、程序、代码集或指令集,以及调用存储在存储器520内的数据,执行终端的各种功能和处理数据。可选地,处理器510可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器510可集成中央处理器(CentralProcessing Unit,CPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统和应用程序等;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器510中,单独通过一块芯片进行实现。
可选地,处理器510执行存储器520中的程序指令时实现下上述各个方法实施例提供的文件检测方法。
存储器520可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory,ROM)。可选地,该存储器520包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器520可用于存储指令、程序、代码、代码集或指令集。存储器520可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令、用于实现上述各个方法实施例的指令等;存储数据区可存储根据终端的使用所创建的数据等。
上述终端的结构仅是示意性的,在实际实现时,终端可以包括更多或更少的组件,比如:摄像头等,本实施例对此不作限定。
本领域技术人员可以理解,图5中示出的结构并不构成对终端500的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在示例性实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令,所述至少一条指令由终端的处理器加载并执行以实现上述方法实施例中的文件检测方法。可选地,上述计算机可读存储介质可以是ROM、RAM、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,当该计算机程序产品被执行时,其用于实现上述方法实施例中提供的文件检测方法。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本文中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
- 交互文件检测方法、装置、终端及存储介质
- 文件检测方法、装置、终端及存储介质