CN104992083B - 应用程序的代码混淆方法和系统 - Google Patents

应用程序的代码混淆方法和系统 Download PDF

Info

Publication number
CN104992083B
CN104992083B CN201510402610.9A CN201510402610A CN104992083B CN 104992083 B CN104992083 B CN 104992083B CN 201510402610 A CN201510402610 A CN 201510402610A CN 104992083 B CN104992083 B CN 104992083B
Authority
CN
China
Prior art keywords
rule
keyword
application program
obscure
code
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
Application number
CN201510402610.9A
Other languages
English (en)
Other versions
CN104992083A (zh
Inventor
郑裕集
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Shiyuan Electronics Thecnology Co Ltd
Original Assignee
Guangzhou Shiyuan Electronics Thecnology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Shiyuan Electronics Thecnology Co Ltd filed Critical Guangzhou Shiyuan Electronics Thecnology Co Ltd
Priority to CN201510402610.9A priority Critical patent/CN104992083B/zh
Publication of CN104992083A publication Critical patent/CN104992083A/zh
Application granted granted Critical
Publication of CN104992083B publication Critical patent/CN104992083B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation

Abstract

本发明涉及一种应用程序的代码混淆方法和系统,其中应用程序的代码混淆方法,包括如下步骤:获取预设的混淆规则库中各个混淆规则对应的类名的关键字,得到规则关键字;确定需要进行代码混淆的应用程序中类的关键字,从混淆规则库中查找与所述应用程序中类的关键字对应的规则关键字,并确定所述规则关键字对应的混淆规则;根据所述混淆规则向所述应用程序的类代码中插入该关键字对应的混淆代码。上述应用程序的代码混淆方法和系统,使对同样类代码的混淆处理无需多次重复设计混淆规则,提高了应用程序的相关代码混淆处理的效率。

Description

应用程序的代码混淆方法和系统
技术领域
本发明涉及计算机技术领域,特别是涉及一种应用程序的代码混淆方法和系统。
背景技术
随着软件相关技术的飞速发展,人们的生活和工作对应用程序的依赖度也随之提高,其安全意识更在逐渐增强。应用程序在发布后,容易被反编译而暴露其源代码,致使该应用程序所携带的信息不安全,这时,需要对相关应用程序所涉及的代码通过混淆处理,实现对其有效代码的隐藏。现有技术的应用程序代码混淆处理中,需要每次对各类代码添加混淆规则,使相关混淆处理的效率低。
发明内容
基于此,有必要针对现有技术中相关混淆处理效率低的技术问题,提供一种应用程序的代码混淆方法和系统。
一种应用程序的代码混淆方法,包括如下步骤:
获取预设的混淆规则库中各个混淆规则对应的类名的关键字,得到规则关键字;
确定需要进行代码混淆的应用程序中类的关键字,从混淆规则库中查找与所述应用程序中类的关键字对应的规则关键字,并确定所述规则关键字对应的混淆规则;
根据所述混淆规则向所述应用程序的类代码中插入该关键字对应的混淆代码。
一种应用程序的代码混淆系统,包括:
第一获取模块,用于获取预设的混淆规则库中各个混淆规则对应的类名的关键字,得到规则关键字;
查询模块,用于确定需要进行代码混淆的应用程序中类的关键字,从混淆规则库中查找与所述应用程序中类的关键字对应的规则关键字,并确定所述规则关键字对应的混淆规则;
第一插入模块,用于根据所述混淆规则向所述应用程序的类代码中插入该关键字对应的混淆代码。
上述应用程序的代码混淆方法和系统,在对相关应用程序代码进行混淆处理时,可以根据应用程序中的类对应的关键字从预设的混淆规则库中获取所述关键字对应的混淆规则,并将相应的类代码根据上述混淆规则进行混淆处理,使对同样类代码的混淆处理无需多次重复设计混淆规则,提高了应用程序的相关代码混淆处理的效率。
附图说明
图1为一个实施例的应用程序的代码混淆方法流程图;
图2为一个实施例的应用程序的代码混淆系统的结构示意图。
具体实施方式
下面结合附图对本发明提供的应用程序的代码混淆方法和系统的具体实施方式作详细描述。
参考图1,图1所示为一个实施例的应用程序的代码混淆方法流程图,包括如下步骤:
S30,获取预设的混淆规则库中各个混淆规则对应的类名的关键字,得到规则关键字;
上述步骤S30中,在对应用程序中不同类代码进行混淆处理前,可以先预设一个混淆规则库,上述预设的规则库可以存入不同类对应的混淆规则,以便后续需要进行代码混淆的应用程序可以直接使用混淆规则库中的混淆规则,无需每次针对具体的代码均重新确定一次混淆规则,能够减少重复的工作量,降低所确定的混淆规则的错误率。该混淆规则库中包含各种类型的应用程序中不同类对应的混淆规则,上述某一类的混淆规则可以包括插入该类代码的混淆代码,以及这些混淆代码插入上述类代码中的具体位置;其中,上述类为一种面向对象计算机编程语言的构造,是创建对象的蓝图,可以描述所创建的对象共同的属性和方法。
上述混淆规则库可以为一个xml(可扩展标记语言)文件,其文件名可以根据所涉及到的应用程序的类型或者其他应用环境因素进行命名,其组成可以通过如下代码实现:
混淆规则是混淆规则库的基本组成单元,其与应用程序中的类是一一对应的,可以根据类的关键字对其进行搜索,上述混淆规则的格式可以为:
“<confusion name="com.activeandroid">
-keep class com.activeandroid.**{*;}
</confusion>”
应用程序一般包含一个或者多个类,类名可以为“xxx.xxxClassName”,其中,类名中,“ClassName”前面部分的“xxx.xxx”为类名的关键字,比如“com.activeandroid”、“com.baidu”等,上述关键字与类是一一对应的,不同的类不会有相同的关键字。
S40,确定需要进行代码混淆的应用程序中类的关键字,从混淆规则库中查找与所述应用程序中类的关键字对应的规则关键字,并确定所述规则关键字对应的混淆规则;
S50,根据所述混淆规则向所述应用程序的类代码中插入该关键字对应的混淆代码。
上述步骤中,可以根据混淆规则生成混淆配置文件,上述混淆配置文件中包括了需要插入的应用程序的类、插入相应类的混淆代码以及混淆代码插入类代码中的位置,其名称可以为“proguard-rules.txt”;利用上述混淆配置文件对需要进行代码混淆的应用程序进行混淆处理,即在相应应用程序的类代码中插入对应的混淆代码,使应用程序可以正常的编译、运行,其原始代码又通过混淆代码的保护,不易被反编译而致其暴露,保证了推广相关应用程序的安全性。
本实施例提供的应用程序的代码混淆方法,在对相关应用程序代码进行混淆处理时,可以根据应用程序中的类对应的关键字从预设的混淆规则库中获取所述关键字对应的混淆规则,并将相应的类代码根据上述混淆规则进行混淆处理,使对同样类代码的混淆处理无需多次重复设计混淆规则,提高了应用程序的相关代码混淆处理的效率。
在一个实施例中,上述获取预设混淆规则库中各个混淆规则对应的类名的关键字,得到规则关键字的步骤后还可以包括:
建立关键字集合;
将各个混淆规则对应的规则关键字存入关键字集合;
查询关键字集合中是否存在与存入的规则关键字重复的规则关键字;若存在,则将重复的规则关键字合并为一个规则关键字。
作为一个实施例,上述应用程序的代码混淆方法,还可以包括:
从混淆规则库中获取重复的规则关键字对应的混淆规则,得到重复的混淆规则;
将重复的混淆规则合并为一个混淆规则,更新混淆规则库。
本实施例中,建立关键字集合,并在上述关键字集合中存入各个混淆规则对应的规则关键字,可以利用需要进行代码混淆的应用程序中类的关键字直接在关键字集合中查找相应的规则关键字,进而确定相应的混淆规则,可以提高混淆规则的查找效率。
查询关键字集合中重复的规则关键字,并将重复的规则关键字合并为一个规则关键字,使关键字集合中不含重复的规则关键字,可以减小关键字的存储空间,提高在该关键字集合中查询相关关键字的效率。将重复的混淆规则合并为一个混淆规则,使混淆规则库中的混淆规则只出现一次,不重复出现,可以进一步提高从混淆规则库中获取相关关键字对应的混淆规则的效率。
在一个实施例中,上述应用程序的代码混淆方法,还可以包括:
获取所述应用程序的历史运行信息;
根据所述历史运行信息解析应用程序的映射文件;
根据所述映射文件定位出现错误的故障类,将所述故障类的代码还原得到故障类的原代码,并获取所述故障类的关键字;
根据所述故障类的关键字从混淆规则库中获取所述关键字对应的混淆规则;
根据所述混淆规则,向所述故障类的原代码中插入所述混淆代码。
本实施例中,上述历史运行信息为包括该应用程序的创建、修改以及运行状态的信息。在对某个应用程序进行代码混淆后,该应用程序出现编译失败、运行崩溃或者运行结果与预期不一致等编译或者运行方面的状况时,可以根据其历史运行信息解析应用程序的映射文件,定位出现错误的故障类,将所述故障类的代码在相应的位置去除混淆代码还原得到故障类的原代码,并根据故障类的关键字从混淆规则库中获取相应的混淆规则对上述故障类的原代码重新进行混淆处理,使该应用程序上次混淆处理过程中出现的相关错误能够通过代码还原得到纠正,并重新根据混淆规则库中的相应的混淆规则进行代码的混淆,使经过代码混淆后的应用程序可以正常的编译、运行。
作为一个实施例,上述根据所述故障类的关键字从混淆规则库中获取所述关键字对应的混淆规则的步骤后可以包括:
若混淆规则库中不存在所述关键字对应的混淆规则,则根据所述关键字对应的故障类代码建立相应的混淆规则;
根据所述建立的混淆规则向故障类的原代码中插入所述混淆代码,并将所述故障类对应的混淆规则存入混淆规则库。
本实施例中,若混淆规则库中不含某一关键字对应的混淆规则,可以根据该关键字对应的类的原代码确定相应的混淆规则,在进行相关代码混淆后,将新确定的混淆规则存入混淆规则库中,供后续相应的代码混淆用。
作为一个实施例,上述应用程序的代码混淆方法,还可以包括:
编译或者运行所述应用程序,若出现编译失败或运行故障的状况,删除混淆规则库中所述故障类对应的混淆规则;
重新建立所述故障类代码对应的混淆规则;
根据所述混淆规则向故障类的原代码中插入所述混淆代码,并将所述重新建立的混淆规则存入混淆规则库。
本实施例中,若出现编译失败、运行崩溃或者运行结果与预期不一致等运行故障时,应用程序经代码还原、重新进行代码混淆后仍然出现上述编译失败、运行故障的状况,则说明混淆规则库中的混淆规则存在问题,可以删除混淆规则库中相应的混淆规则,并重新建立上述故障类的原代码对应的混淆规则,用正确的混淆规则对相应的类代码重新混淆,并将新建立的混淆规则存入混淆规则库中,保证其中的混淆规则的正确性。
在一个实施例中,上述获取混淆规则库中各个混淆规则对应的类名的关键字,形成关键字集合的步骤前还可以包括:
获取各种类型的应用程序中类的混淆代码及其添加至类代码的插入位置;
根据所述混淆代码和插入位置确定所述类对应的混淆规则,将所述混淆规则存入混淆规则库。
应用程序中的类均包括相应的类代码,类代码一般包括其有效代码,比如类的源代码,和为了隐藏其有效代码而设置的混淆代码;类的混淆规则根据类中混淆代码以及其插入位置所确定,可以保证所确定的混淆规则的准确性,从而提高混淆规则库所存入的混淆规则的有效性。
参考图2,图2所示为一个实施例的应用程序的代码混淆系统的结构示意图,包括:
第一获取模块30,用于获取预设的混淆规则库中各个混淆规则对应的类名的关键字,得到规则关键字;
查询模块40,用于确定需要进行代码混淆的应用程序中类的关键字,从混淆规则库中查找与所述应用程序中类的关键字对应的规则关键字,并确定所述规则关键字对应的混淆规则;
第一插入模块50,用于根据所述混淆规则向所述应用程序的类代码中插入该关键字对应的混淆代码。
在一个实施例中,上述应用程序的代码混淆系统还可以包括:
第二获取模块,用于获取所述应用程序的历史运行信息;
解析模块,用于根据所述历史运行信息解析应用程序的映射文件;
定位模块,用于根据所述映射文件定位出现错误的故障类,将所述故障类的代码还原得到故障类的原代码,并获取所述故障类的关键字;
第三获取模块,用于根据所述故障类的关键字从混淆规则库中获取所述关键字对应的混淆规则;
第二插入模块,用于根据所述混淆规则,向所述故障类的原代码中插入所述混淆代码。
在一个实施例中,上述第一获取模块前还可以包括:
第四获取模块,用于获取各种类型的应用程序中类的混淆代码及其添加至类代码的插入位置;
确定模块,用于根据所述混淆代码和插入位置确定所述类对应的混淆规则,将所述混淆规则存入混淆规则库。
本发明的应用程序的代码混淆系统与本发明的应用程序的代码混淆方法一一对应,在上述应用程序的代码混淆方法的实施例阐述的技术特征及其有益效果均适用于应用程序的代码混淆系统的实施例中,特此声明。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (8)

1.一种应用程序的代码混淆方法,其特征在于,包括如下步骤:
获取预设的混淆规则库中各个混淆规则对应的类名的关键字,得到规则关键字;
确定需要进行代码混淆的应用程序中类的关键字,从混淆规则库中查找与所述应用程序中类的关键字对应的规则关键字,并确定所述规则关键字对应的混淆规则;
根据所述混淆规则向所述应用程序的类代码中插入该关键字对应的混淆代码;
获取所述应用程序的历史运行信息;
根据所述历史运行信息解析应用程序的映射文件;
根据所述映射文件定位出现错误的故障类,将所述故障类的代码还原得到故障类的原代码,并获取所述故障类的关键字;
根据所述故障类的关键字从混淆规则库中获取所述关键字对应的混淆规则;
根据所述混淆规则,向所述故障类的原代码中插入所述混淆代码。
2.根据权利要求1所述的应用程序的代码混淆方法,其特征在于,所述获取预设混淆规则库中各个混淆规则对应的类名的关键字,得到规则关键字的步骤后还包括:
建立关键字集合;
将各个混淆规则对应的规则关键字存入关键字集合;
查询关键字集合中是否存在与存入的规则关键字重复的规则关键字;若存在,则将重复的规则关键字合并为一个规则关键字。
3.根据权利要求2所述的应用程序的代码混淆方法,其特征在于,还包括:
从混淆规则库中获取重复的规则关键字对应的混淆规则,得到重复的混淆规则;
将重复的混淆规则合并为一个混淆规则,更新混淆规则库。
4.根据权利要求1所述的应用程序的代码混淆方法,其特征在于,所述根据所述故障类的关键字从混淆规则库中获取所述关键字对应的混淆规则的步骤后包括:
若混淆规则库中不存在所述关键字对应的混淆规则,则根据所述关键字对应的故障类代码建立相应的混淆规则;
根据所述建立的混淆规则向故障类的原代码中插入所述混淆代码,并将所述故障类对应的混淆规则存入混淆规则库。
5.根据权利要求1所述的应用程序的代码混淆方法,其特征在于,还包括:
编译或者运行所述应用程序,若出现编译失败或运行故障的状况,删除混淆规则库中所述故障类对应的混淆规则;
重新建立所述故障类的原代码对应的混淆规则;
根据所述混淆规则向故障类的原代码中插入所述混淆代码,并将所述重新建立的混淆规则存入混淆规则库。
6.根据权利要求1所述的应用程序的代码混淆方法,其特征在于,所述获取预设混淆规则库中各个混淆规则对应的类名的关键字,得到规则关键字的步骤前还包括:
获取各种类型的应用程序中类的混淆代码及其添加至类代码的插入位置;
根据所述混淆代码和插入位置确定所述类对应的混淆规则,将所述混淆规则存入混淆规则库。
7.一种应用程序的代码混淆系统,其特征在于,包括:
第一获取模块,用于获取预设的混淆规则库中各个混淆规则对应的类名的关键字,得到规则关键字;
查询模块,用于确定需要进行代码混淆的应用程序中类的关键字,从混淆规则库中查找与所述应用程序中类的关键字对应的规则关键字,并确定所述规则关键字对应的混淆规则;
第一插入模块,用于根据所述混淆规则向所述应用程序的类代码中插入该关键字对应的混淆代码;
第二获取模块,用于获取所述应用程序的历史运行信息;
解析模块,用于根据所述历史运行信息解析应用程序的映射文件;
定位模块,用于根据所述映射文件定位出现错误的故障类,将所述故障类的代码还原得到故障类的原代码,并获取所述故障类的关键字;
第三获取模块,用于根据所述故障类的关键字从混淆规则库中获取所述关键字对应的混淆规则;
第二插入模块,用于根据所述混淆规则,向所述故障类的原代码中插入所述混淆代码。
8.根据权利要求7所述的应用程序的代码混淆系统,其特征在于,所述第一获取模块前还包括:
第四获取模块,用于获取各种类型的应用程序中类的混淆代码及其添加至类代码的插入位置;
确定模块,用于根据所述混淆代码和插入位置确定所述类对应的混淆规则,将所述混淆规则存入混淆规则库。
CN201510402610.9A 2015-07-09 2015-07-09 应用程序的代码混淆方法和系统 Active CN104992083B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510402610.9A CN104992083B (zh) 2015-07-09 2015-07-09 应用程序的代码混淆方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510402610.9A CN104992083B (zh) 2015-07-09 2015-07-09 应用程序的代码混淆方法和系统

Publications (2)

Publication Number Publication Date
CN104992083A CN104992083A (zh) 2015-10-21
CN104992083B true CN104992083B (zh) 2018-02-16

Family

ID=54303896

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510402610.9A Active CN104992083B (zh) 2015-07-09 2015-07-09 应用程序的代码混淆方法和系统

Country Status (1)

Country Link
CN (1) CN104992083B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105912466B (zh) * 2016-04-07 2018-11-09 百度在线网络技术(北京)有限公司 应用异常信息的处理方法及装置
CN106569868B (zh) * 2016-11-09 2019-12-31 腾讯音乐娱乐(深圳)有限公司 一种基于Gradle的编译优化方法及装置
CN106657361B (zh) * 2016-12-30 2019-09-13 歌尔科技有限公司 一种代码添加混淆的安卓安装包ota升级方法
CN107103213B (zh) * 2017-03-23 2018-08-31 中国航天系统科学与工程研究院 一种基于遗传算法的软件代码混淆操作选择方法
CN108197440A (zh) * 2017-11-28 2018-06-22 五八有限公司 一种代码混淆方法、设备及计算机可读存储介质
CN108647500A (zh) * 2018-05-11 2018-10-12 北京奇虎科技有限公司 一种基于对抗逆向的程序加固方法及装置
CN109614771B (zh) * 2018-10-31 2020-07-03 同盾控股有限公司 一种基于Java代码的混淆方法和装置
CN110647329A (zh) * 2019-08-13 2020-01-03 平安科技(深圳)有限公司 代码混淆方法、装置、计算机设备和存储介质
CN111274556A (zh) * 2020-02-27 2020-06-12 北京小米移动软件有限公司 代码混淆方法、装置及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101031859A (zh) * 2004-09-30 2007-09-05 Ttpcom有限公司 程序源代码保护
CN101807239A (zh) * 2010-03-29 2010-08-18 山东高效能服务器和存储研究院 一种防止源代码反编译的方法
CN103544414A (zh) * 2013-10-25 2014-01-29 苏州通付盾信息技术有限公司 一种Android系统应用的深度代码混淆方法
CN103927164A (zh) * 2014-03-10 2014-07-16 珠海市君天电子科技有限公司 一种脚本混淆方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7150003B2 (en) * 2002-11-25 2006-12-12 Matsushita Electric Industrial Co., Ltd. Class coalescence for obfuscation of object-oriented software

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101031859A (zh) * 2004-09-30 2007-09-05 Ttpcom有限公司 程序源代码保护
CN101807239A (zh) * 2010-03-29 2010-08-18 山东高效能服务器和存储研究院 一种防止源代码反编译的方法
CN103544414A (zh) * 2013-10-25 2014-01-29 苏州通付盾信息技术有限公司 一种Android系统应用的深度代码混淆方法
CN103927164A (zh) * 2014-03-10 2014-07-16 珠海市君天电子科技有限公司 一种脚本混淆方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
面向Android应用程序的代码保护方法研究;徐剑等;《信息网络安全》;20141010;全文 *

Also Published As

Publication number Publication date
CN104992083A (zh) 2015-10-21

Similar Documents

Publication Publication Date Title
CN104992083B (zh) 应用程序的代码混淆方法和系统
Ma et al. Vurle: Automatic vulnerability detection and repair by learning from examples
Chockalingam et al. Integrated safety and security risk assessment methods: a survey of key characteristics and applications
US20160300063A1 (en) Software vulnerabilities detection system and methods
US8615750B1 (en) Optimizing application compiling
US20130054609A1 (en) Accessing Anchors in Voice Site Content
CN107229848A (zh) 一种代码加固方法和装置
CN109614771A (zh) 一种基于Java代码的混淆方法和装置
CN102682047A (zh) 一种混合的sql注入防护方法
WO2017101398A1 (zh) 数据查询控制方法及装置
Kern Securing the tangled web
CN101398845A (zh) 一种Web应用中的多语言绑定方法及系统
US20200226232A1 (en) Method of selecting software files
Bunke et al. An architecture-centric approach to detecting security patterns in software
CN107632832A (zh) 一种面向dalvik字节码控制流混淆方法
CN104320312A (zh) 网络应用安全测试工具及模糊测试用例生成方法和系统
US20180025162A1 (en) Application program analysis apparatus and method
CN105630563A (zh) 基于xml的继电保护装置规约的动态模型配置方法
CN105354485B (zh) 一种便携式设备数据处理方法
US8219966B2 (en) Method and system for integrating an application floorplan and an external service
CN108197020A (zh) 插件校验方法、电子设备及计算机存储介质
CN105447342A (zh) 脚本加密方法、解密方法及引擎
Mateescu et al. Translating Pi-calculus into LOTOS NT
CN101794240A (zh) 一种聚合数据内容的方法和系统
US20140359258A1 (en) Declarative Configuration Elements

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant