一种漏洞检测方法及装置与流程

文档序号:17082586发布日期:2019-03-09 00:27阅读:170来源:国知局
一种漏洞检测方法及装置与流程

本申请涉及安全检测技术领域,特别是涉及一种漏洞检测方法及装置。



背景技术:

随着计算机技术的发展,用户可以通过包含可执行代码的文件来实现某些预定应用。当这些文件被电子设备执行时能够实现预定功能。对这些文件中的漏洞进行检测,能够尽可能避免损失,提高安全性。例如,基于区块链系统的以太坊平台,可以通过智能合约文件发布新型应用,区块链上的各个节点均可以通过智能合约文件实现对新型应用的使用。但是,智能合约文件的执行大多数还涉及用户之间的金钱转账,所以智能合约中的漏洞可能会造成严重后果。

在对待检测漏洞的文件进行漏洞检测时,通常采用漏洞特征匹配的方式。具体的,可以对待检测漏洞的文件中的代码进行检测,当检测到存在与漏洞特征代码匹配的代码时,认为文件中存在漏洞。但是这种方式只能检测出已知的安全漏洞,无法检测可能存在的未知安全漏洞,对文件漏洞的检测准确性不够高。



技术实现要素:

本申请实施例的目的在于提供了一种漏洞检测方法及装置,以提高对待检测文件进行漏洞检测时的准确性。

第一方面,本申请实施例提供了一种漏洞检测方法,所述方法包括:

获取待检测文件;其中,所述待检测文件中包含可执行代码;

按照可执行代码的执行逻辑,确定针对所述待检测文件中各个叶子节点的逻辑表达式;

对每个逻辑表达式进行测试,得到测试结果;

根据所述测试结果,确定所述待检测文件是否存在漏洞。

可选的,所述按照可执行代码的执行逻辑,确定针对所述待检测文件中各个叶子节点的逻辑表达式的步骤,包括:

按照可执行代码的执行逻辑,生成所述待检测文件的可执行代码对应的执行流程图;

根据所述执行流程图,生成针对所述待检测文件中各个叶子节点的逻辑表达式。

可选的,所述对每个逻辑表达式进行测试,得到测试结果的步骤,包括:

针对每个逻辑表达式,确定与所述逻辑表达式对应的输入参量;其中,所述输入参量用于对逻辑表达式进行测试;

采用所述输入参量对对应的逻辑表达式进行测试,得到测试结果。

可选的,所述输入参量包括输入值以及将该输入值输入对应的逻辑表达式时的标准输出结果;

所述采用所述输入参量对对应的逻辑表达式进行测试,得到测试结果的步骤,包括:

将所述输入值输入对应的逻辑表达式,得到参考输出结果;

当所述参考输出结果与所述标准输出结果不符时,确定得到存在漏洞的测试结果;

当所述参考输出结果与所述标准输出结果相符时,确定得到不存在漏洞的测试结果。

可选的,所述获取待检测文件的步骤,包括:

获取区块链系统中的新增区块数据,从所述新增区块数据中获取新增智能合约,作为待检测文件。

可选的,当根据所述测试结果确定所述待检测文件存在漏洞时,所述方法还包括:

针对每个存在漏洞的逻辑表达式,分别与预设的各个漏洞类型对应的漏洞特征进行匹配,根据匹配结果确定所述逻辑表达式的漏洞特征;

根据各个逻辑表达式的漏洞类型,确定所述待检测文件的漏洞信息;

从预设的各个漏洞信息与评分之间的对应关系中,将所述漏洞信息对应的评分确定为所述待检测文件的评分。

第二方面,本申请实施例提供了一种漏洞检测装置,所述装置包括:

获取模块,用于获取待检测文件;其中,所述待检测文件中包含可执行代码;

第一确定模块,用于按照可执行代码的执行逻辑,确定针对所述待检测文件中各个叶子节点的逻辑表达式;

测试模块,用于对每个逻辑表达式进行测试,得到测试结果;

第二确定模块,用于根据所述测试结果,确定所述待检测文件是否存在漏洞。

可选的,所述第一确定模块,具体用于:

按照可执行代码的执行逻辑,生成所述待检测文件的可执行代码对应的执行流程图;

根据所述执行流程图,生成针对所述待检测文件中各个叶子节点的逻辑表达式。

可选的,所述测试模块,具体用于:

针对每个逻辑表达式,确定与所述逻辑表达式对应的输入参量;其中,所述输入参量用于对逻辑表达式进行测试;

采用所述输入参量对对应的逻辑表达式进行测试,得到测试结果。

可选的,所述输入参量包括输入值以及将该输入值输入对应的逻辑表达式时的标准输出结果;

所述测试模块,采用所述输入参量对对应的逻辑表达式进行测试,得到测试结果时,包括:

将所述输入值输入对应的逻辑表达式,得到参考输出结果;

当所述参考输出结果与所述标准输出结果不符时,确定得到存在漏洞的测试结果;

当所述参考输出结果与所述标准输出结果相符时,确定得到不存在漏洞的测试结果。

可选的,所述获取模块,具体用于:

获取区块链系统中的新增区块数据,从所述新增区块数据中获取新增智能合约,作为待检测文件。

可选的,所述装置还包括:评分模块;所述评分模块,用于:

当根据所述测试结果确定所述待检测文件存在漏洞时,针对每个存在漏洞的逻辑表达式,分别与预设的各个漏洞类型对应的漏洞特征进行匹配,根据匹配结果确定所述逻辑表达式的漏洞类型;

根据各个逻辑表达式的漏洞类型,确定所述待检测文件的漏洞信息;

从预设的各个漏洞信息与评分之间的对应关系中,将所述漏洞信息对应的评分确定为所述待检测文件的评分。

第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现本申请实施例第一方面提供的漏洞检测方法。

第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现本申请实施例第一方面提供的漏洞检测方法。

本申请实施例提供的漏洞检测方法及装置,可以按照可执行代码的执行逻辑,确定待检测文件中各个叶子节点的逻辑表达式,对每个逻辑表达式进行测试,根据测试结果确定待检测文件是否存在漏洞。这种方式可以对待检测文件中的逻辑关系进行检测,不管待检测文件中存在的安全漏洞是已知的还是未知的,均能够进行检测,无需依赖已知的安全漏洞特征,因此能够提高对待检测文件进行漏洞检测时的准确性。当然,实施本申请的任一产品或方法并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的漏洞检测方法的一种流程示意图;

图2a为本申请实施例中可执行代码的一种示意图;

图2b为图2a中可执行代码对应的执行流程图;

图3为本申请实施例中漏洞检测系统的一种架构示意图;

图4为本申请实施例提供的漏洞检测装置的一种结构示意图;

图5为本申请实施例提供的电子设备的一种结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

为了提高对待检测文件进行漏洞检测时的准确性,本申请实施例提供了一种漏洞检测方法及装置。下面通过具体实施例,对本申请进行详细说明。

图1为本申请实施例提供的漏洞检测方法的一种流程示意图。该方法应用于具有计算处理能力的电子设备。该电子设备包括计算机、平板电脑、笔记本电脑、智能手机、服务器等设备。该方法包括如下步骤:

步骤s101:获取待检测文件。

其中,待检测文件中包含可执行代码。可执行代码是机器能够直接执行的代码,可以是将目标代码连接后形成的代码。包含可执行代码的文件可以称为可执行文件。

步骤s102:按照可执行代码的执行逻辑,确定针对待检测文件中各个叶子节点的逻辑表达式。

其中,按照可执行代码的执行逻辑,可以从待检测文件中确定各个节点和对应的子节点。叶子节点可以理解为终端节点,是不包含子节点的节点。

待检测文件可以包括一个或多个叶子节点,每个叶子节点对应存在一个逻辑表达式,即待检测文件可以包括一个或多个逻辑表达式。

步骤s103:对每个逻辑表达式进行测试,得到测试结果。

其中,测试结果可以包括逻辑表达式存在漏洞或不存在漏洞的结果。

对每个逻辑表达式进行测试时,可以将不同的值输入逻辑表达式进行判断。

步骤s104:根据上述测试结果,确定待检测文件是否存在漏洞。

本步骤具体可以为,当测试结果表明逻辑表达式存在漏洞时,确定待检测文件存在漏洞。也可以为,当根据检测结果确定漏洞比例大于预设比例阈值时,确定待检测文件存在漏洞;或者,当根据检测结果确定漏洞个数大于预设数量时,确定待检测文件存在漏洞。漏洞比例为:存在漏洞的逻辑表达式的数量与所有逻辑表达式的数量的比例。预设比例阈值和预设数量均为预设值。

由上述内容可知,本实施例可以按照可执行代码的执行逻辑,确定待检测文件中各个叶子节点的逻辑表达式,对每个逻辑表达式进行测试,根据测试结果确定待检测文件是否存在漏洞。这种方式可以对待检测文件中的逻辑关系进行检测,不管待检测文件中存在的安全漏洞是已知的还是未知的,均能够进行检测,无需依赖已知的安全漏洞特征,因此能够提高对待检测文件进行漏洞检测时的准确性。

