CN114692153B - 基于java程序的恶意代码检测方法、设备及存储介质 - Google Patents
基于java程序的恶意代码检测方法、设备及存储介质 Download PDFInfo
- Publication number
- CN114692153B CN114692153B CN202210375658.5A CN202210375658A CN114692153B CN 114692153 B CN114692153 B CN 114692153B CN 202210375658 A CN202210375658 A CN 202210375658A CN 114692153 B CN114692153 B CN 114692153B
- Authority
- CN
- China
- Prior art keywords
- jvm
- memory
- jit
- class
- obtaining
- 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
- 238000001514 detection method Methods 0.000 title claims abstract description 31
- 238000000034 method Methods 0.000 claims abstract description 46
- 230000008569 process Effects 0.000 claims abstract description 27
- 241001377938 Yara Species 0.000 claims abstract description 8
- 230000002159 abnormal effect Effects 0.000 claims abstract description 8
- 238000004590 computer program Methods 0.000 claims description 11
- 238000001914 filtration Methods 0.000 claims description 4
- 230000006870 function Effects 0.000 claims description 4
- 230000002547 anomalous effect Effects 0.000 claims 1
- 238000002347 injection Methods 0.000 abstract description 5
- 239000007924 injection Substances 0.000 abstract description 5
- 230000007246 mechanism Effects 0.000 abstract description 2
- ZXQYGBMAQZUVMI-GCMPRSNUSA-N gamma-cyhalothrin Chemical compound CC1(C)[C@@H](\C=C(/Cl)C(F)(F)F)[C@H]1C(=O)O[C@H](C#N)C1=CC=CC(OC=2C=CC=CC=2)=C1 ZXQYGBMAQZUVMI-GCMPRSNUSA-N 0.000 description 20
- 239000003795 chemical substances by application Substances 0.000 description 7
- 241000239226 Scorpiones Species 0.000 description 4
- 239000008186 active pharmaceutical agent Substances 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 241000283086 Equidae Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000002155 anti-virotic effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000003071 parasitic effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种基于JAVA程序的恶意代码检测方法、设备及存储介质,本方法首先在目标进程中对JVM代码段内存进行检测;当检测到JVM代码段内存被修改后,获取JIT权限;在JIT权限下,获取到JVM加载的所有CLASS包名,对JVM所加载的类进行过滤,通过JIT接口获取过滤后的CLASS原数据,并通过YARA进行原数据扫描;最后获得扫描后的异常CLASS数据,并进行提取,可以看出,本发明通过系统级模块注入方式,绕开JVM层模块防加载机制实现了对于JAVA程序的恶意代码的检测。
Description
技术领域
本发明涉及信息安全技术领域,特别涉及一种基于JAVA程序的恶意代码检测方法、设备及存储介质。
背景技术
内存马即无文件木马,运行成功后没有相关文件可以关联,并且依附在系统或安全应用软件进程中,一般内存木马是以shellcode的形式寄生在宿主进程,且体积可以小于KB,所以难以进行相关排查。
JAVA内存木马意指运行在JAVA/JVM进程中的木马程序,属于一种容器类木马,与传统系统级内存木马不同的是他所运行的字节码与CPU和操作系统无关,从而木马所产生的所有动作性能(即API调用)都是通过宿主JVM所中转触发。内存马本身很难通过传统杀毒软件检测。
目前JAVA内存马检测都是通过Agent插件的方式检测,对于Agent注入的方式具有很大对抗缺陷,一旦木马程序率先进入JVM中,木马程序将Agent加载相关API抹除,后续安全软件在通过Agent技术做检测将无法对目标JVM进程附加。
发明内容
基于此,本申请实施例提供了一种基于JAVA程序的恶意代码检测方法、设备及存储介质,通过系统级模块注入方式,将检测模块注入目标JVM进程,从而进行相关检测与取证还原。
第一方面,提供了一种基于JAVA程序的恶意代码检测方法,该方法包括:
通过注入器注入到目标进程;
在目标进程中对JVM代码段内存进行检测;当检测到JVM代码段内存被修改后,获取JIT权限;
在JIT权限下,获取到JVM加载的所有CLASS包名,对JVM所加载的类进行过滤,通过JIT接口获取过滤后的CLASS原数据,并通过YARA进行原数据扫描;
获得扫描后的异常CLASS数据,并进行提取。
可选地,所述通过注入器注入到目标进程,还包括:
获得目标进程中对JVM代码段内存进行检测的权限。
可选地,所述获得扫描后的异常CLASS数据,并进行提取,还包括:
获得扫描后的可疑CLASS数据,并进行提取以及分析。
可选地,所述当检测到JVM代码段内存被修改后,获取JIT权限,包括:
当检测到JVM导出函数JVM_EnqueueOperation接口被修改后,获取JIT权限。
可选地,所述获取JIT权限,具体包括:
通过重写JVM加载API实现自加载以获取JIT权限。
可选地,所述对JVM所加载的类进行过滤,包括:
通过白名单方式和/或模糊黑名单方式对JVM所加载的类进行过滤。
第二方面,提供了一种电子设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述第一方面任一所述的基于JAVA程序的恶意代码检测方法。
第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述第一方面任一所述的基于JAVA程序的恶意代码检测方法。
本申请实施例提供的技术方案中首先在目标进程中对JVM代码段内存进行检测;当检测到JVM代码段内存被修改后,获取JIT权限;在JIT权限下,获取到JVM加载的所有CLASS包名,对JVM所加载的类进行过滤,通过JIT接口获取过滤后的CLASS原数据,并通过YARA进行原数据扫描;最后获得扫描后的异常CLASS数据,并进行提取,可以看出,本发明通过系统级模块注入方式,绕开JVM层模块防加载机制实现了对于JAVA程序的恶意代码的检测。
附图说明
为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引伸获得其它的实施附图。
图1为本申请实施例提供的一种基于JAVA程序的恶意代码检测方法步骤图;
图2为本申请实施例提供的一种基于JAVA程序的恶意代码检测方法示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在本发明的描述中,除非另有说明“多个”的含义是两个或两个以上。术语“包括”、“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包括了一系列步骤或单元的过程、方法、系统、产品或设备不必限于已明确列出的那些步骤或单元,而是还可包含虽然并未明确列出的但对于这些过程、方法、产品或设备固有的其它步骤或单元,或者基于本发明构思进一步的优化方案所增加的步骤或单元。
在本申请中首先构造内存马进程检测对象,通过第三方工具或手动方式像JVM目标植入内存木马,本申请以冰蝎木马来做说明,冰蝎的shell管理工具恰好携带了内存防检测功能,在注入内存马的时候把这一项给打开,当内存木马注入成功后,往目标进程附加Agent会失败,所以传统通过Agent附加检测将失效。
本发明通过系统级模块注入方式,将检测模块注入目标JVM进程,从而进行相关检测与取证还原。具体地,请参考图1,其示出了本申请实施例提供的一种基于JAVA程序的恶意代码检测方法的步骤图,该方法可以包括以下步骤:
步骤101,通过注入器注入到目标进程。
在本申请实施例中,目标进程为通过第三方工具或手动方式植入内存木马的JVM目标,首先通过注入器将本申请的检测模块注入到目标进程中。
在本申请一个可选的实施例中,通过注入器注入到目标进程,还包括获得目标进程中对JVM代码段内存进行检测的权限。
步骤102,在目标进程中对JVM代码段内存进行检测;当检测到JVM代码段内存被修改后,获取JIT权限。
在本申请实施例中,注入到目标进程中的检测模块对JVM代码段内存进行检测,其中主要是检测JVM代码段内存是否有被修改,如本实施例中所植入的冰蝎木马,检测模块可以检测出冰蝎木马修改了JVM导出函数JVM_EnqueueOperation接口。
当检测到JVM代码段内存被修改后,获取JIT权限(Just In Time Compiler,即时编译器),实际上JAVA Agent底层就是走的JIT相关接口,检测模块通过重写JVM加载API实现自加载获取JIT权限
步骤103,在JIT权限下,获取到JVM加载的所有CLASS包名,对JVM所加载的类进行过滤,通过JIT接口获取过滤后的CLASS原数据,并通过YARA进行原数据扫描。
在本申请实施例中,步骤103主要是对威胁判定进行判定,首先获取到JVM加载的所有CLASS包名,通过白名单方式,排除掉不容易被利用的JAVA和容器的原始组件,例如白名单中包含正常JAVA应用常用或必加载的包;并通过模糊黑名单方式过滤比较可以的CLASS名称,然后通过JIT接口获取CLASS原数据,最后使用YARA进行原数据扫描,其中YARA为现有开源工具,用于识别和分类恶意软件样本。
步骤104,获得扫描后的异常CLASS数据,并进行提取。
最后将异常的CLASS保存到文件,通过YARA的检测可以有效的发现高危威胁,但内存马本身如果做了混淆或加密此步骤不一定能检测出来,所以检测模块最后将可疑数据CLASS一并也提取出去,方便后续分析。
具体地,本实施例中异常数据是指匹配到精确特征,比如本申请中的冰蝎木马,而可疑数据则是匹配一些不确定的内容但这些数据很大程度上是有问题的,比如这段数据中有大量的混淆加密,SHELL调用等,因为一个正常java应用不会轻易调用net user这种命令,亦或者这段数据特征上特别想一些开源工具比如挖矿,隧道转发等,这些都可以视为可疑数据。
如图2为提供的一种基于JAVA程序的恶意代码检测方法示意图,图中CLASS是JAVA字节序在文件系统中持久化的数据格式形态,KLASS是JVM在内存中的模型化对象,模型化对象具体是指JVM中的具体模型或类,KLASS可以实例化出来很多对象。
在一个实施例中,提供了一种电子设备,该电子设备可以是计算机。该电子设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该设备的处理器用于提供计算和控制能力。该设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于恶意代码检测数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种恶意代码检测方法。
在本申请的一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述恶意代码检测方法的步骤。
本实施例提供的计算机可读存储介质,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以M种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(SyMchliMk)DRAM(SLDRAM)、存储器总线(RaMbus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合(只要这些技术特征的组合不存在矛盾),为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述;这些未明确写出的实施例,也都应当认为是本说明书记载的范围。
上文中通过一般性说明及具体实施例对本申请作了较为具体和详细的描述。应当理解,基于本申请的技术构思,还可以对这些具体实施例作出若干常规的调整或进一步的创新;但只要未脱离本申请的技术构思,这些常规的调整或进一步的创新得到的技术方案也同样落入本申请的权利要求保护范围。
Claims (8)
1.一种基于JAVA程序的恶意代码检测方法,其特征在于,应用于检测模块,所述方法包括:
通过注入器注入到目标进程;
在目标进程中对JVM代码段内存进行检测;当检测到JVM代码段内存被修改后,获取JIT权限;
在JIT权限下,获取到JVM加载的所有CLASS包名,对JVM所加载的类进行过滤,通过JIT接口获取过滤后的CLASS原数据,并通过YARA进行原数据扫描;
获得扫描后的异常CLASS数据,并进行提取。
2.根据权利要求1所述的方法,其特征在于,所述通过注入器注入到目标进程,还包括:
获得目标进程中对JVM代码段内存进行检测的权限。
3.根据权利要求1所述的方法,其特征在于,所述获得扫描后的异常CLASS数据,并进行提取,还包括:
获得扫描后的可疑CLASS数据,并进行提取以及分析。
4.根据权利要求1所述的方法,其特征在于,所述当检测到JVM代码段内存被修改后,获取JIT权限,包括:
当检测到JVM导出函数JVM_EnqueueOperation接口被修改后,获取JIT权限。
5.根据权利要求1所述的方法,其特征在于,所述获取JIT权限,具体包括:
通过重写JVM加载API实现自加载以获取JIT权限。
6.根据权利要求1所述的方法,其特征在于,所述对JVM所加载的类进行过滤,包括:
通过白名单方式和/或模糊黑名单方式对JVM所加载的类进行过滤。
7.一种电子设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至6任一所述的基于JAVA程序的恶意代码检测方法。
8.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一所述的于JAVA程序的恶意代码检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210375658.5A CN114692153B (zh) | 2022-04-11 | 2022-04-11 | 基于java程序的恶意代码检测方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210375658.5A CN114692153B (zh) | 2022-04-11 | 2022-04-11 | 基于java程序的恶意代码检测方法、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114692153A CN114692153A (zh) | 2022-07-01 |
CN114692153B true CN114692153B (zh) | 2024-05-14 |
Family
ID=82143310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210375658.5A Active CN114692153B (zh) | 2022-04-11 | 2022-04-11 | 基于java程序的恶意代码检测方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114692153B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115270126B (zh) * | 2022-09-29 | 2022-12-16 | 北京微步在线科技有限公司 | 一种检测Java内存马的方法、装置、电子设备及存储介质 |
CN115795444B (zh) * | 2023-01-31 | 2023-05-05 | 北京微步在线科技有限公司 | 一种mssql后门的检测方法及装置 |
CN117093404B (zh) * | 2023-10-17 | 2024-02-09 | 西安热工研究院有限公司 | 可信动态度量过程中不可信进程自恢复方法、系统及设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112199678A (zh) * | 2020-09-25 | 2021-01-08 | 杭州安恒信息技术股份有限公司 | 一种在线取证的方法、装置、计算机设备和可读存储介质 |
WO2021003982A1 (zh) * | 2019-07-05 | 2021-01-14 | 深圳壹账通智能科技有限公司 | 业务系统漏洞处理方法、装置、计算机设备和存储介质 |
CN113312624A (zh) * | 2021-06-21 | 2021-08-27 | 厦门服云信息科技有限公司 | 一种Java Web应用内存木马检测方法、终端设备及存储介质 |
CN113946825A (zh) * | 2021-12-22 | 2022-01-18 | 北京微步在线科技有限公司 | 一种内存马处理方法及系统 |
CN114065204A (zh) * | 2021-11-29 | 2022-02-18 | 中国工商银行股份有限公司 | 一种无文件木马查杀方法及装置 |
CN115840940A (zh) * | 2022-10-28 | 2023-03-24 | 国网山东省电力公司电力科学研究院 | 一种无文件木马检测方法、系统、介质及设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080016339A1 (en) * | 2006-06-29 | 2008-01-17 | Jayant Shukla | Application Sandbox to Detect, Remove, and Prevent Malware |
-
2022
- 2022-04-11 CN CN202210375658.5A patent/CN114692153B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021003982A1 (zh) * | 2019-07-05 | 2021-01-14 | 深圳壹账通智能科技有限公司 | 业务系统漏洞处理方法、装置、计算机设备和存储介质 |
CN112199678A (zh) * | 2020-09-25 | 2021-01-08 | 杭州安恒信息技术股份有限公司 | 一种在线取证的方法、装置、计算机设备和可读存储介质 |
CN113312624A (zh) * | 2021-06-21 | 2021-08-27 | 厦门服云信息科技有限公司 | 一种Java Web应用内存木马检测方法、终端设备及存储介质 |
CN114065204A (zh) * | 2021-11-29 | 2022-02-18 | 中国工商银行股份有限公司 | 一种无文件木马查杀方法及装置 |
CN113946825A (zh) * | 2021-12-22 | 2022-01-18 | 北京微步在线科技有限公司 | 一种内存马处理方法及系统 |
CN115840940A (zh) * | 2022-10-28 | 2023-03-24 | 国网山东省电力公司电力科学研究院 | 一种无文件木马检测方法、系统、介质及设备 |
Non-Patent Citations (4)
Title |
---|
A Framework for Distributed Computing over the Internet;Ong, T.‑M;Master’s thesis, Nanyang Technological University, Singapore;20051231;全文 * |
Windows系统环境下基于内存分析的木马病毒取证;郑文庚 等;刑事技术;20201209;第45卷(第6期);第572-576页 * |
基于指令集随机化的抗代码注入攻击方法;马博林 等;信息安全学报;20200715;第5卷(第4期);第30-43页 * |
虚拟内存进程重构与恶意行为扩展识别模型;唐彰国;杨玲;李焕洲;张健;;北京工业大学学报;20180122(第04期);第64-71段 * |
Also Published As
Publication number | Publication date |
---|---|
CN114692153A (zh) | 2022-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114692153B (zh) | 基于java程序的恶意代码检测方法、设备及存储介质 | |
CN109033828B (zh) | 一种基于计算机内存分析技术的木马检测方法 | |
US20100306851A1 (en) | Method and apparatus for preventing a vulnerability of a web browser from being exploited | |
WO2006137057A2 (en) | A method and a system for providing comprehensive protection against leakage of sensitive information assets using host based agents, content- meta-data and rules-based policies | |
CN103886252A (zh) | 受信进程地址空间中执行的软件代码的恶意性的选择评估 | |
CN111835756B (zh) | App隐私合规检测方法、装置、计算机设备及存储介质 | |
CN111400714B (zh) | 病毒检测方法、装置、设备及存储介质 | |
CN103793649A (zh) | 通过云安全扫描文件的方法和装置 | |
CN115221524B (zh) | 业务数据保护方法、装置、设备及存储介质 | |
CN114186239A (zh) | 一种基于路径信息的程序白名单方法及装置 | |
CN107231364B (zh) | 一种网站漏洞检测方法及装置、计算机装置及存储介质 | |
CN106911635B (zh) | 一种检测网站是否存在后门程序的方法及装置 | |
CN114254314A (zh) | 一种Linux下基于内核的防勒索病毒的方法 | |
CN114021115A (zh) | 恶意应用程序的检测方法、装置、存储介质及处理器 | |
CN116668202A (zh) | 一种容器环境下内存马检测方法及系统 | |
CN111222122A (zh) | 应用权限管理方法、装置及嵌入式设备 | |
CN111125701B (zh) | 文件检测方法、设备、存储介质及装置 | |
CN115859289A (zh) | 一种基于可信进程树的勒索病毒隔离方法 | |
CN110069936A (zh) | 一种木马隐写方法和检测方法 | |
US20070060116A1 (en) | External memory management apparatus and external memory management method | |
KR100968121B1 (ko) | 이동식 디스크를 통한 악성 프로그램 차단 방법 및 그 장치 | |
CN114020704A (zh) | 一种Linux系统下文件复制行为识别方法及系统 | |
KR101956725B1 (ko) | 인가된 실행 파일 및 동적 라이브러리 파일 기반 서버 접근 통제 시스템 | |
JP6219550B1 (ja) | プログラム、情報処理装置、及び情報処理方法 | |
CN110610086B (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 |