著录项信息
专利名称 | 一种软件自我保护的方法 |
申请号 | CN200710162451.5 | 申请日期 | 2007-10-15 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2009-04-22 | 公开/公告号 | CN101414341 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F21/12 | IPC分类号 | G;0;6;F;2;1;/;1;2;;;G;0;6;F;2;1;/;6;2查看分类表>
|
申请人 | 北京瑞星国际软件有限公司 | 申请人地址 | 北京市海淀区中关村大街22号中科大厦1301室
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京瑞星网安技术股份有限公司 | 当前权利人 | 北京瑞星网安技术股份有限公司 |
发明人 | 周军 |
代理机构 | 永新专利商标代理有限公司 | 代理人 | 王英 |
摘要
一种全方位的软件自我保护方法,包括:建立多个钩子来监控多个可应用于受保护软件的操作请求;当所述多个钩子中的至少之一拦截到相关联的操作请求时,判断所拦截到的操作请求是否与受保护软件有关:如果有关,则拒绝所拦截到的操作请求,如果无关,则允许所拦截到的操作请求;其中,所述多个可应用于受保护软件的操作请求包括:可用于篡改文件的操作请求;可用于篡改注册表键值的操作请求;可用于修改内存、读取内存、锁定内存、修改内存属性的操作请求;可用于操作进程的操作请求;可用于结束、挂起线程的操作请求;可用于注入代码的操作请求;可用于注入动态库的操作请求;可用于排队APC的操作请求;可用于模拟消息的操作请求。
1.一种全方位的软件自我保护方法,包括:
建立多个钩子来监控多个可应用于受保护的所述软件的操作请求;
当所述多个钩子中的至少之一拦截到相关联的操作请求时,判断所拦截到的操作请求是否针对受保护的所述软件:如果是,则拒绝所拦截到的操作请求,如果否,则允许所拦截到的操作请求;
其中,所述多个可应用于受保护软件的操作请求包括:
可用于篡改文件的操作请求;
可用于修改内存、读取内存、锁定内存、修改内存属性的操作请求;
可用于操作进程的操作请求;
可用于结束线程、挂起线程的操作请求;
可用于注入代码的操作请求;
可用于注入动态库的操作请求;
可用于模拟鼠标点击消息的操作请求;
可用于篡改注册表键值的操作请求;
可用于排队APC的操作请求。
2.如权利要求1所述的全方位的软件自我保护方法,其中,
监控所述可用于篡改文件的操作请求通过拦截文件系统的I/O处理函数来执行;
监控所述可用于篡改注册表键值的操作请求通过拦截用于篡改注册表键值的API来执行;
监控所述可用于修改内存、读取内存、锁定内存、修改内存属性的操作请求分别通过拦截用于写虚拟内存、用于读虚拟内存、用于锁定虚拟内存、用于修改虚拟内存属性的API来执行;
监控所述可用于操作进程的操作请求通过拦截用于进程操作的API来执行;
监控所述可用于结束、挂起线程的操作请求通过拦截用于结束、挂起线程的API来执行;
监控所述可用于注入代码的操作请求通过拦截用于注入代码的API来执行;
监控所述可用于注入动态库的操作请求通过拦截用于调用消息钩子的API来执行;
监控所述可用于排队APC的操作请求通过拦截用于对线程排队APC的API来执行;
监控所述可用于模拟鼠标点击消息的操作请求通过拦截用于消息操作的API来执行。
3.如权利要求2所述的全方位的软件自我保护方法,其中,所述文件系统的I/O处理函数包括:IRP_MJ_CREATE、IRP_MJ_WRITE、IRP_MJ_SET_INFORMATION。
4.如权利要求2所述的全方位的软件自我保护方法,其中,所述用于篡改注册表键值的API包括:Zw/NtRenameKey、Zw/NtRestoreKey、Zw/NtSetValueKey、Zw/NtDeleteKey、Zw/NtDeleteValueKey。
5.如权利要求2所述的全方位的软件自我保护方法,其中,所述用于写虚拟内存、用于读虚拟内存、用于锁定虚拟内存、用于修改虚拟内存属性的API包括:Zw/NtWriteVirtualMemory、Zw/NtReadVirtualMemory、Zw/NtLockVirtualMemory、Zw/NtProtectVirtualMemory。
6.如权利要求2所述的全方位的软件自我保护方法,其中,所述用于进程操作的API包括:Zw/NtSetInformationProcess、Zw/NtTerminateProcess、Zw/NtDebugActiveProcess、Zw/NtRequestWaitReplyPort。
7.如权利要求2所述的全方位的软件自我保护方法,其中,所述用于结束、挂起线程的API包括:Zw/NtTerminateThread、Zw/NtSuspendThread。
8.如权利要求2所述的全方位的软件自我保护方法,其中,所述用于注入代码的API包 括:Zw/NtWriteVirtualMemory、Zw/NtCreateThread、Zw/NtSetThreadContext、Zw/NtQueueApcThread。
9.如权利要求2所述的全方位的软件自我保护方法,其中,所述用于调用消息钩子的API包括:KeUserModeCallBack。
10.如权利要求2所述的全方位的软件自我保护方法,其中,所述用于消息操作的API包括:SendMessage、SendInput。
11.如权利要求2所述的全方位的软件自我保护方法,其中,
所述文件系统的I/O处理函数包括:IRP_MJ_CREATE、IRP_MJ_WRITE、IRP_MJ_SET_INFORMATION;
所述用于篡改注册表键值的API包括:Zw/NtRenameKey、Zw/NtRestoreKey、Zw/NtSetValueKey、Zw/NtDeleteKey、Zw/NtDeleteValueKey;
所述用于写虚拟内存、用于读虚拟内存、用于锁定虚拟内存、用于修改虚拟内存 属 性 的 API 包 括:Zw/NtWriteVirtualMemory、Zw/NtReadVirtualMemory、Zw/NtLockVirtualMemory、Zw/NtProtectVirmalMemory;
所 述 用 于 进 程 操 作 的 API 包 括:Zw/NtSetInformationProcess、Zw/NtTerminateProcess、Zw/NtDebugActiveProcess、Zw/NtRequestWaitReplyPort;
所 述 用 于 结 束、挂 起 线 程 操 作 的 API 包 括:Zw/NtSuspendThread、Zw/NtTerminateThread;
所述用于注入代码的API包括:Zw/NtWriteVirtualMemory、Zw/NtCreateThread、Zw/NtSetThreadContext、Zw/NtQueueApcThread;
所述用于调用消息钩子的API包括:KeUserModeCallBack;
所述用于消息操作的API包括:SendMessage、SendInput。
一种软件自我保护的方法\n技术领域\n[0001] 本发明涉及软件安全,尤其涉及一种全方位的软件自我保护的方法。\n[0002] 技术背景\n[0003] 计算机及网络技术的迅猛发展极大地促进了信息交互。但是,与此同时,计算机病毒也伴随技术的发展而不断地演化更新,时至今日,计算机病毒已经严重威胁到了人们对计算机的正常使用。由此,如何防范病毒侵袭已然成为人们关注的一个焦点。\n[0004] 随着反病毒技术的发展,病毒的手段也在不断变化,二者之间的对抗也愈演愈烈。\n病毒对抗安全软件的手法也从变形、隐藏而转变为更直接的破坏,试图通过破坏安全软件的部分或全部功能来达到对抗的目的。\n[0005] 目前的各类安全软件在自我保护方面,通常的保护手段是通过文件监控防止病毒对文件的删除、修改等操作,这种单一的保护措施难以防护不断升级的恶意程序对于安全软件的破坏。\n[0006] 所以,针对病毒发展的这种趋势,迫切需要一种软件自我保护的方法来保护安全软件自身不受破坏,从而更有效地发现和清除恶意程序。\n发明内容\n[0007] 总结上述问题,我们可以看到,就软件自我保护而言,全面地选择可能被各种病毒侵袭的对象来进行防护是至关重要的,从而在各个方面全方位地保护安全软件自身不受病毒的破坏。因此,本发明提供了一种全方位的软件自我防护方法,包括:建立多个钩子来监控多个可用于攻击受保护软件的操作请求;当所述多个钩子中的至少之一拦截到相关联的操作请求时,判断所拦截到的操作请求是否与受保护软件有关:如果有关,则拒绝所拦截到的操作请求,如果无关,则允许所拦截到的操作请求;其中,所述多个可用于攻击受保护软件的操作请求包括:可用于篡改文件的操作请求;可用于修改内存、读取内存、锁定内存、修改内存属性的操作请求;可用于操作进程的操作请求;可用于结束、挂起线程的操作请求;可用于注入代码的操作请求;可用于注入动态库的操作请求;可用于模拟消息的操作请求。\n[0008] 进一步的,对于Windows操作系统,上述全方位的软件自我防护方法还需要监控以下操作请求:可用于篡改注册表键值的操作请求;可用于排队APC(异步过程调用)的操作请求。\n[0009] 进一步而言,对于要拦截的用于各种操作请求的API集合的选择是至关重要的,关系到安全软件本身是否能够防护各种病毒通过各种途径的侵袭。本发明的一个实施例中提供的受监控API集合包括:文件系统的I/O处理函数:IRP_MJ_CREATE、IRP_MJ_WRITE、IRP_MJ_SET_INFORMATION;用于篡改注册表键值的API:Zw/NtRenameKey、Zw/NtRestoreKey、Zw/NtSetValueKey、Zw/NtDeleteKey、Zw/NtDeleteValueKey;用 于写虚拟内存、用于读虚拟内存、用于锁定虚拟内存、用于修改虚拟内存属性的API:Zw/NtWriteVirtualMemory、Zw/NtReadVirtualMemory、Zw/NtLockVirtualMemory、Zw/NtProtectVirtualMemory用 于 进 程 操 作 的API:Zw/NtSetInformationProcess、Zw/NtTerminateProcess、Zw/NtDebugActiveProcess、Zw/NtRequestWaitReplyPort;用 于结束、挂起线程的API:Zw/NtSuspendThread、Zw/NtTerminateThread;用于注入代码的 API:Zw/NtWriteVirtualMemory、Zw/NtCreateThread、Zw/NtSetThreadContext、Zw/NtQueueApcThread用于调用消息钩子的API:KeUserModeCallBack用于消息操作的API:\nSendMessage、SendInput。\n附图说明\n[0010] 通过结合附图的详细说明,本发明的特征和优点将更加清楚,其中:\n[0011] 图1示例性示出了通过监控可应用于受保护软件的操作请求对软件进行保护的流程图。\n具体实施方式\n[0012] 下面结合图1说明按照本发明的全方位软件自我防护策略来实现软件防护的一个具体实施例。\n[0013] 图1示例性示出了通过监控可应用于受保护软件的操作请求对软件进行保护的流程图。在步骤S1中,创建挂钩到某个操作请求的钩子处理例程,用于拦截相关联的操作请求。该操作请求例如可以通过调用API来实现,从而,相应的钩子处理例程通过挂钩这个API进行监控。对于本发明中需要监控的操作请求的集合,可以针对每个操作请求创建相关联的钩子处理例程进行监控。在步骤S2中,当拦截到该操作请求时,例如钩子处理例程拦截到与之关联的API被调用时,在处理该操作请求之前,首先跳转到相关联的钩子处理例程,执行钩子处理例程中的步骤。在步骤S3中,钩子处理例程判断所拦截到的该操作请求是否针对受保护的软件,如果是,则在步骤S4阻止该操作请求,如果否,则在步骤S5允许该操作请求。图1所示的过程并不是唯一的,比如,在允许或拒绝该操作请求之前询问用户,或者在允许或拒绝该API之后向用户显示、进行记录等。\n[0014] 本领域技术人员明了的是,在软件保护领域,对于受保护软件而言,针对各种恶意程序的保护策略以及有针对性选择的受监控API集合是决定软件自我保护是否有效的关键。\n[0015] 下面描述按照本发明的全方位软件自我防护策略来选择受监控API集合从而实现软件防护的一个具体实施例。\n[0016] 1)关于文件操作\n[0017] 本发明的保护策略的一个方面是针对文件的保护。修改或删除安全软件的文件是很常见的恶意程序破坏手段,现有的软件自我保护方法通常是针对这种破坏手段,通过对文件进行监控来实现自我保护。\n[0018] 在本发明的保护策略中,可以通过拦截文件系统驱动的以下I/O请求包(IRP)处理函数来防护恶意程序对于受保护文件的各种操作:\n[0019] a)IRP_MJ_CREATE:创建、打开文件请求\n[0020] b)IRP_MJ_WRITE:写文件请求\n[0021] c)IRP_MJ_SET_INFORMATION:设置文件信息请求,比如删除、移动文件等操作会发起该请求。\n[0022] 通过对上述I/O处理函数的监控,可以有效地防止针对受保护软件的文件删除、修改等操作。\n[0023] 2)关于注册表操作\n[0024] 本发明的保护策略的另一个方面是针对注册表的保护。在Windows操作系统中,很多软件需要依赖注册表中的某些键值,如果这些键值被修改或删除,这些软件便会发生错误。所以有可能通过改写或删除这些键值来破坏某些安全软件的功能。另外,操作系统还有很多注册表键值会影响一个程序的执行,也有可能通过修改这些键值来使安全软件的部分功能失效。\n[0025] 因此,应该防止恶意程序针对安全软件的注册表操作,在本实施例中,通过拦截用于操作注册表、从而有可能被用来攻击注册表的API来保护安全软件。这里针对注册表的保护设计出包含以下API集合的拦截策略,通过拦截该集合中的API来实现对注册表键值的全面保护,防止注册表键值被篡改:\n[0026] a)Zw/NtRenameKey:重命名一个键\n[0027] b)Zw/NtRestoreKey:恢复一个已保存到文件中的键\n[0028] c)Zw/NtSetValueKey:设置键值\n[0029] d)Zw/NtDeleteKey:删除键\n[0030] e)Zw/NtDeleteValueKey:删除键值\n[0031] 结合图1所示的监控处理过程,通过挂钩上述用于操作注册表的API,相关联的钩子处理例程通过判断所拦截到的任意上述API是否与受保护软件有关,阻止可以对受保护软件的注册表进行破坏的操作请求。\n[0032] 这里应该注意的是,在现有的操作系统中,只有Windows操作系统具有注册表。因此,就本领域现状而言,对于注册表的保护只是针对Windows操作系统而言的,对于其他操作系统则不需要考虑这个方面。然而,未来可能出现的操作系统中如果具备类似于Windows操作系统中的注册表,则针对这种操作系统的注册表保护策略也在本发明的范围之内。\n[0033] 3)关于内存操作\n[0034] 本发明的保护策略的另一个方面是针对内存的保护。通过锁定、修改、读取内存、修改内存属性等操作,有可能直接攻击安全软件。锁定一般用来在内核态安全地读写用户态内存,当恶意驱动程序需要读写用户态内存时会先锁定这些内存页。另外,通过修改安全软件的内存数据、内存块属性或代码等可以影响安全软件线程的执行,比如隐藏一些对象如文件等,使这些安全软件无法正常工作,或者直接打开安全软件的进程并调用WriteProcessMemory直接修改,也可以通过注入代码或动态库到安全软件的进程来进行修改。\n[0035] 因此,应该防止恶意程序通过内存操作来破坏安全软件,这里通过监控用于操作内存的API来保护安全软件。设计出包含以下API集合的拦截策略,通过拦截该集合的API来防止内存被修改、被读取、被锁定、被修改属性:\n[0036] a)Zw/NtWriteProcessMemory:写虚拟内存\n[0037] b)Zw/NtReadProcessMemory:读虚拟内存\n[0038] c)Zw/NtLockVirtualMemory:锁定虚拟内存\n[0039] d)Zw/NtProtectVirtualMemory:修改虚拟内存页保护属性\n[0040] 结合图1所示的监控处理过程,通过挂钩上述用于操作内存的API,相关联的钩子处理例程通过判断所拦截到的任意上述API是否与受保护软件有关,进而阻止针对受保护软件的内存操作请求。\n[0041] 4)关于进程操作\n[0042] 本发明的保护策略的另一个方面是针对进程的保护。通过结束安全软件的进程可以阻止安全软件发挥作用,可以通过以下方式来结束安全软件的进程:调用TerminateProcess、结束进程内的所有线程、模拟鼠标点击来点击窗口的关闭按钮。另外,可以通过调试目标进程来控制安全软件的进、线程等,并可以通过停止调试来结束目标进程。\n[0043] 因此,应该防止恶意程序通过进程操作对软件的破坏,这里通过监控用于操作进程的API来保护安全软件。设计出包含以下API集合的拦截策略,通过拦截该集合的API来实现对进程的保护,使恶意程序不能够直接对受保护软件的进程执行任何操作,防止受保护软件的进程被结束和被调试:\n[0044] a)Zw/NtSetInformationProcess:设置进程属性信息,比如优先级、调试端口、访问权限等\n[0045] b)Zw/NtTerminateProcess:结束进程\n[0046] c)Zw/NtDebugActiveProcess:调试进程\n[0047] d)Zw/NtRequestWaitReplyPort:与本地过程调用相关,调试时会用到该API[0048] 结合图1所示的监控处理过程,通过挂钩上述用于操作进程的API,相关联的钩子处理例程通过判断所拦截到的任意上述API是否与受保护软件有关,进而阻止针对受保护软件的进程操作请求。\n[0049] 5)关于线程操作\n[0050] 本发明的保护策略的另一个方面是针对线程的保护。现有的安全软件对进程的防护只做到防止被TerminateThread,所以通过结束线程而实现结束进程的方法有可能被用来攻击这种安全软件。另外,通过挂起安全软件的一些线程可以使安全软件的部分功能失效。\n[0051] 因此,应该防止恶意程序通过结束、挂起线程对软件的破坏,这里通过监控用于结束、挂起线程的API来保护安全软件。通过拦截以下API集合来实现对线程的保护,防止线程被结束、被挂起:\n[0052] a)Zw/NtTerminateThread:结束线程\n[0053] b)Zw/NtSuspendThread:挂起线程\n[0054] 结合图1所示的监控处理过程,通过挂钩上述用于操作线程的API,相关联的钩子处理例程通过判断所拦截到的任意上述API是否与受保护软件有关,阻止针对受保护软件的线程操作请求,从而阻止例如结束、挂起线程这样的对线程的任意直接操作。\n[0055] 6)关于排队APC\n[0056] 对于排队APC的防护也是本发明的保护策略的一个方面。APC称为异步过程调用,是一种线程相关的回调机制。当向一个线程的APC队列排队一个APC后,当该线程的一个Alertable等待满足时,APC函数将得以运行。排队APC机制很可能被恶意程序利用来对安全软件进行破坏,例如,当一个Alertable的WaitForSingleObjectEx满足时,恶意程序创建的APC函数运行。这里通过监控用于对一个线程排队APC的以下API来从这个方面保护安全软件:\n[0057] Zw/NtQueueApcThread:对一个线程排队APC\n[0058] 结合图1所示的监控处理过程,通过挂钩上述用于排队APC的API,相关联的钩子处理例程通过判断所拦截到的上述API是否与受保护软件有关,阻止针对受保护软件的排队APC操作请求。\n[0059] 这里应该注意的是,与上述注册表的情况类似,在现有的操作系统中,只有Windows操作系统具有APC机制。因此,就本领域现状而言,对于排队APC的保护只是针对Windows操作系统而言的,对于其他操作系统则不需要考虑这个方面。然而,未来可能出现的操作系统中如果具备类似于Windows操作系统中的APC机制,则针对这种操作系统关于排队APC方面的保护策略也在本发明的范围之内。\n[0060] 7)关于注入代码\n[0061] 本发明的保护策略的另一个方面是对于注入代码的防护。注入代码通常需要两个步骤:把代码写入目标进程,例如可以通过WriteProcessMemory或在内核态通过KeAttachProcess附加到目标进程后直接写内存;激活远程代码,例如可以通过CreateRemoteThread、或通过APC、或通过设置context的IP(指令指针)来进行激活。\n[0062] 这里通过监控用于注入代码的API来保护安全软件,通过拦截以下API集合来防止针对受保护软件的代码注入:\n[0063] a)Zw/NtWriteVirtualMemory:写虚拟内存\n[0064] b)Zw/NtCreateThread:创建本地、远程进程\n[0065] c)Zw/NtSetThreadContext:设置线程环境,例如寄存器环境\n[0066] d)Zw/NtQueueApcThread:对一个线程排队APC\n[0067] 其中,通过拦截Zw/NtWriteVirtualMemory来防止把代码直接写入内存,从而防止把代码写入目标进程;并通过拦截Zw/NtCreateThread、Zw/NtSetThreadContext、Zw/NtQueueApcThread来分别防止激活远程代码的上述三种可能方式。\n[0068] 结合图1所示的监控处理过程,通过挂钩上述可用于注入代码的API,相关联的钩子处理例程通过判断所拦截到的任意上述API是否与受保护软件有关,阻止针对受保护软件的操作请求。\n[0069] 8)关于注入动态库\n[0070] 本发明的保护策略的另一个方面是对于注入动态库的防护。注入动态库可以通过两种方式实现:向目标进程写入加载动态库的代码并激活,这与注入代码的手段本质上相同;通过消息钩子注入动态库。\n[0071] 针对通过消息钩子注入动态库对软件的破坏手段,通过拦截KeUserModeCallBack来监控消息钩子调用,从而阻止注入动态库。\n[0072] 结合图1所示的监控处理过程,通过挂钩上述在调用消息钩子时会被调用的API,相关联的钩子处理例程通过判断所拦截到的上述API是否与受保护软件有关,进而阻止针对受保护软件的注入动态库操作请求。\n[0073] 9)关于消息操作\n[0074] 本发明的保护策略的另一个方面是对于消息模拟操作的防护。通过前面的分析可以知道,可以通过模拟鼠标点击消息来模拟点击窗口的关闭按钮,来结束安全软件的进程。\n然而,模拟消息还可以实现很多恶意行为,如模拟消息来关闭安全软件的提示窗口,使用户无法发现恶意程序的攻击等。\n[0075] 因此应该防止恶意程序通过消息模拟操作对软件的破坏,这里通过监控用于消息操作的API来保护安全软件。设计出包含以下API集合的拦截策略,通过拦截该集合的API来实现对消息模拟的监控,防止通过消息模拟操作来结束受保护软件的进程,以及防止通过消息模拟操作对受保护软件的其他恶意操作:\n[0076] a)SendMessage:模拟发送消息\n[0077] b)SendInput:模拟输入\n[0078] 结合图1所示的监控处理过程,通过挂钩上述用于消息操作的API,相关联的钩子处理例程通过判断所拦截到的上述API是否与受保护软件有关,阻止针对受保护软件的消息操作请求。\n[0079] 通过对按照本发明的软件保护策略所选择的上述API的监控,可以全面有效地保护软件免遭恶意程序的各种可能方式的攻击。应该注意,上述各组API集合有可能包含相同的API,这只是为了针对不同的保护方面做出更加清楚的描述,并不影响这些API集合的监视在功能上的实现。\n[0080] 上述各组优选的API集合,对于对应的保护对象是有机的整体,能够全面地提高软件保护的效果。但是,根据本发明的软件保护策略所选择的上述API集合也不是唯一的,例如,可以用具有相同或相似功能的API进行替换,并且,不同版本的操作系统中,执行相同功能的API可能具有不同的名称,因此,不能将本发明限制在具体实施例中所给出的API集合,本发明包含符合本发明原理的所有修改和变形。
法律信息
- 2018-03-16
专利权人的姓名或者名称、地址的变更
专利权人由北京瑞星信息技术股份有限公司变更为北京瑞星网安技术股份有限公司
地址由100190 北京市海淀区中关村大街22号中科大厦1301室变更为100190 北京市海淀区中关村大街22号中科大厦1301室
- 2016-05-11
专利权人的姓名或者名称、地址的变更
专利权人由北京瑞星信息技术有限公司变更为北京瑞星信息技术股份有限公司
地址由100190 北京市海淀区中关村大街22号中科大厦1301室变更为100190 北京市海淀区中关村大街22号中科大厦1301室
- 2014-12-10
- 2010-12-01
实质审查的生效
IPC(主分类): G06F 21/22
专利申请号: 200710162451.5
申请日: 2007.10.15
- 2010-05-19
专利申请权的转移
登记生效日: 2010.04.13
申请人由北京瑞星国际软件有限公司变更为北京瑞星信息技术有限公司
地址由100080 北京市中关村大街22号中科大厦1305室变更为100190 北京市海淀区中关村大街22号中科大厦1301室
- 2009-04-22
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2007-06-20
|
2006-07-21
| | |
2
| |
2007-07-25
|
2006-11-27
| | |
3
| | 暂无 |
1987-11-03
| | |
4
| |
2007-08-15
|
2006-04-14
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |