CN111538986B - 一种基于调用栈轨迹进行动态度量计算机可信状态装置及其方法 - Google Patents
一种基于调用栈轨迹进行动态度量计算机可信状态装置及其方法 Download PDFInfo
- Publication number
- CN111538986B CN111538986B CN202010293691.4A CN202010293691A CN111538986B CN 111538986 B CN111538986 B CN 111538986B CN 202010293691 A CN202010293691 A CN 202010293691A CN 111538986 B CN111538986 B CN 111538986B
- Authority
- CN
- China
- Prior art keywords
- state
- unit
- call stack
- user
- thread
- 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.)
- Active
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/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
技术领域
本发明属于信息安全领域,特别涉及一种基于调用栈轨迹进行动态度量计算机可信状态装置及其方法。
背景技术
可信计算作为一种主动防御技术,不需要依赖病毒库的升级更新,就可以自动免疫诸如勒索病毒、广告木马、挖矿机等新型安全威胁。传统可信计算技术依赖对合法的引导程序、引导程序配置文件、操作***内核乃至保存在磁盘上的操作***内核之外的用户态可执行文件、动态链接库文件做事前的度量,再根据实际载入内存的可执行镜像的度量和之前预存的度量进行比对。如果比对不一致,自然可以视作出现了非法文件的加载,可信***因此得以拦截未知的安全威胁。
近年来,随着国家计算机等级保护新规范的出台,可信计算***除了传统的对可执行文件内容进行度量外,又引入了对可信行为的度量,主要指对受监控的内存中的可执行文件镜像和动态链接库镜像的代码中调用各种***调用(System Call,如打开文件、打开网络套接字、打开进程、进行内存映射等)的行为进行监控。一旦代码进行了超出该段代码预期的行为的***调用,就可以判断该代码在运行过程中,因为恶意输入等原因的影响,代码段遭到了栈溢出、堆溢出等攻击,使得代码调用到了本不该调用的***调用。
然而,存在一些关键的可执行程序,为实现其自身功能,需要调用前述各种类型的***调用。例如,浏览器程序打开网络套接字是非常合理的行为。如果有恶意输入攻击了浏览器程序中的漏洞,使浏览器调用了一个非设计者预期的“打开网络套接字”***调用(比如向攻击者发送一些受害者主机上的数据),那么在可信计算***的监控程序看来,“打开网络套接字”并不是浏览器程序的异常行为,从而不会触发警报。
因此如何实现更细粒度地监控程序行为,区分合法的“按设计如此的”调用(即可信的调用)和非法“与设计有差异的”调用(即非可信的调用)就成为了一个值得考虑的问题。
发明内容
发明目的:针对上述缺陷,本发明提供一种基于调用栈轨迹进行动态度量计算机可信状态装置及其方法,解决了传统可信计算度量对可信行为的度量过于粗略的问题。
技术方案:本发明提出一种基于调用栈轨迹进行动态度量计算机可信状态装置,包括进程监控单元、线程监控单元、状态收集构建单元、状态度量单元、用户态联络单元、状态度量匹配单元和调用栈轨迹存储单元;所述进程监控单元和线程监控单元与状态收集构建单元相连,状态收集构建单元与状态度量单元相连,状态度量单元与用户态联络单元相连,用户态联络单元与状态度量匹配单元相连,状态度量匹配单元与调用栈轨迹存储单元相连。
进一步的,所述进程监控单元用于在内核态注册进程监控回调函数,使得操作***建立进程和销毁进程时通知回调函数;所述进程监控回调函数负责通知状态收集构建单元收集进程和进程下各个线程的调用栈信息。
进一步的,所述线程监控单元用于在内核态注册线程监控回调函数,使得操作***建立进程和销毁进程内的线程时通知线程监控回调函数;所述线程监控回调函数负责通知状态收集构建单元收集线程所属进程的各个线程的调用栈信息。
进一步的,所述状态收集构建单元用于在内核态,根据进程监控单元和线程监控单元传递的进程号参数,取得该进程号下所有线程的调用栈信息,并传递给状态度量单元。
进一步的,所述状态度量单元用于在内核态,根据进程的所有线程的调用栈信息,生成调用栈度量,并传递给用户态联络单元。
进一步的,所述用户态联络单元用于在内核态,通知位于用户态的状态度量匹配单元程序对进程的所有线程的调用栈信息的度量进行匹配。
进一步的,所述状态度量匹配单元用于在用户态,接收从内核态的用户态联络单元发送而来的进程的所有线程的调用栈信息的度量,并调用调用栈轨迹存储单元的对应进程调用栈轨迹度量,进行匹配判断;如果匹配失败,则向用户告警并记录告警日志;此时用户计算机动态可信状态为可信完整性遭到破坏;如果匹配成功,则用户计算机动态可信状态继续保持可信状态。
一种如上所述的基于调用栈轨迹进行动态度量计算机可信状态装置的动态度量计算机可信状态方法,包括如下步骤:
(1)在调用栈轨迹存储单元,静态分析和预存待度量的可执行镜像的调用栈轨迹度量;
(2)在内核态,调用进程监控单元和线程监控单元,注册进程监控回调函数和线程监控回调函数,对***内的所有进程及进程下线程的变动进行监控;
(3)在进程及进程下线程发生建立、销毁、暂停等变动时,状态收集构建单元根据进程监控单元和线程监控单元传递的进程号参数,取得该进程号下所有线程的调用栈信息,并传递给状态度量单元;
(4)在内核态,状态度量单元根据状态收集构建单元汇报的进程的所有线程的调用栈信息,生成调用栈度量,并传递给用户态联络单元;
(5)在内核态,用户态联络单元通知位于用户态的状态度量匹配单元,对发生变动的进程及其线程的调用栈度量进行匹配;
(6)在用户态对调用栈信息进行比对。
进一步的,所述步骤(6)中在用户态对调用栈信息进行比对的具体步骤如下:在用户态,通过状态度量匹配单元,对照发生变动的进程及其线程的调用栈度量和从调用栈轨迹存储单元查找而来的可执行镜像的预先静态分析过的调用栈信息,匹配内核传来的度量是否匹配静态分析的预存调用栈信息度量;如果匹配失败,则向用户告警并记录告警日志,此时用户计算机动态可信状态为可信完整性遭到破坏;如果匹配成功,则用户计算机动态可信状态继续保持可信状态。
本发明采用上述技术方案,具有以下有益效果:
本发明通过对进程、线程和线程调用栈的监控,和预存的代码可能的函数调用栈数据进行比对,从而发现代码执行流中的可能存在的异常行为,相对于只监控***调用类型的动态可信度量方案,检测的力度和深度都更进一步。
附图说明
图1为本发明的结构示意图。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
下面结合附图对本发明实施方法做更详细的描述。
如图1所示,本发明描述的基于调用栈轨迹进行动态度量计算机可信状态的装置,包括进程监控单元、线程监控单元、状态收集构建单元、状态度量单元、用户态联络单元、状态度量匹配单元和调用栈轨迹存储单元。进程监控单元和线程监控单元与状态收集构建单元相连,状态收集构建单元与状态度量单元相连,状态度量单元与用户态联络单元相连,用户态联络单元与状态度量匹配单元相连,用户态联络单元与调用栈轨迹存储单元相连。
所述进程监控单元,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该程序时实现:在内核态注册进程监控回调函数,使得操作***建立进程和销毁进程时通知回调函数。进程监控回调函数负责通知状态收集构建单元收集进程和进程下各个线程的调用栈信息。
所述线程监控单元,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该程序时实现:在内核态注册线程监控回调函数,使得操作***建立进程和销毁进程内的线程时通知线程监控回调函数。线程监控回调函数负责通知状态收集构建单元收集线程所属进程的各个线程的调用栈信息。
所述状态收集构建单元,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该程序时实现:在内核态,根据进程监控单元和线程监控单元传递的进程号参数,取得该进程号下所有线程的调用栈信息,并传递给状态度量单元。
所述状态度量单元,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该程序时实现:在内核态,根据进程的所有线程的调用栈信息,生成调用栈度量,并传递给用户态联络单元。
所述用户态联络单元,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该程序时实现:在内核态,通知位于用户态的状态度量匹配单元程序对进程的所有线程的调用栈信息的度量进行匹配。
所述状态度量匹配单元,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该程序时实现:在用户态,接收从内核态的用户态联络单元发送而来的进程的所有线程的调用栈信息的度量,并调用调用栈轨迹存储单元的对应进程调用栈轨迹度量,进行匹配判断。如果匹配失败,则向用户告警并记录告警日志。此时用户计算机动态可信状态为可信完整性遭到破坏。如果匹配成功,则用户计算机动态可信状态继续保持可信状态。
所述调用栈轨迹存储单元,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该程序时实现:在用户态,向状态度量匹配单元提供进程对应的可执行镜像的预先静态分析过的调用栈轨迹度量。
下面对通过本装置实现基于调用栈轨迹进行动态度量计算机可信状态的流程做具体描述:
1.静态分析调用栈轨迹度量并存储至调用栈轨迹存储单元
静态分析可执行镜像的函数调用栈轨迹可使用业内通行的做法,比如:可执行镜像(可执行文件和动态链接库)做二进制分析和反汇编,可得每一个可导出函数(或过程)和未导出函数的头部地址、偏移信息及相互调用信息(通过反汇编call指令),进而对每一个函数,可以推导出该函数被谁调用,进而递归得到,每一个函数在调用栈的栈顶时,其调用栈栈顶之下各个函数调用的轨迹。
为数据存储的效率考虑,每个函数的调用栈可以汇总在一张函数调用关系有向图上。图中的每个节点表示一个函数,其箭头方向表示栈向下的方向。此函数调用关系总图即为静态分析调用栈轨迹度量。
2.注册进程监控回调函数和线程监控回调函数
此步骤按操作***内核开发规范进行。如在Windows***中,使用PsSetCreateProcessNotifyRoutine和PsSetCreateThreadNotifyRoutine分别注册进程创建回调函数和线程创建回调函数,而使用定时器定时进行进程和线程变动与销毁扫描,回调函数注册在定时器之下。
3.按进程号收集该进程名下线程的调用栈信息
此步骤按一般操作***内核开发方式进行。如在Windows***中,可使用PsGetNextProcess、PsGetNextProcessThread等半函数(在Windows Research Kernel中公开)取得KTHREAD结构体数据,从中获得InitialStack、StackLimit等调用栈信息。
4.对调用栈信息生成度量
将同一进程名下各线程的调用栈返回地址(即标识函数入口地址)连接起来,即为调用栈信息的度量。
5.通知用户态进行度量
此步骤按操作***内核开发规范进行。如在Windows***中,使用IoControl***调用从用户态传入一个通知事件句柄,在欲通知用户态时,对此通知事件句柄进行Set操作。
6.在用户态对调用栈信息进行比对
将从内核传来的同一进程名下各线程的调用栈信息度量重新表达为调用函数节点间的当前调用关系图,与调用栈轨迹存储单元中的函数调用关系图进行搜索比对,如当前调用关系图是函数调用关系总图的子图,那么说明匹配成功,否则匹配失败。如果匹配失败,则向用户告警并记录告警日志。此时用户计算机动态可信状态为可信完整性遭到破坏。如果匹配成功,则用户计算机动态可信状态继续保持可信状态。
Claims (3)
1.一种基于调用栈轨迹进行动态度量计算机可信状态装置,其特征在于:包括进程监控单元、线程监控单元、状态收集构建单元、状态度量单元、用户态联络单元、状态度量匹配单元和调用栈轨迹存储单元;所述进程监控单元和线程监控单元与状态收集构建单元相连,状态收集构建单元与状态度量单元相连,状态度量单元与用户态联络单元相连,用户态联络单元与状态度量匹配单元相连,状态度量匹配单元与调用栈轨迹存储单元相连;
所述进程监控单元用于在内核态注册进程监控回调函数,使得操作***建立进程和销毁进程时通知回调函数;所述进程监控回调函数负责通知状态收集构建单元收集进程和进程下各个线程的调用栈信息;
所述线程监控单元用于在内核态注册线程监控回调函数,使得操作***建立进程和销毁进程内的线程时通知线程监控回调函数;所述线程监控回调函数负责通知状态收集构建单元收集线程所属进程的各个线程的调用栈信息;
所述状态收集构建单元用于在内核态,根据进程监控单元和线程监控单元传递的进程号参数,取得该进程号下所有线程的调用栈信息,并传递给状态度量单元;
所述状态度量单元用于在内核态,根据进程的所有线程的调用栈信息,生成调用栈度量,并传递给用户态联络单元;
所述用户态联络单元用于在内核态,通知位于用户态的状态度量匹配单元对进程的所有线程的调用栈信息的度量进行匹配;
所述状态度量匹配单元用于在用户态,接收从内核态的用户态联络单元发送而来的进程的所有线程的调用栈信息的度量,并调用调用栈轨迹存储单元的对应进程调用栈轨迹度量,进行匹配判断;如果匹配失败,则向用户告警并记录告警日志;此时用户计算机动态可信状态为可信完整性遭到破坏;如果匹配成功,则用户计算机动态可信状态继续保持可信状态。
2.一种根据权利要求1所述的基于调用栈轨迹进行动态度量计算机可信状态装置的动态度量计算机可信状态方法,其特征在于,包括如下步骤:
(1)在调用栈轨迹存储单元,静态分析和预存待度量的可执行镜像的调用栈轨迹度量;
(2)在内核态,调用进程监控单元和线程监控单元,注册进程监控回调函数和线程监控回调函数,对***内的所有进程及进程下线程的变动进行监控;
(3)在进程及进程下线程发生建立、销毁、暂停变动时,状态收集构建单元根据进程监控单元和线程监控单元传递的进程号参数,取得该进程号下所有线程的调用栈信息,并传递给状态度量单元;
(4)在内核态,状态度量单元根据状态收集构建单元汇报的进程的所有线程的调用栈信息,生成调用栈度量,并传递给用户态联络单元;
(5)在内核态,用户态联络单元通知位于用户态的状态度量匹配单元,对发生变动的进程及其线程的调用栈度量进行匹配;
(6)在用户态对调用栈信息进行比对。
3.根据权利要求2所述的一种基于调用栈轨迹进行动态度量计算机可信状态装置的动态度量计算机可信状态方法,其特征在于:所述步骤(6)中在用户态对调用栈信息进行比对的具体步骤如下:在用户态,通过状态度量匹配单元,对照发生变动的进程及其线程的调用栈度量和从调用栈轨迹存储单元查找而来的可执行镜像的预先静态分析过的调用栈信息,匹配内核传来的度量是否匹配静态分析的预存调用栈信息度量;如果匹配失败,则向用户告警并记录告警日志,此时用户计算机动态可信状态为可信完整性遭到破坏;如果匹配成功,则用户计算机动态可信状态继续保持可信状态。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010293691.4A CN111538986B (zh) | 2020-04-15 | 2020-04-15 | 一种基于调用栈轨迹进行动态度量计算机可信状态装置及其方法 |
PCT/CN2020/115905 WO2021208353A1 (zh) | 2020-04-15 | 2020-09-17 | 一种基于调用栈轨迹进行动态度量计算机可信状态装置及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010293691.4A CN111538986B (zh) | 2020-04-15 | 2020-04-15 | 一种基于调用栈轨迹进行动态度量计算机可信状态装置及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111538986A CN111538986A (zh) | 2020-08-14 |
CN111538986B true CN111538986B (zh) | 2023-05-09 |
Family
ID=71972990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010293691.4A Active CN111538986B (zh) | 2020-04-15 | 2020-04-15 | 一种基于调用栈轨迹进行动态度量计算机可信状态装置及其方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111538986B (zh) |
WO (1) | WO2021208353A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111538986B (zh) * | 2020-04-15 | 2023-05-09 | 南京东科优信网络安全技术研究院有限公司 | 一种基于调用栈轨迹进行动态度量计算机可信状态装置及其方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110413432A (zh) * | 2019-07-02 | 2019-11-05 | Oppo广东移动通信有限公司 | 一种信息处理方法、电子设备及存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7458078B2 (en) * | 2003-11-06 | 2008-11-25 | International Business Machines Corporation | Apparatus and method for autonomic hardware assisted thread stack tracking |
CN100428157C (zh) * | 2005-10-19 | 2008-10-22 | 联想(北京)有限公司 | 一种可进行完整性检测的计算机***和方法 |
US8245002B2 (en) * | 2008-10-08 | 2012-08-14 | International Business Machines Corporation | Call stack protection |
CN102438026B (zh) * | 2012-01-12 | 2014-05-07 | 冶金自动化研究设计院 | 工业控制网络安全防护方法及*** |
CN103577748B (zh) * | 2013-11-20 | 2017-01-18 | 北京可信华泰信息技术有限公司 | 基于可信计算的动态度量方法与管理*** |
CN104573516B (zh) * | 2014-12-25 | 2017-11-28 | 中国科学院软件研究所 | 一种基于安全芯片的工控***可信环境管控方法和平台 |
US11416612B2 (en) * | 2018-03-16 | 2022-08-16 | Acronis International Gmbh | Protecting against malware code injections in trusted processes |
CN109614290A (zh) * | 2018-12-10 | 2019-04-12 | 苏州思必驰信息科技有限公司 | 容器中的进程异常信息记录方法及*** |
CN111538986B (zh) * | 2020-04-15 | 2023-05-09 | 南京东科优信网络安全技术研究院有限公司 | 一种基于调用栈轨迹进行动态度量计算机可信状态装置及其方法 |
-
2020
- 2020-04-15 CN CN202010293691.4A patent/CN111538986B/zh active Active
- 2020-09-17 WO PCT/CN2020/115905 patent/WO2021208353A1/zh active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110413432A (zh) * | 2019-07-02 | 2019-11-05 | Oppo广东移动通信有限公司 | 一种信息处理方法、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2021208353A1 (zh) | 2021-10-21 |
CN111538986A (zh) | 2020-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106991324B (zh) | 一种基于内存保护类型监控的恶意代码跟踪识别方法 | |
CN103955645B (zh) | 恶意进程行为的检测方法、装置及*** | |
US8181248B2 (en) | System and method of detecting anomaly malicious code by using process behavior prediction technique | |
US7231667B2 (en) | System and method for computer virus detection utilizing heuristic analysis | |
KR100910761B1 (ko) | 프로세스 행위 예측 기법을 이용한 비정형 악성코드 탐지방법 및 그 시스템 | |
CN100527147C (zh) | 一种网页安全信息检测***及方法 | |
US20140053267A1 (en) | Method for identifying malicious executables | |
US20130305373A1 (en) | Method and apparatus for inspecting non-portable executable files | |
US20190147163A1 (en) | Inferential exploit attempt detection | |
CN105408911A (zh) | 硬件和软件执行概况分析 | |
JP2010182019A (ja) | 異常検知装置およびプログラム | |
GB2485622A (en) | Server detecting malware in user device. | |
CN113051573B (zh) | 一种基于大数据的主机安全实时监控警报*** | |
CN107666464B (zh) | 一种信息处理方法及服务器 | |
CN105378745A (zh) | 基于安全问题禁用和启用节点 | |
CN101599113A (zh) | 驱动型恶意软件防御方法和装置 | |
CN115840940A (zh) | 一种无文件木马检测方法、***、介质及设备 | |
CN105791250B (zh) | 应用程序检测方法及装置 | |
CN111538986B (zh) | 一种基于调用栈轨迹进行动态度量计算机可信状态装置及其方法 | |
US11449618B2 (en) | Active testing of access control policy | |
KR101580624B1 (ko) | 벌점기반의 알려지지 않은 악성코드 탐지 및 대응 방법 | |
JP2010182020A (ja) | 不正検知装置およびプログラム | |
CN113722712A (zh) | 一种基于hook的程序恶意行为的检测方法及相关装置 | |
CN105912929A (zh) | 一种基于国产tcm的动态度量方法 | |
CN114297647B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |