CN107808096A - 检测apk运行时被注入恶意代码的方法、终端设备及存储介质 - Google Patents
检测apk运行时被注入恶意代码的方法、终端设备及存储介质 Download PDFInfo
- Publication number
- CN107808096A CN107808096A CN201711180978.0A CN201711180978A CN107808096A CN 107808096 A CN107808096 A CN 107808096A CN 201711180978 A CN201711180978 A CN 201711180978A CN 107808096 A CN107808096 A CN 107808096A
- Authority
- CN
- China
- Prior art keywords
- steps
- injected
- installation kit
- malicious code
- android installation
- 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.)
- Granted
Links
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/562—Static detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明检测APK运行时被注入恶意代码的方法,根据安卓安装包运行时被注入恶意代码的是通过修改安卓系统虚拟机中java方法的数据结构来实现的这个原理,来进行安卓安装包运行时被注入恶意代码的检测。通过检测应用的关键方法在虚拟机中的存储数据结构是否改变来检测安卓安装包运行时是否被注入恶意代码,检测结果更加准确有效。
Description
技术领域
本发明涉及系统安全技术领域,具体是一种检测安卓安装包运行时被注入恶意代码的方法、终端设备及存储介质。
背景技术
Xposed是android系统上一个通用的hook框架,能对运行中的系统或安卓安装包(APK)自身的应用程序编程接口(api)进行挂钩(hook),改变api本身的参数或执行逻辑,被广泛使用在系统UI美化、系统功能定制等方面。由于其功能强大,因此也被应用到恶意代码注入,修改APK的正常的运行逻辑(例如:APK付费功能破解、APK私有数据窃取等),导致用户数据、隐私泄露等安全问题。
因此,要及时有效的检测出类似xposed的hook框架(即被恶意代码注入),保证APK运行环境的完整性至关重要。现有的检测手段虽然能检测出类似xposed的hook框架,但其未能从根本上解决问题,很容易被欺骗,导致检测结果不准确。
现有检测方法有:1、获取已安装的app列表,是否包含xposed相关APK。2、通过检测应用/proc/self/maps文件,查看是否有xposed相关的包被加载。3、对关键函数的调用栈进行回溯,检测调用栈是否有xposed相关方法。因为xposed加载的模块优先于应用本身启动,所以会hook相关函数,修改函数数据和执行逻辑,隐藏自身;也可以通过重新编译,修改自身包名称隐藏自身。因此容易导致检测结果不准确。
发明内容
为了解决上述问题,本发明提供一种检测安卓安装包运行时被注入恶意代码的方法、终端设备及存储介质,能有效的检测出APK在运行过程中是否被xposed等hook框架注入恶意代码。
本发明一种检测安卓安装包运行时被注入恶意代码的方法,包括如下步骤:
S1:启动安卓安装包(APK),进入S2步骤;
S2:注册一个native方法M,其内存地址为m,进入S3步骤;
S3:获取M的存储起始地址:在M的native代码中通过调用java本地接口(jni)函数,获取到该方法的jmethodID,其中jmethodID为方法在java虚拟机里对应数据结构的存储起始地址,进入S4步骤;
S4:扫描M的jmethod指向的内存地址(即M的内存地址),判断其是否等于m,若是,则进入S5步骤;若否,则重复执行S4;
S5:获取m的相对偏移S,进入S6步骤;
S6:设置需要检测的安卓安装包的关键方法为M0,判断M0是否为native方法,若是,则设置M0对应的native内存地址是m0,进入S7步骤;若否,则表明M0为java方法,进入S7步骤;
S7:通过获取M0的jmethodID,即M0在java虚拟机里对应数据结构的起始地址P0,进而获取相对P0偏移为S的地址中的数据A(当M0为native方法时,定义相对P0偏移为S的地址中的数据为A)或D(当M0为java方法时,定义相对P0偏移为S的地址中的数据为D),若M0为native方法时,进入S8步骤;若M0为java方法时,进入S9步骤;
S8:判断A是否等于m0,若是,则进入S10步骤;若否,则进入S11步骤;
S9:判断D指向的内存页面是否可执行,若否,则进入S10步骤;若是,则进入S11步骤;
S10:判定关键方法M0未被挂钩(hook),即对应的安卓安装包(APK)运行时未被注入恶意代码;
S11:判定关键方法M0被挂钩(hook),即对应的安卓安装包(APK)运行时被注入了恶意代码。
进一步的,S2中,native方法M是通过静态注册或动态注册生成的。
进一步的,S3中,调用的java本地接口(jni)函数为GetMethodID函数或GetStaticMethodID函数。
进一步的,S11中,关键方法M0被挂钩(hook),是通过安卓系统上通用的hook框架Xposed通过挂钩(hook)来实现的。
本发明一种检测安卓安装包运行时被注入恶意代码的终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现检测安卓安装包运行时被注入恶意代码的方法的步骤。
本发明一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现检测安卓安装包运行时被注入恶意代码的方法的步骤。
本发明的有益效果:
本发明根据安卓安装包运行时被注入恶意代码的是通过修改安卓系统虚拟机中java方法的数据结构来实现的这个原理,来进行安卓安装包运行时被注入恶意代码的检测。通过检测应用的关键方法在虚拟机中的存储数据结构是否改变来检测安卓安装包运行时是否被注入恶意代码,检测结果更加准确有效。
附图说明
图1为本发明实施例一的方法流程图。
具体实施方式
为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。
现结合附图和具体实施方式对本发明进一步说明。
Xposed被安装后,会替换系统的app_process文件,该文件为android系统应用启动关键文件。因此,系统启动后xposed相关代码也被执行,xposed hook框架会被加载,随后恶意代码也会根据配置文件被加载运行。该过程是通过修改虚拟机中java方法的数据结构来实现的,因此可以通过其实现原理来检测安卓安装包的关键方法是否被hook和被注入恶意代码。
实施例一:
请参阅图1所示,本发明提供了一种检测安卓安装包运行时被注入恶意代码的方法,能有效的检测出APK在运行过程中是否被xposed等hook框架注入恶意代码。
本发明所阐述的方法具体过程如下:
S1:启动安卓安装包(APK),进入S2步骤;
S2:通过静态注册或者动态注册生成一个native方法M,其内存地址为m,进入S3步骤;
S3:获取M的存储起始地址:在M的native代码中通过调用java本地接口(jni)函数,获取到该方法的jmethodID,其中jmethodID为方法在java虚拟机里对应数据结构的存储起始地址,具体地,调用的java本地接口(jni)函数为GetMethodID函数或GetStaticMethodID函数。进入S4步骤;
S4:扫描M的jmethod指向的内存地址(即M的内存地址),判断其是否等于m,若是,则进入S5步骤;若否,则重复执行S4;
S5:获取m的相对偏移S,进入S6步骤;
S6:设置需要检测的安卓安装包的关键方法为M0,判断M0是否为native方法,若是,则设置M0对应的native内存地址是m0,进入S7步骤;若否,则表明M0为java方法,进入S7步骤;
S7:通过获取M0的jmethodID,即M0在java虚拟机里对应数据结构的起始地址P0,进而获取相对P0偏移为S的地址中的数据A(当M0为native方法时,定义相对P0偏移为S的地址中的数据为A,获取相对P0偏移为S的地址中的数据记为A)或D(当M0为java方法时,定义相对P0偏移为S的地址中的数据为D,获取相对P0偏移为S的地址中的数据记为D),若M0为native方法时,进入S8步骤;若M0为java方法时,进入S9步骤;
S8:判断A是否等于m0,若是,则进入S10步骤;若否,则进入S11步骤;
S9:判断D指向的内存页面是否可执行,若否,则进入S10步骤;若是,则进入S11步骤;
S10:判定关键方法M0未被挂钩(hook),即对应的安卓安装包(APK)运行时未被注入恶意代码;
S11:判定关键方法M0被挂钩(hook),即对应的安卓安装包(APK)运行时被注入了恶意代码。具体地,关键方法M0被挂钩(hook),是通过安卓系统上通用的hook框架Xposed等通过挂钩(hook)来修改APK的正常的运行逻辑来实现的。
实施例二:
本发明还提供一种检测安卓安装包运行时被注入恶意代码的终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例上述方法实施例中的步骤,例如图1所示的步骤的方法步骤。
进一步地,作为一个可执行方案,所述检测安卓安装包运行时被注入恶意代码的终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述检测安卓安装包运行时被注入恶意代码的终端设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,上述检测安卓安装包运行时被注入恶意代码的终端设备的组成结构仅仅是检测安卓安装包运行时被注入恶意代码的终端设备的示例,并不构成对检测安卓安装包运行时被注入恶意代码的终端设备的限定,可以包括比上述更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述检测安卓安装包运行时被注入恶意代码的终端设备还可以包括输入输出设备、网络接入设备、总线等,本发明实施例对此不做限定。
进一步地,作为一个可执行方案,所称处理器可以是中央处理单元(CentralProcessing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述检测安卓安装包运行时被注入恶意代码的终端设备的控制中心,利用各种接口和线路连接整个检测安卓安装包运行时被注入恶意代码的终端设备的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述检测安卓安装包运行时被注入恶意代码的终端设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据手机的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例上述方法的步骤。
所述检测安卓安装包运行时被注入恶意代码的终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
本发明一种检测安卓安装包运行时被注入恶意代码的方法、终端设备及存储介质,根据安卓安装包运行时被注入恶意代码的是通过修改安卓系统虚拟机中java方法的数据结构来实现的这个原理,来进行安卓安装包运行时被注入恶意代码的检测。通过检测应用的关键方法在虚拟机中的存储数据结构是否改变来检测安卓安装包运行时是否被注入恶意代码,检测结果更加准确有效。
尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。
Claims (6)
1.一种检测安卓安装包运行时被注入恶意代码的方法,其特征在于:包括如下步骤:
S1:启动安卓安装包(APK),进入S2步骤;
S2:注册一个native方法M,其内存地址为m,进入S3步骤;
S3:获取M的存储起始地址:在M的native代码中通过调用java本地接口(jni)函数,获取到该方法的jmethodID,其中jmethodID为方法在java虚拟机里对应数据结构的存储起始地址,进入S4步骤;
S4:扫描M的jmethod指向的内存地址(即M的内存地址),判断其是否等于m,若是,则进入S5步骤;若否,则重复执行S4;
S5:获取m的相对偏移S,进入S6步骤;
S6:设置需要检测的安卓安装包的关键方法为M0,判断M0是否为native方法,若是,则设置M0对应的native内存地址是m0,进入S7步骤;若否,则表明M0为java方法,进入S7步骤;
S7:通过获取M0的jmethodID,即M0在java虚拟机里对应数据结构的起始地址P0,进而获取相对P0偏移为S的地址中的数据A(当M0为native方法时,定义相对P0偏移为S的地址中的数据为A)或D(当M0为java方法时,定义相对P0偏移为S的地址中的数据为D),若M0为native方法时,进入S8步骤;若M0为java方法时,进入S9步骤;
S8:判断A是否等于m0,若是,则进入S10步骤;若否,则进入S11步骤;
S9:判断D指向的内存页面是否可执行,若否,则进入S10步骤;若是,则进入S11步骤;
S10:判定关键方法M0未被挂钩(hook),即对应的安卓安装包(APK)运行时未被注入恶意代码;
S11:判定关键方法M0被挂钩(hook),即对应的安卓安装包(APK)运行时被注入了恶意代码。
2.如权利要求1所述的检测安卓安装包运行时被注入恶意代码的方法,其特征在于:S2中,native方法M是通过静态注册或动态注册生成的。
3.如权利要求1所述的检测安卓安装包运行时被注入恶意代码的方法,其特征在于:S3中,调用的java本地接口(jni)函数为GetMethodID函数或GetStaticMethodID函数。
4.如权利要求1所述的检测安卓安装包运行时被注入恶意代码的方法,其特征在于:S11中,关键方法M0被挂钩(hook),是通过安卓系统上通用的hook框架Xposed通过挂钩(hook)来实现的。
5.一种检测安卓安装包运行时被注入恶意代码的终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于:所述处理器执行所述计算机程序时实现如权利要求1-4所述方法的步骤。
6.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1-4所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711180978.0A CN107808096B (zh) | 2017-11-23 | 2017-11-23 | 检测apk运行时被注入恶意代码的方法、终端设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711180978.0A CN107808096B (zh) | 2017-11-23 | 2017-11-23 | 检测apk运行时被注入恶意代码的方法、终端设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107808096A true CN107808096A (zh) | 2018-03-16 |
CN107808096B CN107808096B (zh) | 2019-12-17 |
Family
ID=61589389
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711180978.0A Active CN107808096B (zh) | 2017-11-23 | 2017-11-23 | 检测apk运行时被注入恶意代码的方法、终端设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107808096B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109753799A (zh) * | 2018-12-14 | 2019-05-14 | 厦门安胜网络科技有限公司 | 一种Android应用程序防篡改的方法、系统及计算机存储介质 |
CN110348213A (zh) * | 2019-07-15 | 2019-10-18 | 北京智游网安科技有限公司 | 一种Hook攻击检测方法、存储介质及移动终端 |
WO2020019482A1 (zh) * | 2018-07-27 | 2020-01-30 | 平安科技(深圳)有限公司 | 一种函数hook检测方法、检测设备及计算机可读介质 |
CN111241524A (zh) * | 2020-01-18 | 2020-06-05 | 苏州浪潮智能科技有限公司 | 一种判断设备唯一性的方法及系统 |
CN113360901A (zh) * | 2020-03-04 | 2021-09-07 | 北京三快在线科技有限公司 | 异常Xposed框架的检测方法、装置、介质及设备 |
CN113590133A (zh) * | 2021-08-09 | 2021-11-02 | 咪咕文化科技有限公司 | 安卓系统注入检测方法、装置、设备以及计算机存储介质 |
CN114553514A (zh) * | 2022-02-16 | 2022-05-27 | 中国建设银行股份有限公司 | 移动应用的静态注入风险检测方法及装置 |
CN114707150A (zh) * | 2022-03-21 | 2022-07-05 | 安芯网盾(北京)科技有限公司 | 一种恶意代码检测方法、装置、电子设备和存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101414913A (zh) * | 2008-12-04 | 2009-04-22 | 北京世纪红山科技有限公司 | 基于虚拟化技术的计算机网络认证系统和方法 |
CN101482907A (zh) * | 2009-02-18 | 2009-07-15 | 中国科学技术大学 | 基于专家系统的主机恶意代码行为检测系统 |
CN105279430A (zh) * | 2015-11-19 | 2016-01-27 | 国云科技股份有限公司 | 针对基于Xen的Linux虚拟机恶意代码攻击的内核完整性检测方法 |
-
2017
- 2017-11-23 CN CN201711180978.0A patent/CN107808096B/zh active Active
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020019482A1 (zh) * | 2018-07-27 | 2020-01-30 | 平安科技(深圳)有限公司 | 一种函数hook检测方法、检测设备及计算机可读介质 |
CN109753799A (zh) * | 2018-12-14 | 2019-05-14 | 厦门安胜网络科技有限公司 | 一种Android应用程序防篡改的方法、系统及计算机存储介质 |
CN109753799B (zh) * | 2018-12-14 | 2021-01-15 | 厦门安胜网络科技有限公司 | 一种Android应用程序防篡改的方法、系统及计算机存储介质 |
CN110348213A (zh) * | 2019-07-15 | 2019-10-18 | 北京智游网安科技有限公司 | 一种Hook攻击检测方法、存储介质及移动终端 |
CN111241524A (zh) * | 2020-01-18 | 2020-06-05 | 苏州浪潮智能科技有限公司 | 一种判断设备唯一性的方法及系统 |
CN113360901A (zh) * | 2020-03-04 | 2021-09-07 | 北京三快在线科技有限公司 | 异常Xposed框架的检测方法、装置、介质及设备 |
CN113590133A (zh) * | 2021-08-09 | 2021-11-02 | 咪咕文化科技有限公司 | 安卓系统注入检测方法、装置、设备以及计算机存储介质 |
CN114553514A (zh) * | 2022-02-16 | 2022-05-27 | 中国建设银行股份有限公司 | 移动应用的静态注入风险检测方法及装置 |
CN114707150A (zh) * | 2022-03-21 | 2022-07-05 | 安芯网盾(北京)科技有限公司 | 一种恶意代码检测方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107808096B (zh) | 2019-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107808096A (zh) | 检测apk运行时被注入恶意代码的方法、终端设备及存储介质 | |
US11687645B2 (en) | Security control method and computer system | |
Schwarz et al. | JavaScript Template Attacks: Automatically Inferring Host Information for Targeted Exploits. | |
US9692599B1 (en) | Security module endorsement | |
JP6100898B2 (ja) | メッセージを処理するための方法およびデバイス | |
US10387627B2 (en) | Systems and methods for analyzing software | |
US9892263B2 (en) | System, method and apparatus to visually configure an analysis of a program | |
CN105357204B (zh) | 生成终端识别信息的方法及装置 | |
CN105631337B (zh) | 控制机器代码的本机图像访问操作系统资源的系统及方法 | |
CN113489713B (zh) | 网络攻击的检测方法、装置、设备及存储介质 | |
CN108763951B (zh) | 一种数据的保护方法及装置 | |
CN105760787B (zh) | 用于检测随机存取存储器中的恶意代码的系统及方法 | |
US20120047579A1 (en) | Information device, program, method for preventing execution of unauthorized program code, and computer readable recording medium | |
CN104268473B (zh) | 应用程序检测方法和装置 | |
CN105653947B (zh) | 一种评估应用数据安全风险的方法及装置 | |
CN111179066B (zh) | 业务数据的批量处理方法、装置、服务器和存储介质 | |
CN110096433B (zh) | 一种iOS平台上获取加密数据的方法 | |
CN109871681A (zh) | 基于混合分析面向动态代码加载安卓恶意软件检测方法 | |
CN109388946A (zh) | 恶意进程检测方法、装置、电子设备及存储介质 | |
CN109558207A (zh) | 在虚拟机中形成用于进行文件的防病毒扫描的日志的系统和方法 | |
CN103034810B (zh) | 一种检测方法、装置及电子设备 | |
CN112214267A (zh) | 一种安卓脱壳加速方法、装置、存储介质及计算机设备 | |
JP5441043B2 (ja) | プログラム、情報処理装置、及び情報処理方法 | |
CN108229168B (zh) | 一种嵌套类文件的启发式检测方法、系统及存储介质 | |
CN108038378A (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 |