发布信息

分支记录实现方法及系统与流程

作者:admin      2022-09-02 18:27:50     818



计算;推算;计数设备的制造及其应用技术1.本技术涉及系统安全技术领域::,尤其涉及一种分支记录实现方法、系统、电子装置及计算机可读存储介质。背景技术:::2.在发现x86cpu的“熔毁”硬件安全缺陷之前,进程地址空间被分成了内核地址空间和用户地址空间。其中内核地址空间映射到整个物理地址空间,而用户地址空间只能映射到指定的物理地址空间。内核地址空间和用户地址空间共用一个页全局目录表,即页目录(pageglobaldirectory,pgd)表示进程的整个地址空间。meltdown漏洞就恰恰利用了这一点,攻击者非法访问内核地址和cpu处理异常的时间窗口,通过访存微指令获取内核数据。3.为了缓解x86cpu中的“熔毁”硬件安全缺陷,目前可以采用内核页表隔离(kernelpage-tableisolation,kpti)技术。kpti是linux内核中的一种强化技术,主要是令内核地址空间和用户地址空间使用两组页表集(也就是使用两个pgd),旨在更好地隔离用户地址空间与内核地址空间的内存来提高安全性,缓解x86cpu中的“熔毁”硬件安全缺陷。4.目前绝大多数linux系统已经开启kpti功能,并且kpti已经被合并到linux内核。在linux系统中,开启了kpti后,由于intelbts(branchtracestore,分支跟踪存储)和kpti技术特点不兼容,内核默认不加载intelbts驱动,也就造成内核开启kpti后,无法使用基于intelbts提供的任何功能。5.需要说明的是,上述内容并不用于限制申请保护范围。技术实现要素:6.本技术的主要目的在于提出一种分支记录实现方法、系统、电子装置及计算机可读存储介质,旨在解决如何在启用kpti的状态下正常使用分支记录功能的问题。7.为实现上述目的,本技术实施例提供了一种分支记录实现方法,所述方法包括:8.在当前操作系统启用内核页表隔离的状态下加载分支记录驱动;9.通过所述分支记录驱动采集所述当前操作系统的当前进程的分支记录跳转数据;10.将所述分支记录跳转数据保存至所述当前进程的内核地址空间;及11.当所述当前进程处于用户地址空间时,将所述内核地址空间中的所述分支记录跳转数据映射到所述用户地址空间。12.可选地,所述分支记录驱动为将所述分支记录跳转数据保存到内存空间的分支跟踪存储bts驱动。13.可选地,所述当前进程对应的内存空间包括所述内核地址空间和所述用户地址空间,当所述当前进程处于所述内核地址空间或所述用户地址空间时,所述分支记录驱动采集的所述分支记录跳转数据均保存至所述内核地址空间。14.可选地,所述将所述内核地址空间中的所述分支记录跳转数据映射到所述用户地址空间包括:15.获取所述内核地址空间中用于保存所述分支记录跳转数据的连续地址空间的内存数据,并映射到所述用户地址空间的相应位置。16.可选地,所述获取所述内核地址空间中用于保存所述分支记录跳转数据的连续地址空间的内存数据,并映射到所述用户地址空间的相应位置包括:17.定位所述分支记录驱动在所述内核地址空间中申请的用于保存所述分支记录跳转数据的第一连续地址空间;18.读取所述第一连续地址空间中的内存数据;19.在所述用户地址空间中申请与所述第一连续地址空间对应的第二连续地址空间;20.将所述内存数据复制到所述用户地址空间中的所述第二连续地址空间。21.可选地,所述方法还包括:22.分别从所述内核地址空间和所述用户地址空间获取所述分支记录跳转数据。23.可选地,所述分别从所述内核地址空间和所述用户地址空间获取所述分支记录跳转数据包括:24.当所述当前进程处于内核地址空间时,从所述内核地址空间中获取所述分支记录跳转数据;25.当所述当前进程处于用户地址空间时,从所述用户地址空间中获取映射后的所述分支记录跳转数据。26.此外,为实现上述目的,本技术实施例还提供一种分支记录实现系统,所述系统包括:27.加载模块,用于在当前操作系统启用内核页表隔离的状态下加载分支记录驱动;28.采集模块,用于通过所述分支记录驱动采集所述当前操作系统的当前进程的分支记录跳转数据;29.保存模块,用于将所述分支记录跳转数据保存至所述当前进程的内核地址空间;30.映射模块,用于当所述当前进程处于用户地址空间时,将所述内核地址空间中的所述分支记录跳转数据映射到所述用户地址空间。31.为实现上述目的,本技术实施例还提供一种电子装置,所述电子装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的分支记录实现程序,所述分支记录实现程序被所述处理器执行时实现如上述的分支记录实现方法。32.为实现上述目的,本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有分支记录实现程序,所述分支记录实现程序被处理器执行时实现如上述的分支记录实现方法。33.本技术实施例提出的分支记录实现方法、系统、电子装置及计算机可读存储介质,能够确保在当前操作系统启用kpti后,也能正常使用分支记录驱动抓取的数据,以便使用该数据对所述当前操作系统进行安全防护,提高系统安全性。附图说明34.图1为实现本技术各个实施例的一种应用环境架构图;35.图2为本技术第一实施例提出的一种分支记录实现方法的流程图;36.图3为本技术中的用户地址空间和内核地址空间的一种pgd分布示意图;37.图4为图2中步骤s206的细化流程示意图;38.图5为所述步骤s206的一种页表映射示意图;39.图6为本技术第二实施例提出的一种分支记录实现方法的流程图;40.图7为本技术第三实施例提出的一种电子装置的硬件架构示意图;41.图8为本技术第四实施例提出的一种分支记录实现系统的模块示意图;42.图9为本技术第五实施例提出的一种分支记录实现系统的模块示意图。具体实施方式43.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本技术,并不用于限定本技术。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。44.需要说明的是,在本技术实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本技术要求的保护范围之内。45.请参阅图1,图1为实现本技术各个实施例的一种应用环境架构图。本技术可应用于包括,但不仅限于当前操作系统2、内存空间4、分支记录驱动6的应用环境中。46.其中,所述当前操作系统2为linux操作系统,所述当前操作系统2中还包括正在执行的当前进程20。在所述当前操作系统2启用kpti的状态下,所述当前进程20在所述内存空间4中对应两个地址空间,分别为内核地址空间40和用户地址空间42。47.所述分支记录驱动6用于集所述当前操作系统2的当前进程20的分支记录跳转数据,并保存至所述内核地址空间40。48.实施例一49.如图2所示,为本技术第一实施例提出的一种分支记录实现方法的流程图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。50.该方法包括以下步骤:51.s200,在当前操作系统启用kpti(内核页表隔离)的状态下加载分支记录驱动。52.在本实施例中,所述当前操作系统为linux操作系统。所述分支记录驱动为bts驱动,所述bts驱动将分支信息(下文的分支记录跳转数据)保存至内存空间中。53.linux操作系统中启用kpti后,每个进程对应的内存空间包括两个地址空间。第一个地址空间为内核地址空间,只能在内核态下访问,可以创建到内核和用户的映射。第二个地址空间被称为影子地址空间(用户地址空间)。不过由于涉及到上下文切换,所以在影子地址空间中必须包含部分内核地址,用来建立到中断入口和出口的映射。linux操作系统中,kpti补丁为了提高cr3切换的速度,将内核地址空间的pgd和用户地址空间的pgd连续的放置在一个8kb的内存空间中。这段空间必须是8k对齐的,这样将cr3的切换操作转换为将cr3值的第13位(由低到高)的置位或清零操作。例如,参阅图3所示,为所述用户地址空间和所述内核地址空间的一种pgd分布示意图。54.传统的linux操作系统由于bts和kpti技术特点不兼容,内核默认不加载bts驱动。而本实施例为了使用bts驱动采集的分支记录跳转数据进行系统安全检测,在所述当前操作系统(linux操作系统)启用kpti的状态下,加载bts驱动到所述当前操作系统的内核中。例如通过linux操作系统的加载命令modprobe等在内核中加载所述bts驱动。55.s202,通过所述分支记录驱动采集所述当前操作系统的当前进程的分支记录跳转数据。56.所述分支记录驱动(bts驱动)位于操作系统的内核层,目的就是实时采集所述当前系统的当前进程运行时的分支记录跳转数据,并将采集到的所述分支记录跳转数据进行保存。另外,可以随时控制开启或关闭所述分支记录驱动的数据采集,从而采集指定进程的分支记录跳转数据。57.s204,将所述分支记录跳转数据保存至所述当前进程的内核地址空间。58.所述当前进程对应的内存空间包括所述内核地址空间和所述用户地址空间,当所述当前进程处于所述内核地址空间或所述用户地址空间时,所述分支记录驱动采集的所述分支记录跳转数据均保存至所述内核地址空间。59.s206,当所述当前进程处于用户地址空间时,将所述内核地址空间中的所述分支记录跳转数据映射到所述用户地址空间。60.由于linux操作系统中启用kpti后,每个进程的pgd分成了内核地址空间的pgd和用户地址空间的pgd,用户态页表只有极少量且关键的页映射到了内核地址空间,用于处理系统中断、异常等情况。当cpu运行时,bts驱动随时会将所述分支记录跳转数据记录到内存空间,若当前进程正处于用户地址空间时,bts驱动会将所述分支记录跳转数据写入内核地址空间,但此时用户态页表无法查询到内核地址空间,导致cpu出现缺页异常(pagefault)进而导致系统死机。61.因此,在本实施例中,当所述当前进程处于用户地址空间时,需要获取所述内核地址空间中用于保存所述分支记录跳转数据的连续地址空间的内存数据,并映射到所述用户地址空间的相应位置。而当所述当前进程处于内核地址空间时,可以直接从所述内核地址空间读取所述分支记录跳转数据,不需要进行映射。62.具体而言,进一步参阅图4,为上述步骤s206的细化流程示意图。可以理解,该流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。在本实施例中,所述步骤s206具体包括:63.s2060,定位所述分支记录驱动在所述内核地址空间中申请的用于保存所述分支记录跳转数据的第一连续地址空间。64.s2062,读取所述第一连续地址空间中的内存数据。65.s2064,在所述用户地址空间中申请与所述第一连续地址空间对应的第二连续地址空间。66.s2066,将所述内存数据复制到所述用户地址空间中的所述第二连续地址空间。67.例如,参阅图5所示,为所述步骤s206的一种页表映射示意图。图5中下方的内核地址空间中第一连续地址空间的内存数据被映射到上方的用户地址空间中的第二连续地址空间中。68.后续需要使用分支记录跳转数据时,若当前进程正处于用户地址空间,bts驱动会将所述分支记录跳转数据写入内核地址空间,此时用户态页表无法查询到内核地址空间,但由于本实施例已将所述内核地址空间中的所述分支记录跳转数据映射到所述用户地址空间,因此用户态页表可以从所述用户地址空间查询到所述分支记录跳转数据进行正常使用,而不会导致cpu异常。69.本实施例提出的分支记录实现方法,可以确保在当前操作系统启用kpti后,也能正常使用分支记录驱动抓取的数据,以便使用该数据对所述当前操作系统进行安全防护,提高系统安全性。70.实施例二71.如图6所示,为本技术第二实施例提出的一种分支记录实现方法的流程图。在第二实施例中,所述分支记录实现方法在上述第一实施例的基础上,还包括步骤s308。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。72.该方法包括以下步骤:73.s300,在当前操作系统启用kpti的状态下加载分支记录驱动。74.在本实施例中,所述当前操作系统为linux操作系统。所述分支记录驱动为bts驱动,所述bts驱动将分支信息(下文的分支记录跳转数据)保存至内存空间中。75.linux操作系统中启用kpti后,每个进程对应的内存空间包括两个地址空间。第一个地址空间为内核地址空间,只能在内核态下访问,可以创建到内核和用户的映射。第二个地址空间被称为影子地址空间(用户地址空间)。不过由于涉及到上下文切换,所以在影子地址空间中必须包含部分内核地址,用来建立到中断入口和出口的映射。linux操作系统中,kpti补丁为了提高cr3切换的速度,将内核地址空间的pgd和用户地址空间的pgd连续的放置在一个8kb的内存空间中。这段空间必须是8k对齐的,这样将cr3的切换操作转换为将cr3值的第13位(由低到高)的置位或清零操作。76.传统的linux操作系统由于bts和kpti技术特点不兼容,内核默认不加载bts驱动。而本实施例为了使用bts驱动采集的分支记录跳转数据进行系统安全检测,在所述当前操作系统(linux操作系统)启用kpti的状态下,加载bts驱动到所述当前操作系统的内核中。例如通过linux操作系统的加载命令modprobe等在内核中加载所述bts驱动。77.s302,通过所述分支记录驱动采集所述当前操作系统的当前进程的分支记录跳转数据。78.所述分支记录驱动(bts驱动)位于操作系统的内核层,目的就是实时采集所述当前系统的当前进程运行时的分支记录跳转数据,并将采集到的所述分支记录跳转数据进行保存。另外,可以随时控制开启或关闭所述分支记录驱动的数据采集,从而采集指定进程的分支记录跳转数据。79.s304,将所述分支记录跳转数据保存至所述当前进程的内核地址空间。80.所述当前进程对应的内存空间包括所述内核地址空间和所述用户地址空间,当所述当前进程处于所述内核地址空间或所述用户地址空间时,所述分支记录驱动采集的所述分支记录跳转数据均保存至所述内核地址空间。81.s306,当所述当前进程处于用户地址空间时,将所述内核地址空间中的所述分支记录跳转数据映射到所述用户地址空间。82.由于linux操作系统中启用kpti后,每个进程的pgd分成了内核地址空间的pgd和用户地址空间的pgd,用户态页表只有极少量且关键的页映射到了内核地址空间,用于处理系统中断、异常等情况。当cpu运行时,bts驱动随时会将所述分支记录跳转数据记录到内存空间,若当前进程正处于用户地址空间时,bts驱动会将所述分支记录跳转数据写入内核地址空间,但此时用户态页表无法查询到内核地址空间,导致cpu出现缺页异常进而导致系统死机。83.因此,在本实施例中,当所述当前进程处于用户地址空间时,需要获取所述内核地址空间中用于保存所述分支记录跳转数据的连续地址空间的内存数据,并映射到所述用户地址空间的相应位置。而当所述当前进程处于内核地址空间时,可以直接从所述内核地址空间读取所述分支记录跳转数据,不需要进行映射。84.s308,分别从所述内核地址空间和所述用户地址空间获取所述分支记录跳转数据。85.当所述当前进程处于内核地址空间时,从所述内核地址空间中获取所述分支记录跳转数据;当所述当前进程处于用户地址空间时,无法获取所述内核地址空间中保存的所述分支记录跳转数据,则从所述用户地址空间中获取映射后的所述分支记录跳转数据。因此,在上述两种情况下都可以查询到所述分支记录跳转数据进行正常使用,而不会导致cpu异常。86.获取到的所述分支记录跳转数据可以用于对所述当前操作系统的当前进程进行安全检测,例如通过将所述分支记录跳转数据与可信数据进行比对来判断所述当前操作系统是否存在威胁。87.本实施例提出的分支记录实现方法,可以确保在当前操作系统启用kpti后,也能正常使用分支记录驱动抓取的数据,以便使用该数据对所述当前操作系统进行安全防护,提高系统安全性。88.实施例三89.如图7所示,为本技术第三实施例提出一种电子装置20的硬件架构示意图。本实施例中,所述电子装置20可包括,但不仅限于,可通过系统总线相互通信连接的存储器21、处理器22、网络接口23。需要指出的是,图7仅示出了具有组件21-23的电子装置20,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。在本实施例中,所述电子装置20可以是所述客户端2。90.所述存储器21至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器21可以是所述电子装置20的内部存储单元,例如该电子装置20的硬盘或内存。在另一些实施例中,所述存储器21也可以是所述电子装置20的外部存储设备,例如该电子装置20上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。当然,所述存储器21还可以既包括所述电子装置20的内部存储单元也包括其外部存储设备。本实施例中,所述存储器21通常用于存储安装于所述电子装置20的操作系统和各类应用软件,例如分支记录实现系统60的程序代码等。此外,所述存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。91.所述处理器22在一些实施例中可以是中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制所述电子装置20的总体操作。本实施例中,所述处理器22用于运行所述存储器21中存储的程序代码或者处理数据,例如运行所述分支记录实现系统60等。92.所述网络接口23可包括无线网络接口或有线网络接口,该网络接口23通常用于在所述电子装置20与其他电子设备之间建立通信连接。93.实施例四94.如图8所示,为本技术第四实施例提出一种分支记录实现系统60的模块示意图。所述分支记录实现系统60可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本技术实施例。本技术实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例各程序模块的功能。95.在本实施例中,所述分支记录实现系统60包括:96.加载模块600,用于在当前操作系统启用kpti的状态下加载分支记录驱动。97.在本实施例中,所述当前操作系统为linux操作系统。所述分支记录驱动为bts驱动,所述bts驱动将分支信息(下文的分支记录跳转数据)保存至内存空间中。98.linux操作系统中启用kpti后,每个进程对应的内存空间包括两个地址空间。第一个地址空间为内核地址空间,只能在内核态下访问,可以创建到内核和用户的映射。第二个地址空间被称为影子地址空间(用户地址空间)。不过由于涉及到上下文切换,所以在影子地址空间中必须包含部分内核地址,用来建立到中断入口和出口的映射。linux操作系统中,kpti补丁为了提高cr3切换的速度,将内核地址空间的pgd和用户地址空间的pgd连续的放置在一个8kb的内存空间中。这段空间必须是8k对齐的,这样将cr3的切换操作转换为将cr3值的第13位(由低到高)的置位或清零操作。99.传统的linux操作系统由于bts和kpti技术特点不兼容,内核默认不加载bts驱动。而本实施例为了使用bts驱动采集的分支记录跳转数据进行系统安全检测,在所述当前操作系统(linux操作系统)启用kpti的状态下,加载bts驱动到所述当前操作系统的内核中。例如通过linux操作系统的加载命令modprobe等在内核中加载所述bts驱动。100.采集模块602,用于通过所述分支记录驱动采集所述当前操作系统的当前进程的分支记录跳转数据。101.所述分支记录驱动(bts驱动)位于操作系统的内核层,目的就是实时采集所述当前系统的当前进程运行时的分支记录跳转数据,并将采集到的所述分支记录跳转数据进行保存。另外,可以随时控制开启或关闭所述分支记录驱动的数据采集,从而采集指定进程的分支记录跳转数据。102.保存模块604,用于将所述分支记录跳转数据保存至所述当前进程的内核地址空间。103.所述当前进程对应的内存空间包括所述内核地址空间和所述用户地址空间,当所述当前进程处于所述内核地址空间或所述用户地址空间时,所述分支记录驱动采集的所述分支记录跳转数据均保存至所述内核地址空间。104.映射模块606,用于当所述当前进程处于用户地址空间时,将所述内核地址空间中的所述分支记录跳转数据映射到所述用户地址空间。105.由于linux操作系统中启用kpti后,每个进程的pgd分成了内核地址空间的pgd和用户地址空间的pgd,用户态页表只有极少量且关键的页映射到了内核地址空间,用于处理系统中断、异常等情况。当cpu运行时,bts驱动随时会将所述分支记录跳转数据记录到内存空间,若当前进程正处于用户地址空间时,bts驱动会将所述分支记录跳转数据写入内核地址空间,但此时用户态页表无法查询到内核地址空间,导致cpu出现缺页异常进而导致系统死机。106.因此,在本实施例中,当所述当前进程处于用户地址空间时,需要获取所述内核地址空间中用于保存所述分支记录跳转数据的连续地址空间的内存数据,并映射到所述用户地址空间的相应位置。该过程具体包括:107.(1)定位所述分支记录驱动在所述内核地址空间中申请的用于保存所述分支记录跳转数据的第一连续地址空间。108.(2)读取所述第一连续地址空间中的内存数据。109.(3)在所述用户地址空间中申请与所述第一连续地址空间对应的第二连续地址空间。110.(4)将所述内存数据复制到所述用户地址空间中的所述第二连续地址空间。111.而当所述当前进程处于内核地址空间时,可以直接从所述内核地址空间读取所述分支记录跳转数据,不需要进行映射。112.后续需要使用分支记录跳转数据时,若当前进程正处于用户地址空间,bts驱动会将所述分支记录跳转数据写入内核地址空间,此时用户态页表无法查询到内核地址空间,但由于本实施例已将所述内核地址空间中的所述分支记录跳转数据映射到所述用户地址空间,因此用户态页表可以从所述用户地址空间查询到所述分支记录跳转数据进行正常使用,而不会导致cpu异常。113.实施例五114.如图9所示,为本技术第五实施例提出一种分支记录实现系统60的模块示意图。在本实施例中,所述分支记录实现系统60除了包括第四实施例中的所述加载模块600、采集模块602、保存模块604、映射模块606之外,还包括获取模块608。115.所述获取模块608,用于分别从所述内核地址空间和所述用户地址空间获取所述分支记录跳转数据。116.当所述当前进程处于内核地址空间时,从所述内核地址空间中获取所述分支记录跳转数据;当所述当前进程处于用户地址空间时,无法获取所述内核地址空间中保存的所述分支记录跳转数据,则从所述用户地址空间中获取映射后的所述分支记录跳转数据。因此,在上述两种情况下都可以查询到所述分支记录跳转数据进行正常使用,而不会导致cpu异常。117.获取到的所述分支记录跳转数据可以用于对所述当前操作系统的当前进程进行安全检测,例如通过将所述分支记录跳转数据与可信数据进行比对来判断所述当前操作系统是否存在威胁。118.本实施例提出的分支记录实现系统,可以确保在当前操作系统启用kpti后,也能正常使用分支记录驱动抓取的数据,以便使用该数据对所述当前操作系统进行安全防护,提高系统安全性。119.实施例六120.本技术还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有分支记录实现程序,所述分支记录实现程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的分支记录实现方法的步骤。121.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。122.上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。123.显然,本领域的技术人员应该明白,上述的本技术实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本技术实施例不限制于任何特定的硬件和软件结合。124.以上仅为本技术实施例的优选实施例,并非因此限制本技术实施例的专利范围,凡是利用本技术实施例说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域::,均同理包括在本技术实施例的专利保护范围内。当前第1页12当前第1页12









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部