在确定待检测文件存在漏洞时,还可以发出告警;也可以对待检测文件中的漏洞进行修复。在对待检测文件中的漏洞进行修复时,具体可以根据存在漏洞的逻辑表达式对待检测文件进行修复。

在本申请的另一实施例中,基于图1所示实施例,步骤s102,按照可执行代码的执行逻辑,确定针对待检测文件中各个叶子节点的逻辑表达式的步骤,可以包括步骤1a~2a。

步骤1a:按照可执行代码的执行逻辑,生成待检测文件的可执行代码对应的执行流程图。

在本步骤中,可以将待检测文件中的可执行代码编译成字节码格式,按照字节码格式的执行逻辑,生成待检测文件的可执行代码对应的执行流程图。

执行流程图也可以称为控制流程图。

步骤2a:根据上述执行流程图,生成针对待检测文件中各个叶子节点的逻辑表达式。

例如,参见图2a和图2b。图2a为待检测文件中的可执行代码的一种示意图,图2b为根据图2a中可执行代码的执行逻辑生成的执行流程图。从图2b中可以看出,该部分中包括5个节点,分别为:input与256比较、input*4与1024比较、throw()、pop和never_reached()。其中有3个节点为叶子节点,分别为throw()、pop和never_reached()。针对每个叶子节点,均可以生成对应的逻辑表达式。例如,叶子节点never_reached()的逻辑表达式为(input<256)^(input*4>1024),叶子节点throw()的逻辑表达式为input>256。在实际应用中,逻辑表达式的复杂度可能更高。

本实施例可以根据待检测文件的执行流程图生成各个叶子节点的逻辑表达式,能更准确地生成叶子节点的逻辑表达式。

在本申请的另一实施例中,基于图1所示实施例,步骤s103,对每个逻辑表达式进行测试,得到测试结果的步骤,具体可以包括步骤1b和2b。

步骤1b:针对每个逻辑表达式,确定与该逻辑表达式对应的输入参量。

其中,上述输入参量用于对逻辑表达式进行测试。输入参量可以包括一组或多组输入值。

在确定输入参量时,分别针对每个逻辑表达式进行确定。例如,待检测文件存在3个逻辑表达式,则可以针对这3个逻辑表达式,分别确定3个输入参量。

在一种实施方式中,输入参量可以包括输入值以及将该输入值输入对应的逻辑表达式时的标准输出结果。

例如,针对叶子节点throw()的逻辑表达式input>256,可以在0~512之间确定输入值,当输入值为0~256时,确定标准输出结果为throw();当输入值为257~512时,确定标准输出结果为非throw()。

步骤2b:采用输入参量对对应的逻辑表达式进行测试,得到测试结果。

当输入参量包括输入值时,本步骤具体可以将输入值输入对应的逻辑表达式,得到输出结果,判断输出结果与逻辑表达式的逻辑是否一致,如果一致,则确定得到不存在漏洞的测试结果;如果不一致,则确定得到存在漏洞的测试结果。

当输入参量可以包括输入值以及将该输入值输入对应的逻辑表达式时的标准输出结果时,本步骤具体可以包括步骤2b-1和2b-2:

步骤2b-1:将输入值输入对应的逻辑表达式,得到参考输出结果。

其中,输入值对应的逻辑表达式,可以理解为输入值所在的输入参量对应的逻辑表达式。

步骤2b-2:当参考输出结果与标准输出结果不符时,确定得到存在漏洞的测试结果;当参考输出结果与标准输出结果相符时,确定得到不存在漏洞的测试结果。

在确定输入参量时即确定输入值与对应的标准输出结果,在得到参考输出结果时可以直接将参考输出结果与标准输出结果进行比较,得到是否存在漏洞的测试结果。这种方式更简便易实施。

例如,可以根据当前已知的攻击方法,确定针对每个逻辑表达式的不同的输入值,对每个逻辑表达式进行模糊(fuzzing)测试,验证每个叶子节点的逻辑表达式的真伪。假设针对叶子节点never_reached()的逻辑表达式(input<256)^(input*4>1024),当输入值为0x000000时,该逻辑表达式得到的结果为不可达,则说明该逻辑表达式的逻辑存在漏洞。

