一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种保护lsass进程的方法、装置、电子设备及介质与流程

2022-03-30 10:19:35 来源:中国专利 TAG:
1.本技术涉及计算机领域,特别是涉及一种保护lsass进程的方法、装置、电子设备及介质。
背景技术
::2.随着互联网行业的快速发展,计算机在生活中越来越普遍,而在个人操作系统中,windows系统占比高。由于windows的认证都是基于lsass进程的,不论是域环境的一种计算机网络授权协议(kerberos)认证,还是工作组环境的问询/应答身份验证协议(ntlm)认证,最终认证之后的凭据都会保存在lsass进程的内存中,因此,对lsass进程的保护至关重要。3.当前通过监控有转储进程功能的应用程序编程接口(api)实现对lsass进程的保护,但是,当程序通过openproces函数打开lsass进程的句柄,直接读取lsass进程时,通过监控具有转储进程功能的api无法实现对lsass进程的保护。4.由此可见,如何实现对lsass进程的保护是本领域技术人员亟待解决的问题。技术实现要素:5.本技术的目的是提供一种保护lsass进程的方法、装置、电子设备及介质,用于防止非法程序读写lsass进程。6.为解决上述技术问题,本技术提供一种保护lsass进程的方法,包括:7.获取目标进程;8.判断目标进程是否为system、csrss、wininit或lsass进程;9.若否,则调用函数将grantedaccessbits进行去除读写权限的计算,grantedaccessbits为目标进程中打开lsass进程的句柄拥有的权限。10.优选地,若目标进程为新创建的进程,则在获取目标进程之前,还包括:11.创建通知事件,通知事件用于监控目标进程的创建。12.优选地,在判断目标进程是否为system、csrss、wininit或lsass进程之前,还包括:13.判断目标进程是否申请lsass进程的读写权限;14.若否,则确定目标进程创建成功;15.若是,则进入判断目标进程是否为system、csrss、wininit或lsass进程的步骤。16.优选地,若目标进程为用户层程序筛选得到的具有lsass进程的读写权限的进程,则获取目标进程包括:17.接收用户层程序发送的目标进程的id和打开lsass进程的句柄值;18.对应地,判断目标进程是否为system、csrss、wininit或lsass进程包括:19.根据目标进程的id判断目标进程是否为system、csrss、wininit或lsass进程。20.优选地,在调用函数将grantedaccessbits进行去除读写权限的计算之前,还包括:21.通过目标进程的eprocess结构体获取objecttable地址;22.根据与objecttable地址对应的handle_table结构体获取tablecode指针;23.读取tablecode指针指向的tablecode地址,并根据tablecode地址计算得到目标进程的私有句柄表的级别。24.优选地,若私有句柄表为一级句柄表,则获取grantedaccessbits包括:25.根据tablecode地址计算得到私有句柄表地址;26.根据句柄值和私有句柄表地址计算得到句柄属性地址;27.从与句柄属性地址对应的handle_table_entry结构体中获取grantedaccessbits。28.优选地,若私有句柄表为二级句柄表,则获取grantedaccessbits包括:29.根据tablecode地址计算得到存储地址,存储地址包括多个私有句柄表地址;30.根据句柄值确定存储句柄的私有句柄表,并从存储地址中获取与私有句柄表对应的私有句柄表地址;31.根据句柄值和私有句柄表地址计算得到句柄属性地址;32.从与句柄属性地址对应的handle_table_entry结构体中获取grantedaccessbits。33.为解决上述技术问题,本技术还提供一种保护lsass进程的装置,包括:34.获取模块,用于获取目标进程;35.判断模块,用于判断目标进程是否为system、csrss、wininit或lsass进程;36.调用模块,用于调用函数将grantedaccessbits进行去除读写权限的计算,grantedaccessbits为目标进程中打开lsass进程的句柄拥有的权限。37.为解决上述技术问题,本技术还提供一种电子设备,包括:38.存储器,用于存储计算机程序;39.处理器,用于执行计算机程序时实现上述保护lsass进程的方法的步骤。40.为解决上述技术问题,本技术还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述保护lsass进程的方法的步骤。41.本技术提出一种保护lsass进程的方法,该方法先获取目标进程;然后判断该目标进程是否为system、csrss、wininit或lsass进程;若否,则调用函数将grantedaccessbits进行去除读写权限的计算,其中,grantedaccessbits为目标进程中打开lsass进程的句柄拥有的权限。相较于传统的通过监控有转储进程功能的api实现保护lsass进程的方法,该方法通过去除目标进程的读写lsass进程的权限的方式保护lsass进程,从根源上预防了非法程序读写lsass进程,有力保障了lsass进程的安全。42.此外,本技术所提供的保护lsass进程的装置、电子设备及介质与保护lsass进程的方法相对应,效果如上。附图说明43.为了更清楚地说明本技术实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。44.图1为本技术提供的一种保护lsass进程的方法的流程图;45.图2为本技术提供的一种保护lsass进程的装置的结构图;46.图3为本技术提供的一种电子设备的结构图。具体实施方式47.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本技术保护范围。48.本技术的核心是提供一种保护lsass进程的方法,用于防止非法程序读写lsass进程。49.为了使本
技术领域
:的人员更好地理解本技术方案,下面结合附图和具体实施方式对本技术作进一步的详细说明。50.图1为本技术提供的一种保护lsass进程的方法的流程图。如图1所示,该方法包括:51.s1:获取目标进程。52.在本实施例中,目标进程可以是新创建的进程,也可以是用户层程序筛选得到的具有lsass进程的读写权限的进程,其中,用户层程序可以通过ntquerysysteminformation函数遍历句柄表筛选得到目标进程,也可以根据实际情况选择其他方式遍历句柄表筛选得到目标进程,本实施例对此不做限制。若目标进程为新创建的进程,则会使用创建的通知事件捕获创建目标进程的行为、监控目标进程的创建,进而获取目标进程;若目标进程为用户层程序筛选得到的具有lsass进程的读写权限的进程,用户层程序在找到目标进程后,会将目标进程的id和打开lsass进程的句柄值通过输入输出请求包(irp)发送至windows的驱动层,此时驱动层会接收用户层程序发送的目标进程的id和打开lsass进程的句柄值,实现获取目标进程。需要说明的是,在本实施例中,用户层程序通过irp将目标进程的id和打开lsass进程的句柄值封装成一种固定的数据结构发送给驱动层,驱动层接收到该数据结构后,需要解析该数据结构,以获取目标进程的id和打开lsass进程的句柄值。53.s2:判断目标进程是否为system、csrss、wininit或lsass进程,若否,则进入步骤s3。54.由于system、csrss、wininit和lsass进程为系统进程,其他进程无法通过正常操作使用上述四个系统进程读写lsass进程,因此为预防部分合法程序不能读写lsass进程,本实施例只是去除非system、csrss、wininit和lsass进程的其他进程的句柄的读写权限。若目标进程为新创建的进程,则通过通知事件能够直接获取目标进程的id,根据目标进程的id判断目标进程是否为system、csrss、wininit或lsass进程;若目标进程为用户层程序筛选得到的具有lsass进程的读写权限的进程,用户层程序会将目标进程的id发送给驱动层,驱动层再根据接收到的目标进程的id判断目标进程是否为system、csrss、wininit或lsass进程。55.s3:调用函数将grantedaccessbits进行去除读写权限的计算,grantedaccessbits为目标进程中打开lsass进程的句柄拥有的权限。56.本实施例中,若判断得出目标进程为非system、csrss、wininit和lsass进程的其他进程,则需要去除目标进程的读写权限,其中,读写权限为读写lsass进程的权限。本实施例通过修改grantedaccessbits的值实现去除目标进程的读写权限,例如,若grantedaccessbits的值为0x10,二进制表示为00010000,其中表示读权的标志位为1,通过将该标志位改为0可实现去除读权,对应地,将表示写权的标志位改为0可实现去除写权。需要说明的是,目标进程中可以有多个句柄,但每个句柄只有一个grantedaccessbits,在本实施例中,grantedaccessbits为目标进程中打开lsass进程的句柄拥有的权限,不仅包括lsass进程的读写权限,还包括查询权限等其他权限。57.若目标进程为新创建的进程,则可以通过通知事件直接获取到grantedaccessbits,再通过修改grantedaccessbits的值实现去除目标进程的读写权限;若目标进程为用户层程序筛选得到的具有lsass进程的读写权限的进程,则需要先计算目标进程的私有句柄表的级别,再根据用户层程序发送的打开lsass进程的句柄值以及计算得到的私有句柄表地址计算句柄属性地址,进而获取与该句柄属性地址对应的handle_table_entry结构体中的grantedaccessbits,其中,不同级别的私有句柄表获取私有句柄表地址的方式不同。此外,在去除目标进程的读写权限后,会返回处理后的句柄,使得其他进程得到该句柄后也无法对lsass进程进行读写操作。58.本实施例提出一种保护lsass进程的方法,该方法先获取目标进程;然后判断该目标进程是否为system、csrss、wininit或lsass进程;若否,则调用函数将grantedaccessbits进行去除读写权限的计算,其中,grantedaccessbits为目标进程中打开lsass进程的句柄拥有的权限。该方法通过去除目标进程的读写lsass进程的权限的方式保护lsass进程,使得其他进程无法通过目标进程对lsass进程进行读写操作,从根源上防止了非法程序读写lsass进程,有力保障了lsass进程的安全。59.若上述实施例中的目标进程为新创建的进程,则在获取目标进程之前,还需要捕获目标进程的创建行为,监控目标进程的创建。本实施例创建通知事件,其中通知事件用于监控目标进程的创建,通过通知事件实现捕获目标进程的创建行为,监控目标进程的创建。需要说明的是,本实施例中通过调用预先注册的函数创建通知事件,通过windows提供的api可实现该函数的注册。60.本实施例创建通知事件,通过通知事件实现监控目标进程的创建,以便获取目标进程。61.若上述实施例中的目标进程为新创建的进程,由于去除读写权限是建立在目标进程拥有读写lsass进程的权限的基础上,因此在判断目标进程是否为system、csrss、wininit或lsass进程之前,应先判断该目标进程是否申请了lsass进程的读写权限。该步骤包括:62.判断目标进程是否申请lsass进程的读写权限;63.若否,则确定目标进程创建成功;64.若是,则进入判断目标进程是否为system、csrss、wininit或lsass进程的步骤。65.在上述实施例中提到,通过通知事件监控目标进程的创建,因此在本实施例中,判断通知事件监控的目标进程是否申请了lsass进程的读写权限,若目标进程未申请lsass进程的读写权限,即说明不需要对其进行去除读写权限的操作,则可以直接确定该目标进程创建成功;若目标进程申请了lsass进程的读写权限,此时需要判断目标进程是否为system、csrss、wininit或lsass进程,根据目标进程是否为system、csrss、wininit或lsass进程的结果决定是否去除目标进程读写lsass进程的权限。66.当目标进程为新创建的进程时,本实施例判断目标进程是否申请lsass进程的读写权限,根据判断结果决定是否需要判断目标进程是否为system、csrss、wininit或lsass进程,当目标进程未申请lsass进程的读写权限时,不需要再判断目标进程是否为system、csrss、wininit或lsass进程,而是直接确定其创建成功,有效简化了操作步骤。67.若上述实施例中的目标进程为用户层程序筛选得到的具有lsass进程的读写权限的进程,则需要从用户层程序中获取目标进程。该步骤包括:68.接收用户层程序发送的目标进程的id和打开lsass进程的句柄值;69.对应地,判断目标进程是否为system、csrss、wininit或lsass进程包括:70.根据目标进程的id判断目标进程是否为system、csrss、wininit或lsass进程。71.在本实施例中,用户层程序调用ntquerysysteminformation函数遍历句柄表,判断进程是否具有lsass进程的读写权限,若该进程没有lsass进程的读写权限,则不需要将其发送给驱动层,以实现用户层程序对目标进程的筛选。本实施例中的目标进程为用户层程序遍历句柄表得到的具有lsass进程的读写权限的进程,用户层程序找到目标进程后,通过irp将目标进程的id和打开lsass进程的句柄值发送给驱动层,驱动层会根据用户层发送的目标进程的id判断目标进程是否为system、csrss、wininit或lsass进程,以及后续根据打开lsass进程的句柄值计算句柄属性地址,获取grantedaccessbits。72.当目标进程为用户层程序筛选得到的具有lsass进程的读写权限的进程时,本实施例接收用户层程序发送的目标进程的id和打开lsass进程的句柄值,以便于根据目标进程的id判断目标进程是否为system、csrss、wininit或lsass进程和后续根据打开lsass进程的句柄值计算句柄属性地址,获取grantedaccessbits。73.在上述实施例调用函数将grantedaccessbits进行去除读写权限的计算之前,需要先获取grantedaccessbits,由于grantedaccessbits存储于与句柄属性地址对应的handle_table_entry结构体中,而句柄属性地址由私有句柄表地址以及用户层程序发送的打开lsass进程的句柄值计算得到,且不同级别的私有句柄表获取私有句柄表地址的方式不同,因此,需要先计算私有句柄表的级别。该步骤包括:74.通过目标进程的eprocess结构体获取objecttable地址;75.根据与objecttable地址对应的handle_table结构体获取tablecode指针;76.读取tablecode指针指向的tablecode地址,并根据tablecode地址计算得到目标进程的私有句柄表的级别。77.在本实施例中,目标进程为用户层程序筛选得到的具有lsass进程的读写权限的进程,一个进程只有一个eprocess结构体,一个eprocess结构体中也只有一个objecttable地址,由于每个结构体的偏移是固定的,因此通过偏移可获取eprocess结构体中的objecttable地址。由于objecttable地址存放的是handle_table结构体,tablecode指针储存于该结构体中,且每个结构体的偏移固定,因此通过偏移可以从handle_table结构体中获取tablecode指针。读取到tablecode指针指向的tablecode地址后,将tablecode地址与3进行&计算,根据计算结果可得到目标进程的私有句柄表的级别。需要说明的是,tablecode地址与3进行&计算的计算结果与私有句柄表的级别存在对应关系,若计算结果为0,则私有句柄表为一级句柄表,若计算结果为1,则私有句柄表为二级句柄表,若计算结果为2,则私有句柄表为三级句柄表,例如,若tablecode的值为0xffff80013a2bf0c1,则将0xffff80013a2bf0c1与3进行&计算,得到计算结果为1,根据该计算结果与私有句柄表的对应关系可得到私有句柄表的级别为二级。78.本实施例先获取目标进程的eprocess结构体中的objecttable地址,然后,获取与objecttable地址对应的handle_table结构体中的tablecode指针,再读取tablecode指针指向的tablecode地址,并根据tablecode地址计算得到目标进程的私有句柄表的级别,以便于根据私有句柄表的级别获取私有句柄表地址,进而计算得到句柄属性地址、获取grantedaccessbits。79.上述实施例对计算私有句柄表的级别的步骤进行了详细说明,由于grantedaccessbits存储于与句柄属性地址对应的handle_table_entry结构体中,而句柄属性地址由私有句柄表地址以及用户层程序发送的打开lsass进程的句柄值计算得到,且不同级别的私有句柄表获取私有句柄表地址的方式不同,因此,不同级别的私有句柄表获取grantedaccessbits的步骤不同。本实施例对私有句柄表为一级句柄表时,获取grantedaccessbits的步骤进行说明。该步骤包括:80.根据tablecode地址计算得到私有句柄表地址;81.根据句柄值和私有句柄表地址计算得到句柄属性地址;82.从与句柄属性地址对应的handle_table_entry结构体中获取grantedaccessbits。83.当私有句柄表为一级句柄表时,所有的句柄属性都保存在一个4096字节大小的页中,32位系统一个句柄属性占8个字节,64位系统占16个字节,不同位数的操作系统每个句柄表最大存储的句柄分别是512个、256个。在本实施例中,先将tablecode地址与~3进行&计算得到私有句柄表地址,然后,将用户层程序发送的打开lsass进程的句柄值除以4,再乘以0x10并加上私有句柄表地址可得到句柄属性地址,由于该句柄属性地址对应的是一个handle_table_entry结构体,因此,可通过句柄属性地址找到该结构体,进而获取该结构体中的grantedaccessbits。84.本实施例对私有句柄表为一级句柄表时,获取grantedaccessbits的步骤进行了详细说明,先根据上述实施例得到的tablecode地址计算得到私有句柄表地址,再根据句柄值和私有句柄表地址计算得到句柄属性地址,从与句柄属性地址对应的handle_table_entry结构体中获取grantedaccessbits,以便去除目标进程读写lsass进程的权限。85.上述实施例对私有句柄表为一级句柄表时,获取grantedaccessbits的步骤进行了说明,由于不同级别的私有句柄表获取grantedaccessbits的步骤不同,因此,本实施例对私有句柄表为二级句柄表时,获取grantedaccessbits的步骤进行说明。该步骤包括:86.根据tablecode地址计算得到存储地址,存储地址包括多个私有句柄表地址;87.根据句柄值确定存储句柄的私有句柄表,并从存储地址中获取与私有句柄表对应的私有句柄表地址;88.根据句柄值和私有句柄表地址计算得到句柄属性地址;89.从与句柄属性地址对应的handle_table_entry结构体中获取grantedaccessbits。90.在本实施例中,tablecode地址与3进行&计算可得到存储地址,与一级句柄表不同的是,在二级句柄表中无法根据tablecode地址直接计算得到私有句柄表地址,而是根据tablecode地址计算得到存储了私有句柄表地址的存储地址。由于存储地址中存储了多个私有句柄表地址,因此还需要根据用户层程序发送的打开lsass进程的句柄值确定存储该句柄的私有句柄表,进而从存储地址中获取与该私有句柄表对应的私有句柄表地址。在得到私有句柄表地址后,将句柄值除以4,再乘以0x10并加上私有句柄表地址可得到句柄属性地址,找到与句柄属性地址对应的handle_table_entry结构体,进而获取该结构体中的grantedaccessbits。此外,若私有句柄表为三级句柄表,则tablecode地址与3进行&计算得到的地址中存储的是二级句柄表的地址,需要按照二级句柄表的计算方式进行计算,以获取grantedaccessbits。91.本实施例对私有句柄表为二级句柄表时,获取grantedaccessbits的步骤进行了详细说明,先根据tablecode地址计算得到存储地址,由于存储地址包括多个私有句柄表地址,因此,再根据句柄值确定存储该句柄的私有句柄表,并从存储地址中获取与该私有句柄表对应的私有句柄表地址,根据句柄值和私有句柄表地址计算得到句柄属性地址,找到handle_table_entry结构体,进而获取该结构体中的grantedaccessbits,以便去除目标进程读写lsass进程的权限。92.在上述实施例中,对于保护lsass进程的方法进行了详细描述,本技术还提供保护lsass进程的装置对应的实施例。需要说明的是,本技术从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。93.图2为本技术提供的一种保护lsass进程的装置的结构图。如图2所示,该装置包括:94.获取模块10,用于获取目标进程;95.判断模块11,用于判断目标进程是否为system、csrss、wininit或lsass进程;96.调用模块12,用于调用函数将grantedaccessbits进行去除读写权限的计算,grantedaccessbits为目标进程中打开lsass进程的句柄拥有的权限。97.由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。98.本实施例所提供的保护lsass进程的装置,通过获取模块获取目标进程;通过判断模块判断目标进程是否为system、csrss、wininit或lsass进程;通过调用模块调用函数将grantedaccessbits进行去除读写权限的计算,其中,grantedaccessbits为目标进程中打开lsass进程的句柄拥有的权限。该装置通过去除目标进程的读写lsass进程的权限的方式,使得其他进程无法通过目标进程对lsass进程进行读写操作,从根源上防止了非法程序读写lsass进程,保护lsass进程。99.图3为本技术另一实施例提供的电子设备的结构图。如图3所示,该电子设备包括:存储器20,用于存储计算机程序;100.处理器21,用于执行计算机程序时实现如上述实施例中所提到的保护lsass进程的方法的步骤。101.本实施例提供的电子设备可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。102.其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理器(digitalsignalprocessor,dsp)、现场可编程门阵列(field-programmablegatearray,fpga)、可编程逻辑阵列(programmablelogicarray,pla)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(centralprocessingunit,cpu);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有图像处理器(graphicsprocessingunit,gpu),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能(artificialintelligence,ai)处理器,该ai处理器用于处理有关机器学习的计算操作。103.存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的保护lsass进程的方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括windows、unix、linux等。数据203可以包括但不限于目标进程打开lsass进程的句柄值等。104.在一些实施例中,电子设备还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。105.本领域技术人员可以理解,图3中示出的结构并不构成对该电子设备的限定,可以包括比图示更多或更少的组件。106.本技术实施例提供的电子设备,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现上述保护lsass进程的方法,效果同上。107.最后,本技术还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的保护lsass进程的方法的步骤。108.可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。109.本技术提供的计算机可读存储介质包括上述提到的保护lsass进程的方法,效果同上。110.以上对本技术所提供的保护lsass进程的方法、装置、电子设备及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。111.还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献