RU2008104404A - Способ предотвращения обратного инжиниринга программного обеспечения, неавторизованной модификации и перехвата данных во время выполнения - Google Patents
Способ предотвращения обратного инжиниринга программного обеспечения, неавторизованной модификации и перехвата данных во время выполнения Download PDFInfo
- Publication number
- RU2008104404A RU2008104404A RU2008104404/09A RU2008104404A RU2008104404A RU 2008104404 A RU2008104404 A RU 2008104404A RU 2008104404/09 A RU2008104404/09 A RU 2008104404/09A RU 2008104404 A RU2008104404 A RU 2008104404A RU 2008104404 A RU2008104404 A RU 2008104404A
- Authority
- RU
- Russia
- Prior art keywords
- software
- interpreter
- net
- metadata
- cli
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract 53
- 230000004048 modification Effects 0.000 title claims abstract 9
- 238000012986 modification Methods 0.000 title claims abstract 9
- 238000006243 chemical reaction Methods 0.000 claims abstract 8
- 238000003672 processing method Methods 0.000 claims abstract 2
- 230000000007 visual effect Effects 0.000 claims abstract 2
- 230000006870 function Effects 0.000 claims 6
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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Storage Device Security (AREA)
Abstract
1. Способ предотвращения неавторизованной модификации программного обеспечения или неавторизованной модификации данных во время выполнения, содержащий этапы, на которых: ! a. предоставляют преобразователь, допускающий преобразование упомянутого программного обеспечения в обобщенный машинный код, обратный инжиниринг которого нельзя выполнить посредством использования процесса преобразования, который вызывает потерю данных; и ! b. предоставляют интерпретатор, в котором знание способа обработки сохраняется ограниченным; ! c. интерпретируют посредством упомянутого интерпретатора упомянутый общий машинный код в конкретный машинный код при восстановлении потерянных данных в ходе процесса интерпретации. ! 2. Способ по п.1, в котором интерпретатор компилируется посредством CLR. ! 3. Способ по п.1 или 2, в котором программное обеспечение разделяется так, что только часть программного обеспечения преобразуется с помощью преобразователя и интерпретируется интерпретатором. ! 4. Способ по п.1, в котором программным обеспечением является высокоуровневый язык. ! 5. Способ по п.4, в котором высокоуровневый язык - это язык на основе интерпретатора. ! 6. Способ по п.5, в котором высокоуровневым языком может быть один из следующего: Java, Visual J#, J#, C# или http://VB.NET. ! 7. Способ по п.4, в котором высокоуровневый язык - это язык на основе компилятора. ! 8. Способ по п.7, в котором высокоуровневым языком может быть один из следующего: C++, VB или Pascal. ! 9. Способ по п.1, в котором потеря данных в ходе преобразования состоит в удалении метаданных структуры кода. ! 10. Способ по п.1, в котором потеря данных в ходе преобразования состоит в преобразовании команд в друг�
Claims (28)
1. Способ предотвращения неавторизованной модификации программного обеспечения или неавторизованной модификации данных во время выполнения, содержащий этапы, на которых:
a. предоставляют преобразователь, допускающий преобразование упомянутого программного обеспечения в обобщенный машинный код, обратный инжиниринг которого нельзя выполнить посредством использования процесса преобразования, который вызывает потерю данных; и
b. предоставляют интерпретатор, в котором знание способа обработки сохраняется ограниченным;
c. интерпретируют посредством упомянутого интерпретатора упомянутый общий машинный код в конкретный машинный код при восстановлении потерянных данных в ходе процесса интерпретации.
2. Способ по п.1, в котором интерпретатор компилируется посредством CLR.
3. Способ по п.1 или 2, в котором программное обеспечение разделяется так, что только часть программного обеспечения преобразуется с помощью преобразователя и интерпретируется интерпретатором.
4. Способ по п.1, в котором программным обеспечением является высокоуровневый язык.
5. Способ по п.4, в котором высокоуровневый язык - это язык на основе интерпретатора.
6. Способ по п.5, в котором высокоуровневым языком может быть один из следующего: Java, Visual J#, J#, C# или http://VB.NET.
7. Способ по п.4, в котором высокоуровневый язык - это язык на основе компилятора.
8. Способ по п.7, в котором высокоуровневым языком может быть один из следующего: C++, VB или Pascal.
9. Способ по п.1, в котором потеря данных в ходе преобразования состоит в удалении метаданных структуры кода.
10. Способ по п.1, в котором потеря данных в ходе преобразования состоит в преобразовании команд в другие команды, которым соответствующий операнд(ы) определен во время выполнения.
11. Способ предотвращения декомпиляции и модификации во время выполнения кода программного обеспечения .NET/CLI с помощью средств, которые базируются на метаданных .NET/CLI, содержащий этапы, на которых:
a. предоставляют преобразователь, допускающий преобразование упомянутого программного обеспечения .NET/CLI в общий машинный код, причем упомянутое преобразование включает в себя потерю данных по метаданным .NET/CLI;
b. предоставляют новый интерпретатор, выполненный с возможностью интерпретации упомянутого общего машинного кода без требования наличия метаданных .NET/CLI, при этом упомянутый новый интерпретатор реализован как программный компонент на основе .NET/CLI для поддержания такого же уровня переносимости, что и упомянутый код программного обеспечения .NET/CLI; и
c. интерпретируют упомянутый общий машинный код в конкретный машинный код упомянутым интерпретатором.
12. Способ по п.11, в котором программное обеспечение разделяется так, что только часть программного обеспечения преобразуется с помощью преобразователя и интерпретируется новым интерпретатором.
13. Способ предотвращения подделки механизма вступления в силу условий лицензионного соглашения в среде .NET/CLI по п.11, в котром средства декомпиляции и модификации, которые основаны на метаданных .NET/CLI, становятся непригодными после применения упомянутого способа.
14. Способ по п.11 для шифрования кода .NET/CLI при преодолении отсутствия поддержки шифрования/расшифровки кода в .NET/CLI посредством выполнения частичной расшифровки исполняемой в данный момент функции, содержащий этапы, на которых:
a. применяют процесс симметричного шифрования к представлению общего машинного кода каждой преобразованной функции; и
b. расшифровывают каждую функцию общего машинного кода до исполнения посредством нового интерпретатора.
15. Способ по п.14, в котором симметричный ключ процесса шифрования доставляется пользователю программного обеспечения отдельно, тем самым делая неавторизованное исполнение программного обеспечения невозможным.
16. Способ по п.11, в котором различные реализации нового интерпретатора предоставляются производителям программного обеспечения, при этом упомянутый новый интерпретатор сформирован посредств выбора полного поднабора команд из избыточного набора команд и посредством динамического формирования преобразователя и .NET/CLI-сборки реализации упомянутого нового интерпретатора с помощью .NET Framework System.CodeDom API, System.Reflection.Emit API или непосредственного формирования исходного кода на языке .NET.
17. Способ по п.11, в котором различные реализации нового интерпретатора предоставляются производителям программного обеспечения посредством применения процесса сбивания с толку с помощью различных схем переименования метаданных в одной базовой реализации .NET/CLI упомянутого нового интерпретатора для предоставления возможности упомянутым метаданным отображаться по-разному в средствах декомпиляции.
18. Способ по пп.16 и 17, в котором новый интерпретатор сформирован посредством выбора полного поднабора команд из избыточного набора команд и посредством динамического формирования преобразователя и .NET/CLI-сборки реализации упомянутого нового интерпретатора с помощью .NET Framework System.CodeDom API, System.Reflection.Emit API или непосредственного формирования исходного кода на языке .NET, а также посредством применения процесса сбивания с толку с помощью различных схем переименования метаданных той же самой базовой реализации .NET/CLI упомянутого нового интерпретатора для предоставления возможности упомянутым метаданным отображаться по-разному в средствах декомпиляции.
19. Способ предотвращения декомпиляции и модификации во время выполнения кода программного обеспечения Java с помощью средств, которые базируются на метаданных класса Java, содержащий этапы, на которых:
a. предоставляют преобразователь, выполненный с возможностью преобразования упомянутого кода программного обеспечения Java в общий машинный код, причем упомянутое преобразование включает в себя потерю данных по метаданным Java;
b. предоставляют новый интерпретатор, выполненный с возможностью интерпретации упомянутого общего машинного кода без требования метаданных класса Java, при этом упомянутый новый интерпретатор реализован как программный компонент на основе Java для поддержания такого же уровня переносимости, что и упомянутый код программного обеспеченич Java; и
c. интерпретируют посредством упомянутого интерпретатора упомянутый общий машинный код в конкретный машинный код.
20. Способ по п.19, в котором программное обеспечение разделяется так, что только часть программного обеспечения преобразуется с помощью преобразователя и интерпретируется новым интерпретатором.
21. Способ предотвращения подделки механизма вступления в силу условий лицензионного соглашения в среде Java по п. 11, в котором средства декомпиляции и модификации, которые основаны на метаданных .NET/CLI, становятся непригодными после применения упомянутого способа.
22. Способ по п.19 для шифрования кода Java при преодолении отсутствия поддержки шифрования/расшифровки кода в Java VM посредством выполнения частичной расшифровки в исполняемую в данный момент функцию, содержащий этапы, на которых:
a. применяют процесс симметричного шифрования к представлению общего машинного кода каждой преобразованной функции; и
b. расшифровывают каждую функцию общего машинного кода до исполнения новым интерпретатором.
23. Способ по п.22, в котором симметричный ключ процесса шифрования доставляется пользователю программного обеспечения отдельно, тем самым делая неавторизованное исполнение программного обеспечения невозможным.
24. Способ по п.19, в котором различные реализации нового интерпретатора предоставляются производителям программного обеспечения, при этом упомянутый новый интерпретатор сформирован посредством выбора полного поднабора команд из избыточного набора команд и посредством динамического формирования преобразователя и реализации упомянутого нового интерпретатора.
25. Способ по п.19, в котором различные реализации нового интерпретатора предоставляются производителям программного обеспечения посредством применения процесса сбивания с толку с помощью различных схем переименования метаданных в одной базовой реализации Java упомянутого нового интерпретатора для предоставления возможности упомянутым метаданным отображаться по-разному в средствах декомпиляции.
26. Способ по пп.24 и 25, в котором новый интерпретатор сформирован посредством выбора полного поднабора команд из избыточного набора команд и посредством динамического формирования преобразователя и реализации упомянутого нового интерпретатора, а также посредством применения процесса сбивания с толку с помощью различных схем переименования метаданных в той же самой базовой реализации упомянутого нового интерпретатора для предоставления возможности упомянутым метаданным отображаться по-разному в средствах декомпиляции.
27. Способ по п.11, в котором использование инструментальных средств, которые базируются на метаданных .NET/CLI, для подделки механизма вступления в силу условий лицензионного соглашения предотвращается посредством использования архитектуры нового интерпретатора для того, чтобы осуществлять вызовы между преобразованными методами.
28. Способ по п.19, в котором использование инструментальных средств, которые базируются на метаданных класса Java, для подделки механизма вступления в силу условий лицензионного соглашения предотвращается посредством использования архитектуры нового интерпретатора для того, чтобы осуществлять вызовы между преобразованными методами.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US59580205P | 2005-08-06 | 2005-08-06 | |
US60/595,802 | 2005-08-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2008104404A true RU2008104404A (ru) | 2009-08-10 |
RU2439669C2 RU2439669C2 (ru) | 2012-01-10 |
Family
ID=36648619
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2008104404/08A RU2439669C2 (ru) | 2005-08-06 | 2006-03-30 | Способ предотвращения обратного инжиниринга программного обеспечения, неавторизованной модификации и перехвата данных во время выполнения |
Country Status (5)
Country | Link |
---|---|
US (2) | US8352929B2 (ru) |
CN (1) | CN101300584B (ru) |
BR (1) | BRPI0614089A8 (ru) |
RU (1) | RU2439669C2 (ru) |
WO (1) | WO2007017856A1 (ru) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007017856A1 (en) | 2005-08-06 | 2007-02-15 | Secured Dimensions Ltd. | Method for preventing software reverse engineering, unauthorized modification, and runtime data interception |
US8464207B2 (en) * | 2007-10-12 | 2013-06-11 | Novell Intellectual Property Holdings, Inc. | System and method for tracking software changes |
CN100474253C (zh) * | 2007-11-22 | 2009-04-01 | 北京飞天诚信科技有限公司 | .Net程序保护方法及装置 |
US8776016B2 (en) * | 2009-10-29 | 2014-07-08 | Red Hat, Inc. | Integration of structured profiling data with source data in the eclipse development environment |
US8561032B2 (en) * | 2009-11-04 | 2013-10-15 | Red Hat, Inc. | Visualizing thread life time in eclipse |
US8789024B2 (en) * | 2009-11-04 | 2014-07-22 | Red Hat, Inc. | Integration of visualization with source code in the Eclipse development environment |
US8683452B1 (en) * | 2010-12-21 | 2014-03-25 | Emc Corporation | Dynamically obfuscated javascript |
JP6133409B2 (ja) * | 2012-05-25 | 2017-05-24 | コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. | プログラムのリバースエンジニアリング及び/又は改竄に対する保護のための方法、システム及び装置 |
US9152801B2 (en) * | 2012-06-28 | 2015-10-06 | Steven W. Cooke | Cryptographic system of symmetric-key encryption using large permutation vector keys |
CN103218551B (zh) * | 2013-05-03 | 2016-04-06 | 飞天诚信科技股份有限公司 | 一种保护java程序的方法 |
US9392084B2 (en) * | 2014-01-06 | 2016-07-12 | International Business Machines Corporation | Recovery of a network infrastructure to facilitate business continuity |
US9659156B1 (en) * | 2014-03-20 | 2017-05-23 | Symantec Corporation | Systems and methods for protecting virtual machine program code |
US9715433B2 (en) * | 2014-08-29 | 2017-07-25 | Netapp, Inc. | Reconciliation in sync replication |
RU2635271C2 (ru) * | 2015-03-31 | 2017-11-09 | Закрытое акционерное общество "Лаборатория Касперского" | Способ категоризации сборок и зависимых образов |
RU2628920C2 (ru) * | 2015-03-31 | 2017-08-22 | Закрытое акционерное общество "Лаборатория Касперского" | Способ обнаружения вредоносных сборок |
CN105279399A (zh) * | 2015-10-30 | 2016-01-27 | 百度在线网络技术(北京)有限公司 | 应用防破解方法和装置 |
RU2625052C1 (ru) * | 2016-03-18 | 2017-07-11 | Акционерное общество "Лаборатория Касперского" | Способ ограничения доступа образа машинного кода к ресурсам операционной системы |
WO2018081093A1 (en) * | 2016-10-24 | 2018-05-03 | Clark Carl M | Software algorithm security |
CN107292131A (zh) * | 2017-06-21 | 2017-10-24 | 北京深思数盾科技股份有限公司 | 软件保护方法和装置 |
RU2720254C1 (ru) * | 2019-12-05 | 2020-04-28 | Акционерное общество "Актив-софт" (АО "Актив-софт") | Способ восстановления и обновления программного обеспечения на смарт-карте |
US11347500B2 (en) | 2020-06-17 | 2022-05-31 | Bank Of America Corporation | Software code converter for resolving conflicts during code development |
US11782685B2 (en) | 2020-06-17 | 2023-10-10 | Bank Of America Corporation | Software code vectorization converter |
US11573775B2 (en) | 2020-06-17 | 2023-02-07 | Bank Of America Corporation | Software code converter for resolving redundancy during code development |
CN112241519A (zh) * | 2020-11-05 | 2021-01-19 | 王志平 | 一种软件版权保护的实现方法 |
CN112642157B (zh) * | 2020-12-31 | 2023-04-28 | 广州华多网络科技有限公司 | 代理开发控制方法及其相应的装置、设备、介质 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5293576A (en) | 1991-11-21 | 1994-03-08 | Motorola, Inc. | Command authentication process |
AUPN002594A0 (en) * | 1994-12-13 | 1995-01-12 | Dunn, Alexander Atkinson | Improvements in software for the protection of executable programs, libraries and their data |
US6334189B1 (en) * | 1997-12-05 | 2001-12-25 | Jamama, Llc | Use of pseudocode to protect software from unauthorized use |
US7430670B1 (en) * | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
RU2183051C2 (ru) | 2000-04-12 | 2002-05-27 | Военный университет связи | Способ формирования ключа шифрования/дешифрования |
US7237123B2 (en) * | 2000-09-22 | 2007-06-26 | Ecd Systems, Inc. | Systems and methods for preventing unauthorized use of digital content |
AU2001292910B2 (en) * | 2000-09-22 | 2008-05-01 | Sca Ipla Holdings, Inc. | Systems and methods for preventing unauthorized use of digital content |
DE10108487A1 (de) | 2001-02-22 | 2002-09-12 | Giesecke & Devrient Gmbh | Verfahren und System zur verteilten Erstellung eines Programms für einen programmierbaren, tragbaren Datenträger |
CA2348355A1 (en) | 2001-05-24 | 2002-11-24 | Cloakware Corporation | General scheme of using encodings in computations |
US7383443B2 (en) | 2002-06-27 | 2008-06-03 | Microsoft Corporation | System and method for obfuscating code using instruction replacement scheme |
JP4105158B2 (ja) * | 2002-06-28 | 2008-06-25 | シャープ株式会社 | 薄板製造方法および薄板製造装置 |
US7093119B2 (en) * | 2002-07-16 | 2006-08-15 | International Business Machines Corporation | Methods and computer program products for protecting source code of an interpreted programming language |
US20040128260A1 (en) | 2002-12-30 | 2004-07-01 | Nokia, Inc. | Method and system for protecting against unauthorized modification of products |
JP4193607B2 (ja) | 2003-06-26 | 2008-12-10 | 日本電気株式会社 | データフロー制御方式、方法、およびプログラム |
GB2405958A (en) | 2003-08-20 | 2005-03-16 | Macrovision Europ Ltd | Code obfuscation and controlling a processor by emulation |
US7366914B2 (en) | 2003-08-29 | 2008-04-29 | Intel Corporation | Source code transformation based on program operators |
RU2329615C2 (ru) | 2003-12-01 | 2008-07-20 | Самсунг Электроникс Ко., Лтд. | Способ масштабируемого кодирования и декодирования видеосигнала и устройство для его осуществления |
WO2007017856A1 (en) | 2005-08-06 | 2007-02-15 | Secured Dimensions Ltd. | Method for preventing software reverse engineering, unauthorized modification, and runtime data interception |
-
2006
- 2006-03-30 WO PCT/IL2006/000398 patent/WO2007017856A1/en active Application Filing
- 2006-03-30 CN CN200680029302.5A patent/CN101300584B/zh not_active Expired - Fee Related
- 2006-03-30 BR BRPI0614089A patent/BRPI0614089A8/pt not_active Application Discontinuation
- 2006-03-30 US US12/063,104 patent/US8352929B2/en not_active Expired - Fee Related
- 2006-03-30 RU RU2008104404/08A patent/RU2439669C2/ru not_active IP Right Cessation
-
2013
- 2013-01-07 US US13/735,849 patent/US8938727B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
BRPI0614089A2 (pt) | 2011-03-09 |
US8938727B2 (en) | 2015-01-20 |
US8352929B2 (en) | 2013-01-08 |
RU2439669C2 (ru) | 2012-01-10 |
US20100313188A1 (en) | 2010-12-09 |
US20130125243A1 (en) | 2013-05-16 |
WO2007017856A1 (en) | 2007-02-15 |
CN101300584B (zh) | 2012-02-29 |
BRPI0614089A8 (pt) | 2017-01-17 |
CN101300584A (zh) | 2008-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2008104404A (ru) | Способ предотвращения обратного инжиниринга программного обеспечения, неавторизованной модификации и перехвата данных во время выполнения | |
CN102043932B (zh) | 一种防止Java程序被反编译的方法 | |
CN108932406B (zh) | 虚拟化软件保护方法和装置 | |
KR101597251B1 (ko) | 소프트웨어 애플리케이션들의 화이트박스 구현들을 생성하는 시스템 및 방법 | |
US8756434B2 (en) | System and method for executing an encrypted binary from a memory pool | |
KR101328012B1 (ko) | 애플리케이션 코드 난독화 장치 및 그 방법 | |
KR101490047B1 (ko) | 자가변환 기반 애플리케이션 코드 난독화 장치 및 그 방법 | |
CN102831342A (zh) | 一种提高安卓系统中应用程序保护强度的方法 | |
JP2006344213A (ja) | ソフトウェアモジュールの独立性を保障するデータベースアプリケーションを具現するシステム及び方法 | |
CN106548046B (zh) | 一种保护代码的装置和方法 | |
CN104091100A (zh) | 一种基于编译中间结果的软件保护方法 | |
US20180373848A1 (en) | A build system with plugins for encryption of application components | |
CN101957903A (zh) | 一种保护类文件的方法和装置 | |
WO2012146080A1 (zh) | 一种软件保护方法和装置 | |
CN105574368A (zh) | 一种Python程序模块的安全调用方法和装置 | |
CN110147656A (zh) | 一种Node.js的代码加密及底层运行时解密办法 | |
CN112966227A (zh) | 代码加密解密方法和装置、存储介质 | |
CN105825142A (zh) | 用于对移动终端中文档加解密的方法和装置 | |
CN107871066B (zh) | 基于安卓系统的代码编译方法及装置 | |
CN107808101A (zh) | 一种通过加密Python明文源码token的知识产权保护系统 | |
CN1877595A (zh) | 一种软件版权保护方法 | |
CN113626773B (zh) | 一种基于中间语言的代码保护方法 | |
JP2007515723A5 (ru) | ||
GB2349250A (en) | Method for protecting bytecode | |
US20090235088A1 (en) | Program conversion device, execution support device, and method and computer program for the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PC41 | Official registration of the transfer of exclusive right |
Effective date: 20150306 |
|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20200331 |