当确定逻辑表达式存在漏洞时,还可以根据输入参量对该逻辑表达式进行再次验证,确保漏洞真实存在。

可见,本实施例可以针对每个逻辑表达式确定对应的输入参量,采用该输入参量对对应的逻辑表达式进行测试,得到测试结果。这种测试方式能够更准确地实现对每个逻辑表达式真伪的测试。

在本申请的另一实施例中,基于图1所示方法实施例,步骤s101,获取待检测文件的步骤,可以包括:

获取区块链系统中的新增区块数据,从新增区块数据中获取新增智能合约,作为待检测文件。

其中,智能合约文件支持合约地址、合约字节码、合约源代码、松露(truffle)工程文件等。本实施例可以对区块链系统中的智能合约进行漏洞检测,提高智能合约的安全性。

在获取新增区块数据时,可以预先在区块链系统中建立以太坊节点,通过建立的以太坊节点来获取区块链系统中的新增区块数据。当区块链系统中出现新增区块数据时,该新增区块数据会同步给每个以太坊节点。通过这种方式能够更及时地对新增智能合约进行漏洞检测,实现对智能合约的实时检测。

在一种实施方式中,也可将作为检测特例的智能合约作为待检测文件。

在本申请的另一实施例中,基于图1所示实施例,当根据测试结果确定待检测文件存在漏洞时,该方法还可以包括以下步骤1c~3c所示的针对待检测文件的评分过程。

步骤1c:针对每个存在漏洞的逻辑表达式分别与预设的各个漏洞类型对应的漏洞特征进行匹配,根据匹配结果确定逻辑表达式的漏洞类型。

其中,漏洞特征可以以特征表达式的形式表示。当逻辑表达式与漏洞特征匹配成功时,确定该逻辑表达式存在与该漏洞特征对应的漏洞类型。当逻辑表达式与漏洞特征匹配失败时,确定该逻辑表达式不存在与该漏洞特征对应的漏洞类型。

例如,在智能合约中漏洞类型可以包括整数溢出漏洞、交易顺序漏洞等。

步骤2c:根据各个逻辑表达式的漏洞类型,确定待检测文件的漏洞信息。

其中,漏洞信息可以包括漏洞个数、漏洞等级、漏洞详情、安全建议等方面。待检测文件的漏洞信息根据该待检测文件的所有存在漏洞的逻辑表达式的漏洞类型确定。

步骤3c:从预设的各个漏洞信息与评分之间的对应关系中,将该漏洞信息对应的评分确定为待检测文件的评分。

其中,各个漏洞信息与评分之间的对应关系,可以为根据已检测到漏洞的文件中出现的各类漏洞的分布情况预先确定。评分可以为预设范围,例如可以为0~5分。

在确定待检测文件的评分之后,还可以根据漏洞信息和评分生成检测报告。

本实施例中,可以在确定待检测文件存在漏洞时,确定逻辑表达式的漏洞类型,进而得到漏洞信息,并确定待检测文件的评分,实现对待检测文件更详细的评价,供用户参考。

下面结合具体实例对本申请再做详细说明。

参见图3,该图3为本申请实施例提供的应用于区块链系统的漏洞检测系统的一种架构示意图。

在漏洞检测系统包括三大部分:智能合约输入部分、静态检测部分、检测结果输出部分。智能合约输入部分包括实时自动输入和检测特例输入。实时自动输入通过以太坊自建节点获得区块链系统中的新增智能合约。以太坊自建节点在获取到新增区块数据时,可以将新增区块数据存储至数据中心。合约数据清洗可以对新增区块数据进行清洗,去除重复和无用数据,得到实时的新增智能合约。也可以由企业提供检测特例作为待检测文件。

静态检测部分包括执行流程图生成器、逻辑检测和漏洞类型检测。执行流程图生成器用于生成执行流程图。逻辑检测用于根据执行流程图生成逻辑表达式,并对逻辑表达式进行逻辑真伪的检测。漏洞类型检测包括整数溢出检测、交易顺序依赖检测等。检测结果输出部分包括:根据静态检测部分的结果生成漏洞详情分析报告,并可以对智能合约进行评分。

当需要检测智能合约是否存在漏洞时,直接调用接口即可以得到漏洞详情分析报告。

图4为本申请实施例提供的漏洞检测装置的一种结构示意图。与图1所示方法实施例相对应,应用于具有计算处理能力的电子设备。所述装置包括:

获取模块401,用于获取待检测文件;其中,所述待检测文件中包含可执行代码;

