CN114896590A - 应用程序的检测方法、系统、装置和计算机设备 - Google Patents
应用程序的检测方法、系统、装置和计算机设备 Download PDFInfo
- Publication number
- CN114896590A CN114896590A CN202210512966.8A CN202210512966A CN114896590A CN 114896590 A CN114896590 A CN 114896590A CN 202210512966 A CN202210512966 A CN 202210512966A CN 114896590 A CN114896590 A CN 114896590A
- Authority
- CN
- China
- Prior art keywords
- actual
- module
- function
- application program
- attribute information
- 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.)
- Pending
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
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)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种应用程序的检测方法、系统、装置、计算机设备、存储介质和计算机程序产品,涉及信息安全技术领域。该方法应用于被检测端,包括:响应于检测端发送的针对应用程序的检测请求,对应用程序进行插桩,获得加载模块的实际模块属性信息和调用函数的实际函数属性信息;其中,加载模块为应用程序运行时需加载的模块,调用函数为加载模块执行时需调用的函数;将实际模块属性信息和实际函数属性信息作为响应数据,发送至检测端,以指示检测端根据实际模块属性信息和实际函数属性信息,确定应用程序的检测结果。采用本方法能够提高应用程序的检测准确性,从而提高应用程序运行的安全性。
Description
技术领域
本申请涉及信息安全技术领域,特别是涉及一种应用程序的检测方法、系统、装置、计算机设备、存储介质和计算机程序产品。
背景技术
在应用程序开发阶段,采用模块化方式,使应用程序由多个模块构成,从而令开发人员能够复用模块,以降低开发工作量。模块是由完成某特定功能的函数组成。应用程序运行的过程,也可以看作是一系列函数的调用过程。为了保证应用程序的运行安全,需对应用程序进行检测,以识别出应用程序是否被恶意攻击。
传统技术中,应用程序的检测方法为先对应用程序进行静态度量,得到应用程序对应的静态的程序校验值,然后根据该静态的程序校验值确定应用程序的检测结果。
然而,采用传统技术,仅通过静态的程序校验值进行检测,检测维度较为单一,导致检测的准确性较低,不利于应用程序运行的安全性。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高应用程序检测准确性的应用程序的检测方法、系统、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种应用程序的检测方法。所述方法应用于被检测端,包括:
响应于检测端发送的针对应用程序的检测请求,对所述应用程序进行插桩,获得加载模块的实际模块属性信息和调用函数的实际函数属性信息;其中,所述加载模块为所述应用程序运行时需加载的模块,所述调用函数为所述加载模块执行时需调用的函数;
将所述实际模块属性信息和所述实际函数属性信息作为响应数据,发送至所述检测端,以指示所述检测端根据所述实际模块属性信息和所述实际函数属性信息,确定所述应用程序的检测结果。
在其中一个实施例中,所述对所述应用程序进行插桩,获得加载模块的实际模块属性信息和调用函数的实际函数属性信息,包括:
对所述应用程序中的加载模块进行插桩,得到加载模块的实际加载路径和加载模块对应的实际模块校验值;
对所述加载模块中的调用函数进行插桩,得到调用函数的实际起始地址和调用函数的实际函数名称。
在其中一个实施例中,所述方法还包括:
响应于检测端发送的针对应用程序的检测请求,对所述应用程序进行静态度量,得到所述应用程序对应的实际程序校验值;
所述将所述实际模块属性信息和所述实际函数属性信息作为响应数据,发送至所述检测端,以指示所述检测端根据所述实际模块属性信息和所述实际函数属性信息,确定所述应用程序的检测结果,包括:
将所述实际模块属性信息、所述实际函数属性信息和所述实际程序校验值作为响应数据,发送至所述检测端,以指示所述检测端根据所述实际模块属性信息、所述实际函数属性信息和所述实际程序校验值,确定所述应用程序的检测结果。
第二方面,本申请提供了一种应用程序的检测方法。所述方法应用于检测端,包括:
向被检测端发送针对应用程序的检测请求;
接收所述被检测端针对所述检测请求返回的响应数据;其中,所述响应数据包括加载模块的实际模块属性信息和调用函数的实际函数属性信息;所述加载模块为所述应用程序运行时需加载的模块,所述调用函数为所述加载模块执行时需调用的函数;
根据所述响应数据,确定所述应用程序的检测结果。
在其中一个实施例中,所述根据所述响应数据,确定所述应用程序的检测结果,包括:
提取所述实际模块属性信息中的加载模块的实际加载路径和加载模块对应的实际模块校验值;
若所述实际加载路径与预设的加载模块的标准加载路径不一致,则确定所述应用程序的检测结果为第一检测结果;其中,所述第一检测结果表示应用程序的库文件被篡改;
若所述实际模块校验值与预设的加载模块对应的标准模块校验值不一致,则确定所述应用程序的检测结果为第一检测结果。
在其中一个实施例中,所述根据所述响应数据,确定所述应用程序的检测结果,包括:
提取所述实际模块属性信息中的加载模块的实际加载路径,以及提取所述实际函数属性信息中的调用函数的实际起始地址和调用函数的实际函数名称;
根据所述实际加载路径和所述实际起始地址,确定调用函数的实际偏移地址和调用函数所属的加载模块的实际模块名称;
对所述实际偏移地址、所述实际函数名称和所述实际模块名称进行哈希计算,得到所述函数调用路径对应的实际路径度量值;其中,所述函数调用路径与所述应用程序相对应;
若所述实际路径度量值与预设的函数调用路径对应的标准路径度量值不一致,则确定所述应用程序的检测结果为第二检测结果;其中,所述第二检测结果表示应用程序在运行过程中控制流被劫持。
在其中一个实施例中,所述调用函数为多个并构成调用函数序列;
所述对所述实际偏移地址、所述实际函数名称和所述实际模块名称进行哈希计算,得到所述函数调用路径对应的实际路径度量值,包括:
针对所述调用函数序列中的首个调用函数,对所述首个调用函数的实际偏移地址、所述首个调用函数的实际函数名称、所述首个调用函数所属的加载模块的实际模块名称和初始路径度量值进行哈希计算,得到首个调用函数对应的路径度量值;
针对所述调用函数序列中的非首个调用函数,对下一个调用函数的实际偏移地址、所述下一个调用函数的实际函数名称、所述下一个调用函数所属的加载模块的实际模块名称和上一个调用函数对应的路径度量值进行哈希计算,得到下一个调用函数对应的路径度量值;
将所述调用函数序列中最后一个调用函数对应的路径度量值,确定为所述函数调用路径对应的实际路径度量值。
在其中一个实施例中,所述响应数据还包括所述应用程序对应的实际程序校验值;
所述根据所述响应数据,确定所述应用程序的检测结果,包括:
若所述实际程序校验值与预设的应用程序对应的标准程序校验值不一致,则确定所述应用程序的检测结果为第三检测结果;其中,所述第三检测结果表示应用程序被篡改。
第三方面,本申请提供了一种应用程序的检测系统。所述系统包括检测端和被检测端,其中,
所述检测端,用于向被检测端发送针对应用程序的检测请求;
所述被检测端,用于响应于所述检测请求,对所述应用程序进行插桩,获得加载模块的实际模块属性信息和调用函数的实际函数属性信息;其中,所述加载模块为所述应用程序运行时需加载的模块,所述调用函数为所述加载模块执行时需调用的函数;
所述被检测端,还用于将所述实际模块属性信息和所述实际函数属性信息作为响应数据,发送至所述检测端;
所述检测端,还用于根据所述响应数据,确定所述应用程序的检测结果。
第四方面,本申请还提供了一种应用程序的检测装置。所述装置用于被检测端中,包括:
属性获取模块,用于响应于检测端发送的针对应用程序的检测请求,对所述应用程序进行插桩,获得加载模块的实际模块属性信息和调用函数的实际函数属性信息;其中,所述加载模块为所述应用程序运行时需加载的模块,所述调用函数为所述加载模块执行时需调用的函数;
响应发送模块,用于将所述实际模块属性信息和所述实际函数属性信息作为响应数据,发送至所述检测端,以指示所述检测端根据所述实际模块属性信息和所述实际函数属性信息,确定所述应用程序的检测结果。
第六方面,本申请还提供了一种应用程序的检测装置。所述装置用于检测端中,包括:
请求发送模块,用于向被检测端发送针对应用程序的检测请求;
数据接收模块,用于接收所述被检测端针对所述检测请求返回的响应数据;其中,所述响应数据包括加载模块的实际模块属性信息和调用函数的实际函数属性信息;所述加载模块为所述应用程序运行时需加载的模块,所述调用函数为所述加载模块执行时需调用的函数;
结果确定模块,用于根据所述响应数据,确定所述应用程序的检测结果。
第七方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
响应于检测端发送的针对应用程序的检测请求,对所述应用程序进行插桩,获得加载模块的实际模块属性信息和调用函数的实际函数属性信息;其中,所述加载模块为所述应用程序运行时需加载的模块,所述调用函数为所述加载模块执行时需调用的函数;
将所述实际模块属性信息和所述实际函数属性信息作为响应数据,发送至所述检测端,以指示所述检测端根据所述实际模块属性信息和所述实际函数属性信息,确定所述应用程序的检测结果。
第八方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
响应于检测端发送的针对应用程序的检测请求,对所述应用程序进行插桩,获得加载模块的实际模块属性信息和调用函数的实际函数属性信息;其中,所述加载模块为所述应用程序运行时需加载的模块,所述调用函数为所述加载模块执行时需调用的函数;
将所述实际模块属性信息和所述实际函数属性信息作为响应数据,发送至所述检测端,以指示所述检测端根据所述实际模块属性信息和所述实际函数属性信息,确定所述应用程序的检测结果。
第九方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
响应于检测端发送的针对应用程序的检测请求,对所述应用程序进行插桩,获得加载模块的实际模块属性信息和调用函数的实际函数属性信息;其中,所述加载模块为所述应用程序运行时需加载的模块,所述调用函数为所述加载模块执行时需调用的函数;
将所述实际模块属性信息和所述实际函数属性信息作为响应数据,发送至所述检测端,以指示所述检测端根据所述实际模块属性信息和所述实际函数属性信息,确定所述应用程序的检测结果。
上述应用程序的检测方法、系统、装置、计算机设备、存储介质和计算机程序产品,检测端向被检测端发送针对应用程序的检测请求。被检测端响应于该检测请求,对应用程序进行插桩,获得加载模块的实际模块属性信息和调用函数的实际函数属性信息。该加载模块为应用程序运行时需加载的模块,该调用函数为加载模块执行时需调用的函数。之后,被检测端将加载模块的实际模块属性信息和调用函数的实际函数属性信息发送至检测端。检测端根据该加载模块的实际模块属性信息和调用函数的实际函数属性信息,确定应用程序的检测结果。可以理解,本申请采用插桩方式动态地获得应用程序运行时对应的加载模块的实际模块属性信息和调用函数的实际函数属性信息,进而基于该多维度的检测信息来完成应用程序的检测。由于该方式采用的检测信息的种类较多,因而可通过更多维度因素来检测应用程序是否被恶意攻击,因此有利于提高应用程序的检测准确性,从而提高应用程序运行的安全性。
附图说明
图1为一个实施例中应用程序的检测方法的应用环境图;
图2为一个实施例中应用程序的检测方法的流程示意图;
图3为另一个实施例中应用程序的检测方法的流程示意图;
图4为一个实施例中计算函数调用路径对应的实际路径度量值的示意图;
图5为一个实施例中函数调用路径的示意图;
图6为一个实施例中应用程序的检测装置的结构框图;
图7为另一个实施例中应用程序的检测装置的结构框图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的应用程序的检测方法,可以应用于如图1所示的应用环境中。其中,检测端102通过网络与被检测端104进行通信。具体地,检测端102向被检测端104发送针对应用程序的检测请求。被检测端104响应于检测请求,对应用程序进行插桩,获得加载模块的实际模块属性信息和调用函数的实际函数属性信息。加载模块为应用程序运行时需加载的模块,调用函数为加载模块执行时需调用的函数。被检测端104将实际模块属性信息和实际函数属性信息作为响应数据发送至检测端102。检测端102根据响应数据,确定应用程序的检测结果。
其中,检测端102和被检测端104可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。
在一个实施例中,如图2所示,提供了一种应用程序的检测方法,以该方法应用于图1中的被检测端104为例进行说明,包括以下步骤:
步骤S202,响应于检测端发送的针对应用程序的检测请求,对应用程序进行插桩,获得加载模块的实际模块属性信息和调用函数的实际函数属性信息。
其中,加载模块为应用程序运行时需加载的模块。调用函数为加载模块执行时需调用的函数。
具体而言,检测端向被检测端发送针对应用程序的检测请求。被检测端响应于该检测请求,对应用程序基于模块级别和函数级别进行插桩,动态地获得加载模块的实际模块属性信息和调用函数的实际函数属性信息。可选地,该实际模块属性信息包括加载模块的实际模块名称、加载模块的低地址、加载模块的高地址、加载模块的实际加载路径和加载模块对应的实际模块校验值。该实际函数属性信息包括调用函数的实际函数名称、调用函数的函数参数、调用函数的实际起始地址和调用函数的返回地址。
步骤S204,将实际模块属性信息和实际函数属性信息作为响应数据,发送至检测端,以指示检测端根据实际模块属性信息和实际函数属性信息,确定应用程序的检测结果。
具体而言,被检测端将实际模块属性信息和实际函数属性信息作为响应数据发送至检测端。检测端根据实际模块属性信息和实际函数属性信息,确定应用程序的检测结果。可选地,检测端通过判断实际模块属性信息和预设的加载模块的标准模块属性信息是否一致、以及实际函数属性信息和预设的调用函数的标准函数属性信息是否一致,来确定应用程序的检测结果。
上述应用程序的检测方法中,检测端向被检测端发送针对应用程序的检测请求。被检测端响应于该检测请求,对应用程序进行插桩,获得加载模块的实际模块属性信息和调用函数的实际函数属性信息。该加载模块为应用程序运行时需加载的模块,该调用函数为加载模块执行时需调用的函数。之后,被检测端将加载模块的实际模块属性信息和调用函数的实际函数属性信息发送至检测端。检测端根据该加载模块的实际模块属性信息和调用函数的实际函数属性信息,确定应用程序的检测结果。可以理解,本方法采用插桩方式动态地获得应用程序运行时对应的加载模块的实际模块属性信息和调用函数的实际函数属性信息,进而基于该多维度的检测信息来完成应用程序的检测。由于该方式采用的检测信息的种类较多,因而可通过更多维度因素来检测应用程序是否被恶意攻击,因此有利于提高应用程序的检测准确性,从而提高应用程序运行的安全性。
在一个实施例中,步骤S202包括以下步骤:
步骤S2022,对应用程序中的加载模块进行插桩,得到加载模块的实际加载路径和加载模块对应的实际模块校验值;
步骤S2024,对加载模块中的调用函数进行插桩,得到调用函数的实际起始地址和调用函数的实际函数名称。
具体而言,被检测端通过动态插桩工具对应用程序中的加载模块进行插桩,得到加载模块的实际加载路径和加载模块对应的实际模块校验值。可选地,在应用程序加载到内存中运行时,被检测端通过动态插桩工具基于模块级别,对应用程序中的加载模块进行插桩,得到应用程序运行时需加载的模块序列中各加载模块的实际模块属性信息。
被检测端通过动态插桩工具对加载模块中的调用函数进行插桩,得到调用函数的实际起始地址和调用函数的实际函数名称。可选地,在应用程序加载到内存中运行时,被检测端通过动态插桩工具基于函数级别,对加载模块中的调用函数进行插桩,得到加载模块执行时需调用的函数序列中各调用函数的实际函数属性信息。可选地,被检测端根据插桩位置,在应用程序调用函数前,对函数进行分析,获得调用函数的实际函数名称、调用函数的函数参数和调用函数的实际起始地址。被检测端根据插桩位置,在应用程序调用函数后,对函数进行分析,获得调用函数的返回地址。
本实施例中,基于模块级别和函数级别对应用程序进行插桩,可准确地获得应用程序运行时加载模块的实际模块属性信息和调用函数的实际函数属性信息,进而有利于提高后续检测的准确性。
在一个实施例中,该方法还包括以下步骤:
步骤S203,响应于检测端发送的针对应用程序的检测请求,对应用程序进行静态度量,得到应用程序对应的实际程序校验值。
具体而言,被检测端接收到检测端发送的针对应用程序的检测请求后,一方面,被检测端对应用程序进行静态度量,得到应用程序对应的实际程序校验值。可选地,被检测端计算应用程序的哈希值,将该哈希值确定为应用程序对应的实际程序校验值。另一方面,被检测端对应用程序进行插桩,获得加载模块的实际模块属性信息和调用函数的实际函数属性信息。
进一步地,步骤S204包括以下步骤:
步骤S2042,将实际模块属性信息、实际函数属性信息和实际程序校验值作为响应数据,发送至检测端,以指示检测端根据实际模块属性信息、实际函数属性信息和实际程序校验值,确定应用程序的检测结果。
具体而言,被检测端将实际模块属性信息、实际函数属性信息和实际程序校验值作为响应数据发送至检测端。检测端根据实际模块属性信息、实际函数属性信息和实际程序校验值,确定应用程序的检测结果。可选地,检测端通过判断实际模块属性信息和预设的加载模块的标准模块属性信息是否一致、实际函数属性信息和预设的调用函数的标准函数属性信息是否一致,以及实际程序校验值和应用程序对应的标准程序校验值是否一致,来确定应用程序的检测结果。
本实施例中,基于实际模块属性信息、实际函数属性信息和实际程序校验值来完成应用程序的检测,检测维度更多,进一步提高了检测的准确性。
在一个实施例中,如图3所示,提供了一种应用程序的检测方法,以该方法应用于图1中的检测端102为例进行说明,包括以下步骤:
步骤S302,向被检测端发送针对应用程序的检测请求。
具体而言,检测端向被检测端发送针对应用程序的检测请求。
步骤S304,接收被检测端针对检测请求返回的响应数据。
其中,响应数据包括加载模块的实际模块属性信息和调用函数的实际函数属性信息。加载模块为应用程序运行时需加载的模块。调用函数为加载模块执行时需调用的函数。
具体而言,被检测端响应于检测请求,对应用程序基于模块级别和函数级别进行插桩,动态地获得加载模块的实际模块属性信息和调用函数的实际函数属性信息,并将实际模块属性信息和实际函数属性信息作为响应数据发送至检测端。可选地,被检测端将实际模块属性信息和实际函数属性信息分别记录在指定跟踪文件image.out与trace.out中,并将该指定跟踪文件image.out与trace.out发送至检测端。检测端接收被检测端返回的响应数据。
步骤S306,根据响应数据,确定应用程序的检测结果。
具体而言,检测端根据实际模块属性信息和实际函数属性信息,确定应用程序的检测结果。可选地,检测端通过判断实际模块属性信息和预设的加载模块的标准模块属性信息是否一致、以及实际函数属性信息和预设的调用函数的标准函数属性信息是否一致,来确定应用程序的检测结果。
上述应用程序的检测方法中,检测端向被检测端发送针对应用程序的检测请求。被检测端响应于该检测请求,对应用程序进行插桩,获得加载模块的实际模块属性信息和调用函数的实际函数属性信息。该加载模块为应用程序运行时需加载的模块,该调用函数为加载模块执行时需调用的函数。之后,被检测端将加载模块的实际模块属性信息和调用函数的实际函数属性信息发送至检测端。检测端根据该加载模块的实际模块属性信息和调用函数的实际函数属性信息,确定应用程序的检测结果。可以理解,本方法采用插桩方式动态地获得应用程序运行时对应的加载模块的实际模块属性信息和调用函数的实际函数属性信息,进而基于该多维度的检测信息来完成应用程序的检测。由于该方式采用的检测信息的种类较多,因而可通过更多维度因素来检测应用程序是否被恶意攻击,因此有利于提高应用程序的检测准确性,从而提高应用程序运行的安全性。
在一个实施例中,步骤S306包括以下步骤:
步骤S3062,提取实际模块属性信息中的加载模块的实际加载路径和加载模块对应的实际模块校验值;
步骤S3064,若实际加载路径与预设的加载模块的标准加载路径不一致,则确定应用程序的检测结果为第一检测结果;
步骤S3066,若实际模块校验值与预设的加载模块对应的标准模块校验值不一致,则确定应用程序的检测结果为第一检测结果。
其中,第一检测结果表示应用程序的库文件被篡改或发生库文件劫持攻击。
具体而言,检测端遍历指定跟踪文件image.out中的每一条记录,提取实际模块属性信息中的加载模块的实际加载路径和加载模块对应的实际模块校验值,并与存储在数据库中的预设的加载模块的标准加载路径和加载模块对应的标准模块校验值进行匹配。若实际加载路径与预设的加载模块的标准加载路径不一致,则检测端确定应用程序的检测结果为第一检测结果;若实际加载路径与预设的加载模块的标准加载路径一致,则检测端确定应用程序未受到恶意攻击。若实际模块校验值与预设的加载模块对应的标准模块校验值不一致,则检测端确定应用程序的检测结果为第一检测结果。若实际模块校验值与预设的加载模块对应的标准模块校验值一致,则检测端确定应用程序未受到恶意攻击。之后,检测端可将第一检测结果以可视化方式展示。
本实施例中,采用白名单思想验证度量值与标准值是否一致,是一种主动检测方法,既能够解决指令插桩分析方法给嵌入式设备造成的空间与性能开销问题,降低检测工作量,也能有效应对未知攻击类型。
在一个实施例中,步骤S306包括以下步骤:
步骤S3061,提取实际模块属性信息中的加载模块的实际加载路径,以及提取实际函数属性信息中的调用函数的实际起始地址和调用函数的实际函数名称;
步骤S3063,根据实际加载路径和实际起始地址,确定调用函数的实际偏移地址和调用函数所属的加载模块的实际模块名称;
步骤S3065,对实际偏移地址、实际函数名称和实际模块名称进行哈希计算,得到函数调用路径对应的实际路径度量值;
步骤S3067,若实际路径度量值与预设的函数调用路径对应的标准路径度量值不一致,则确定应用程序的检测结果为第二检测结果。
其中,函数调用路径与应用程序相对应。第二检测结果表示应用程序在运行过程中控制流被劫持,存在内存攻击,可能是由Return-into-libc攻击、ROP攻击等造成。
具体而言,检测端遍历指定跟踪文件trace.out中的每一条记录,提取实际函数属性信息中的调用函数的实际起始地址和调用函数的实际函数名称。检测端遍历指定跟踪文件image.out中的每一条记录,提取实际模块属性信息中的加载模块的实际加载路径。然后,检测端根据该实际加载路径和实际起始地址,确定调用函数的实际偏移地址和调用函数所属的加载模块的实际模块名称。之后,检测端对实际偏移地址、实际函数名称和实际模块名称进行哈希计算,得到函数调用路径对应的实际路径度量值。最后,检测端将实际路径度量值与存储在数据库中的预设的函数调用路径对应的标准路径度量值进行匹配。若实际路径度量值与预设的函数调用路径对应的标准路径度量值不一致,则检测端确定应用程序的检测结果为第二检测结果。若实际路径度量值与预设的函数调用路径对应的标准路径度量值一致,则检测端确定应用程序未受到恶意攻击。
本实施例中,采用白名单思想验证度量值与标准值是否一致,是一种主动检测方法,既能够解决指令插桩分析方法给嵌入式设备造成的空间与性能开销问题,降低检测工作量,也能有效应对未知攻击类型。
在一个实施例中,调用函数为多个,多个调用函数构成调用函数序列。基于此,步骤S3065包括以下步骤:
步骤S306a,针对调用函数序列中的首个调用函数,对首个调用函数的实际偏移地址、首个调用函数的实际函数名称、首个调用函数所属的加载模块的实际模块名称和初始路径度量值进行哈希计算,得到首个调用函数对应的路径度量值;
步骤S306b,针对调用函数序列中的非首个调用函数,对下一个调用函数的实际偏移地址、下一个调用函数的实际函数名称、下一个调用函数所属的加载模块的实际模块名称和上一个调用函数对应的路径度量值进行哈希计算,得到下一个调用函数对应的路径度量值;
步骤S306c,将调用函数序列中最后一个调用函数对应的路径度量值,确定为函数调用路径对应的实际路径度量值。
具体而言,如图4所示,图4中每个节点代表一次函数调用。每个调用函数由调用函数的实际偏移地址offset_addr、调用函数的实际函数名称func_name、调用函数所属的加载模块的实际模块名称func_image进行描述。调用函数A是应用程序调用的第一个函数,计算调用函数A对应的路径度量值Hpath1,其输入为H(0)与调用函数A的实际偏移地址、实际函数名称、调用函数A所属的加载模块的实际模块名称。由于A是调用的第一个函数,此时输入的上一个调用函数对应的路径度量值为初始路径度量值H(0)。可选地,H(0)设置为0。应用程序调用的第二个函数为B,此时将上一个调用函数对应的路径度量值Hpath1与调用函数B的实际偏移地址、实际函数名称、调用函数B所属的加载模块的实际模块名称作为输入,计算得到调用函数B对应的路径度量值Hpath2。图4中Hpath5为应用程序本次运行需调用的调用函数序列中最后一个调用函数对应的路径度量值,因此将该Hpath5确定为函数调用路径对应的实际路径度量值。
本实施例中,将下一个调用函数的实际偏移地址、下一个调用函数的实际函数名称、下一个调用函数所属的加载模块的实际模块名称和上一个调用函数对应的路径度量值共同作为度量函数H的输入并进行哈希计算,最终获得函数调用路径对应的实际路径度量值,该方式能够完整地描述应用程序的整个运行过程,有利于提高检测的准确性。
在一个实施例中,响应数据还包括应用程序对应的实际程序校验值。基于此,步骤S306包括以下步骤:
步骤S3060,若实际程序校验值与预设的应用程序对应的标准程序校验值不一致,则确定应用程序的检测结果为第三检测结果。
其中,第三检测结果表示应用程序被篡改。
具体而言,检测端将实际程序校验值与存储在数据库中的预设的应用程序对应的标准程序校验值进行匹配。若实际程序校验值与预设的应用程序对应的标准程序校验值不一致,则检测端确定应用程序的检测结果为第三检测结果;若实际程序校验值与预设的应用程序对应的标准程序校验值一致,则检测端确定应用程序未受到恶意攻击。
本实施例中,采用白名单思想验证度量值与标准值是否一致,是一种主动检测方法,既能够解决指令插桩分析方法给嵌入式设备造成的空间与性能开销问题,降低检测工作量,也能有效应对未知攻击类型。
在一个实施例中,在步骤S302之前,该方法还包括以下步骤:
验证端对应用程序进行静态度量,得到应用程序对应的标准程序校验值,并将该标准程序校验值存入白名单数据库中。
验证端对应用程序采用静态与动态相结合的方式,模拟不同应用程序输入,分析不同输入下应用程序(二进制文件)正常执行时的运行轨迹,包括加载模块列表和函数调用路径。
具体而言,函数调用路径由{<f1,f2>,<f2,f3>……<fi-1,fi>……<fn-1,fn>}表示,其中fi-1表示第i-1个调用的函数,fi表示第i个调用的函数。在函数调用路径中,<fi-1,fi>不一定表示fi-1与fi两个调用函数间存在直接的函数调用关系,而是指两个调用函数间的执行次序,指fi是fi-1执行后的直接后继函数。图5为函数调用路径的示例图,按照定义可以将图5转化为两条函数调用路径:函数调用路径Path1:{<func_A,func_B>,<func_B,func_C>,<func_C,func_D>,<func_D,func_E>};
函数调用路径Path2:{<func_A,func_F>,<func_F,func_G>}。
其中,函数调用路径Path1的<func_A ,func_B>表明func_A与func_B存在函数调用关系,即func_A调用func_B;但是<func_C,func_D>不表示func_C调用func_D,而是表示func_D在func_C运行结束后调用。
验证端基于运行轨迹,即加载模块列表与函数调用路径,统计应用程序每次执行时各加载模块中调用函数的调用执行次数,将调用执行次数位于前N个的加载模块作为主要加载模块。验证端对主要加载模块运行时的函数调用路径利用哈希算法H进行度量,构建函数调用路径的标准路径度量值白名单列表。
检测端按照运行轨迹,对加载模块进行静态度量,得到每个加载模块对应的标准模块校验值。构建加载模块白名单列表。加载模块白名单列表中一条记录由加载模块的模块名称、加载模块的加载路径、加载模块对应的标准模块校验值进行描述。
在一个实施例中,还提供了一种应用程序的检测系统,包括检测端和被检测端,其中,
检测端,用于向被检测端发送针对应用程序的检测请求;
被检测端,用于响应于检测请求,对应用程序进行插桩,获得加载模块的实际模块属性信息和调用函数的实际函数属性信息;其中,加载模块为应用程序运行时需加载的模块,调用函数为加载模块执行时需调用的函数;
被检测端,还用于将实际模块属性信息和实际函数属性信息作为响应数据,发送至检测端;
检测端,还用于根据响应数据,确定应用程序的检测结果。
在一个实施例中,被检测端具体用于对应用程序中的加载模块进行插桩,得到加载模块的实际加载路径和加载模块对应的实际模块校验值;对加载模块中的调用函数进行插桩,得到调用函数的实际起始地址和调用函数的实际函数名称。
在一个实施例中,被检测端还用于响应于检测端发送的针对应用程序的检测请求,对应用程序进行静态度量,得到应用程序对应的实际程序校验值;
被检测端具体用于将实际模块属性信息、实际函数属性信息和实际程序校验值作为响应数据,发送至检测端,以指示检测端根据实际模块属性信息、实际函数属性信息和实际程序校验值,确定应用程序的检测结果。
在一个实施例中,检测端具体用于提取实际模块属性信息中的加载模块的实际加载路径和加载模块对应的实际模块校验值;若实际加载路径与预设的加载模块的标准加载路径不一致,则确定应用程序的检测结果为第一检测结果;其中,第一检测结果表示应用程序的库文件被篡改;若实际模块校验值与预设的加载模块对应的标准模块校验值不一致,则确定应用程序的检测结果为第一检测结果。
在一个实施例中,检测端具体用于提取实际模块属性信息中的加载模块的实际加载路径,以及提取实际函数属性信息中的调用函数的实际起始地址和调用函数的实际函数名称;根据实际加载路径和实际起始地址,确定调用函数的实际偏移地址和调用函数所属的加载模块的实际模块名称;对实际偏移地址、实际函数名称和实际模块名称进行哈希计算,得到函数调用路径对应的实际路径度量值;其中,函数调用路径与应用程序相对应;若实际路径度量值与预设的函数调用路径对应的标准路径度量值不一致,则确定应用程序的检测结果为第二检测结果;其中,第二检测结果表示应用程序在运行过程中控制流被劫持。
在一个实施例中,检测端具体用于若实际程序校验值与预设的应用程序对应的标准程序校验值不一致,则确定应用程序的检测结果为第三检测结果;其中,第三检测结果表示应用程序被篡改。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的应用程序的检测方法的应用程序的检测装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个应用程序的检测装置实施例中的具体限定可以参见上文中对于应用程序的检测方法的限定,在此不再赘述。
在一个实施例中,如图6所示,提供了一种应用程序的检测装置,该装置用于被检测端中,包括:
属性获取模块402,用于响应于检测端发送的针对应用程序的检测请求,对应用程序进行插桩,获得加载模块的实际模块属性信息和调用函数的实际函数属性信息;其中,加载模块为应用程序运行时需加载的模块,调用函数为加载模块执行时需调用的函数;
响应发送模块404,用于将实际模块属性信息和实际函数属性信息作为响应数据,发送至检测端,以指示检测端根据实际模块属性信息和实际函数属性信息,确定应用程序的检测结果。
在一个实施例中,属性获取模块402具体用于对应用程序中的加载模块进行插桩,得到加载模块的实际加载路径和加载模块对应的实际模块校验值;对加载模块中的调用函数进行插桩,得到调用函数的实际起始地址和调用函数的实际函数名称。
在一个实施例中,如图7所示,提供了一种应用程序的检测装置,该装置用于检测端中,包括:
请求发送模块502,用于向被检测端发送针对应用程序的检测请求;
数据接收模块504,用于接收被检测端针对检测请求返回的响应数据;其中,响应数据包括加载模块的实际模块属性信息和调用函数的实际函数属性信息;加载模块为应用程序运行时需加载的模块,调用函数为加载模块执行时需调用的函数;
结果确定模块506,用于根据响应数据,确定应用程序的检测结果。
在一个实施例中,结果确定模块506具体用于提取实际模块属性信息中的加载模块的实际加载路径和加载模块对应的实际模块校验值;若实际加载路径与预设的加载模块的标准加载路径不一致,则确定应用程序的检测结果为第一检测结果;其中,第一检测结果表示应用程序的库文件被篡改;若实际模块校验值与预设的加载模块对应的标准模块校验值不一致,则确定应用程序的检测结果为第一检测结果。
在一个实施例中,结果确定模块506具体用于提取实际模块属性信息中的加载模块的实际加载路径,以及提取实际函数属性信息中的调用函数的实际起始地址和调用函数的实际函数名称;根据实际加载路径和实际起始地址,确定调用函数的实际偏移地址和调用函数所属的加载模块的实际模块名称;对实际偏移地址、实际函数名称和实际模块名称进行哈希计算,得到函数调用路径对应的实际路径度量值;其中,函数调用路径与应用程序相对应;若实际路径度量值与预设的函数调用路径对应的标准路径度量值不一致,则确定应用程序的检测结果为第二检测结果;其中,第二检测结果表示应用程序在运行过程中控制流被劫持。
在一个实施例中,结果确定模块506具体用于若实际程序校验值与预设的应用程序对应的标准程序校验值不一致,则确定应用程序的检测结果为第三检测结果;其中,第三检测结果表示应用程序被篡改。
上述应用程序的检测装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种应用程序的检测方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (14)
1.一种应用程序的检测方法,其特征在于,所述方法应用于被检测端,包括:
响应于检测端发送的针对应用程序的检测请求,对所述应用程序进行插桩,获得加载模块的实际模块属性信息和调用函数的实际函数属性信息;其中,所述加载模块为所述应用程序运行时需加载的模块,所述调用函数为所述加载模块执行时需调用的函数;
将所述实际模块属性信息和所述实际函数属性信息作为响应数据,发送至所述检测端,以指示所述检测端根据所述实际模块属性信息和所述实际函数属性信息,确定所述应用程序的检测结果。
2.根据权利要求1所述的方法,其特征在于,所述对所述应用程序进行插桩,获得加载模块的实际模块属性信息和调用函数的实际函数属性信息,包括:
对所述应用程序中的加载模块进行插桩,得到加载模块的实际加载路径和加载模块对应的实际模块校验值;
对所述加载模块中的调用函数进行插桩,得到调用函数的实际起始地址和调用函数的实际函数名称。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于检测端发送的针对应用程序的检测请求,对所述应用程序进行静态度量,得到所述应用程序对应的实际程序校验值;
所述将所述实际模块属性信息和所述实际函数属性信息作为响应数据,发送至所述检测端,以指示所述检测端根据所述实际模块属性信息和所述实际函数属性信息,确定所述应用程序的检测结果,包括:
将所述实际模块属性信息、所述实际函数属性信息和所述实际程序校验值作为响应数据,发送至所述检测端,以指示所述检测端根据所述实际模块属性信息、所述实际函数属性信息和所述实际程序校验值,确定所述应用程序的检测结果。
4.一种应用程序的检测方法,其特征在于,所述方法应用于检测端,包括:
向被检测端发送针对应用程序的检测请求;
接收所述被检测端针对所述检测请求返回的响应数据;其中,所述响应数据包括加载模块的实际模块属性信息和调用函数的实际函数属性信息;所述加载模块为所述应用程序运行时需加载的模块,所述调用函数为所述加载模块执行时需调用的函数;
根据所述响应数据,确定所述应用程序的检测结果。
5.根据权利要求4所述的方法,其特征在于,所述根据所述响应数据,确定所述应用程序的检测结果,包括:
提取所述实际模块属性信息中的加载模块的实际加载路径和加载模块对应的实际模块校验值;
若所述实际加载路径与预设的加载模块的标准加载路径不一致,则确定所述应用程序的检测结果为第一检测结果;其中,所述第一检测结果表示应用程序的库文件被篡改;
若所述实际模块校验值与预设的加载模块对应的标准模块校验值不一致,则确定所述应用程序的检测结果为第一检测结果。
6.根据权利要求4所述的方法,其特征在于,所述根据所述响应数据,确定所述应用程序的检测结果,包括:
提取所述实际模块属性信息中的加载模块的实际加载路径,以及提取所述实际函数属性信息中的调用函数的实际起始地址和调用函数的实际函数名称;
根据所述实际加载路径和所述实际起始地址,确定调用函数的实际偏移地址和调用函数所属的加载模块的实际模块名称;
对所述实际偏移地址、所述实际函数名称和所述实际模块名称进行哈希计算,得到所述函数调用路径对应的实际路径度量值;其中,所述函数调用路径与所述应用程序相对应;
若所述实际路径度量值与预设的函数调用路径对应的标准路径度量值不一致,则确定所述应用程序的检测结果为第二检测结果;其中,所述第二检测结果表示应用程序在运行过程中控制流被劫持。
7.根据权利要求6所述的方法,其特征在于,所述调用函数为多个并构成调用函数序列;
所述对所述实际偏移地址、所述实际函数名称和所述实际模块名称进行哈希计算,得到所述函数调用路径对应的实际路径度量值,包括:
针对所述调用函数序列中的首个调用函数,对所述首个调用函数的实际偏移地址、所述首个调用函数的实际函数名称、所述首个调用函数所属的加载模块的实际模块名称和初始路径度量值进行哈希计算,得到首个调用函数对应的路径度量值;
针对所述调用函数序列中的非首个调用函数,对下一个调用函数的实际偏移地址、所述下一个调用函数的实际函数名称、所述下一个调用函数所属的加载模块的实际模块名称和上一个调用函数对应的路径度量值进行哈希计算,得到下一个调用函数对应的路径度量值;
将所述调用函数序列中最后一个调用函数对应的路径度量值,确定为所述函数调用路径对应的实际路径度量值。
8.根据权利要求4所述的方法,其特征在于,所述响应数据还包括所述应用程序对应的实际程序校验值;
所述根据所述响应数据,确定所述应用程序的检测结果,包括:
若所述实际程序校验值与预设的应用程序对应的标准程序校验值不一致,则确定所述应用程序的检测结果为第三检测结果;其中,所述第三检测结果表示应用程序被篡改。
9.一种应用程序的检测系统,包括检测端和被检测端,其中,
所述检测端,用于向被检测端发送针对应用程序的检测请求;
所述被检测端,用于响应于所述检测请求,对所述应用程序进行插桩,获得加载模块的实际模块属性信息和调用函数的实际函数属性信息;其中,所述加载模块为所述应用程序运行时需加载的模块,所述调用函数为所述加载模块执行时需调用的函数;
所述被检测端,还用于将所述实际模块属性信息和所述实际函数属性信息作为响应数据,发送至所述检测端;
所述检测端,还用于根据所述响应数据,确定所述应用程序的检测结果。
10.一种应用程序的检测装置,其特征在于,所述装置用于被检测端中,包括:
属性获取模块,用于响应于检测端发送的针对应用程序的检测请求,对所述应用程序进行插桩,获得加载模块的实际模块属性信息和调用函数的实际函数属性信息;其中,所述加载模块为所述应用程序运行时需加载的模块,所述调用函数为所述加载模块执行时需调用的函数;
响应发送模块,用于将所述实际模块属性信息和所述实际函数属性信息作为响应数据,发送至所述检测端,以指示所述检测端根据所述实际模块属性信息和所述实际函数属性信息,确定所述应用程序的检测结果。
11.一种应用程序的检测装置,其特征在于,所述装置用于检测端中,包括:
请求发送模块,用于向被检测端发送针对应用程序的检测请求;
数据接收模块,用于接收所述被检测端针对所述检测请求返回的响应数据;其中,所述响应数据包括加载模块的实际模块属性信息和调用函数的实际函数属性信息;所述加载模块为所述应用程序运行时需加载的模块,所述调用函数为所述加载模块执行时需调用的函数;
结果确定模块,用于根据所述响应数据,确定所述应用程序的检测结果。
12.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至3或4至8中任一项所述的方法的步骤。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至3或4至8中任一项所述的方法的步骤。
14.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至3或4至8中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210512966.8A CN114896590A (zh) | 2022-05-12 | 2022-05-12 | 应用程序的检测方法、系统、装置和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210512966.8A CN114896590A (zh) | 2022-05-12 | 2022-05-12 | 应用程序的检测方法、系统、装置和计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114896590A true CN114896590A (zh) | 2022-08-12 |
Family
ID=82722833
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210512966.8A Pending CN114896590A (zh) | 2022-05-12 | 2022-05-12 | 应用程序的检测方法、系统、装置和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114896590A (zh) |
-
2022
- 2022-05-12 CN CN202210512966.8A patent/CN114896590A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111389014A (zh) | 游戏资源数据监控方法、装置、计算机设备和存储介质 | |
CN117033039A (zh) | 故障检测方法、装置、计算机设备和存储介质 | |
CN112133357A (zh) | 一种eMMC的测试方法及装置 | |
CN114896590A (zh) | 应用程序的检测方法、系统、装置和计算机设备 | |
CN113918384A (zh) | 数据保存方法、装置、设备及存储介质 | |
CN114816806A (zh) | 容器可用性验证方法、装置、计算机设备和存储介质 | |
CN115510450B (zh) | 一种面向计算机二进制程序的比对依赖识别方法与系统 | |
CN114614992B (zh) | 签名值输出及验证方法、装置、计算机设备、存储介质 | |
CN113177224B (zh) | 基于区块链的数据密封方法、装置、设备和存储介质 | |
CN113408845B (zh) | 生产流程的处理方法、装置、计算机设备和存储介质 | |
CN115729740A (zh) | 内存越界的检测方法、装置、计算机设备和存储介质 | |
CN109885402B (zh) | 测试函数输出数据溢出的方法、终端设备及存储介质 | |
CN114116287A (zh) | 智能设备的内存校验方法、装置、电子设备和存储介质 | |
CN116910039A (zh) | 异常数据检测方法、装置、设备、存储介质和程序产品 | |
CN115738238A (zh) | 检测串号的方法、装置、计算机设备和存储介质 | |
CN115906076A (zh) | 内存快照存储方法、装置、计算机设备和存储介质 | |
CN117494105A (zh) | 软件安全测试方法、装置、计算机设备、存储介质和产品 | |
CN117424689A (zh) | 安全防护方法、装置、计算机设备和存储介质 | |
CN116915434A (zh) | 基于RxJS的验证码异步获取方法、装置和计算机设备 | |
CN117435478A (zh) | 程序逻辑功能检测方法、装置、计算机设备和存储介质 | |
CN118035095A (zh) | 业务处理对象的测试方法、装置、计算机设备、存储介质 | |
CN116149750A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN118093161A (zh) | 任务管理方法、装置、计算机设备、存储介质和程序产品 | |
CN116881116A (zh) | 接口测试方法、装置、计算机设备、存储介质和程序产品 | |
CN117349320A (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 |