第一确定模块402,用于按照可执行代码的执行逻辑,确定针对所述待检测文件中各个叶子节点的逻辑表达式;

测试模块403,用于对每个逻辑表达式进行测试,得到测试结果;

第二确定模块404,用于根据所述测试结果,确定所述待检测文件是否存在漏洞。

在本申请的另一实施例中,基于图4所示实施例,第一确定模块402具体用于:

按照可执行代码的执行逻辑,生成所述待检测文件的可执行代码对应的执行流程图;

根据所述执行流程图,生成针对所述待检测文件中各个叶子节点的逻辑表达式。

在本申请的另一实施例中,基于图4所示实施例,测试模块403具体用于:

针对每个逻辑表达式,确定与所述逻辑表达式对应的输入参量;其中,所述输入参量用于对逻辑表达式进行测试;

采用所述输入参量对对应的逻辑表达式进行测试,得到测试结果。

在本申请的另一实施例中,基于图4所示实施例,所述输入参量包括输入值以及将该输入值输入对应的逻辑表达式时的标准输出结果;

测试模块403,采用所述输入参量对对应的逻辑表达式进行测试,得到测试结果时,包括:

将所述输入值输入对应的逻辑表达式,得到参考输出结果;

当所述参考输出结果与所述标准输出结果不符时,确定得到存在漏洞的测试结果;

当所述参考输出结果与所述标准输出结果相符时,确定得到不存在漏洞的测试结果。

在本申请的另一实施例中,基于图4所示实施例,获取模块401具体用于:

获取区块链系统中的新增区块数据,从所述新增区块数据中获取新增智能合约,作为待检测文件。

在本申请的另一实施例中,基于图4所示实施例,上述装置还包括:评分模块(图中未示出);该评分模块,用于:

当根据所述测试结果确定所述待检测文件存在漏洞时,针对每个存在漏洞的逻辑表达式,分别与预设的各个漏洞类型对应的漏洞特征进行匹配,根据匹配结果确定所述逻辑表达式的漏洞类型;

根据各个逻辑表达式的漏洞类型,确定所述待检测文件的漏洞信息;

从预设的各个漏洞信息与评分之间的对应关系中,将所述漏洞信息对应的评分确定为所述待检测文件的评分。

由于上述装置实施例是基于方法实施例得到的,与该方法具有相同的技术效果,因此装置实施例的技术效果在此不再赘述。

对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。

图5为本申请实施例提供的一种电子设备的结构示意图。该电子设备包括处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信;

存储器503,用于存放计算机程序;

处理器501,用于执行存储器503上所存放的程序时,实现本申请实施例提供的漏洞检测方法。该方法包括:

获取待检测文件;其中,所述待检测文件中包含可执行代码;

按照可执行代码的执行逻辑,确定针对所述待检测文件中各个叶子节点的逻辑表达式;

对每个逻辑表达式进行测试,得到测试结果;

根据所述测试结果,确定所述待检测文件是否存在漏洞。

上述电子设备提到的通信总线504可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线504可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口502用于上述电子设备与其他设备之间的通信。

存储器503可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器503还可以是至少一个位于远离前述处理器的存储装置。

上述处理器501可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

本实施例可以按照可执行代码的执行逻辑,确定待检测文件中各个叶子节点的逻辑表达式,对每个逻辑表达式进行测试,根据测试结果确定待检测文件是否存在漏洞。这种方式可以对待检测文件中的逻辑关系进行检测,不管待检测文件中存在的安全漏洞是已知的还是未知的,均能够进行检测,无需依赖已知的安全漏洞特征,因此能够提高对待检测文件进行漏洞检测时的准确性。

本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现本申请实施例提供的漏洞检测方法。该方法包括:

获取待检测文件;其中,所述待检测文件中包含可执行代码;

按照可执行代码的执行逻辑,确定针对所述待检测文件中各个叶子节点的逻辑表达式;

对每个逻辑表达式进行测试,得到测试结果;

根据所述测试结果,确定所述待检测文件是否存在漏洞。

本实施例可以按照可执行代码的执行逻辑,确定待检测文件中各个叶子节点的逻辑表达式,对每个逻辑表达式进行测试,根据测试结果确定待检测文件是否存在漏洞。这种方式可以对待检测文件中的逻辑关系进行检测,不管待检测文件中存在的安全漏洞是已知的还是未知的,均能够进行检测,无需依赖已知的安全漏洞特征,因此能够提高对待检测文件进行漏洞检测时的准确性。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。

以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本申请的保护范围内。

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