CN110348206B - 应用于安卓安装包apk的保护方法、介质、装置和计算设备 - Google Patents
应用于安卓安装包apk的保护方法、介质、装置和计算设备 Download PDFInfo
- Publication number
- CN110348206B CN110348206B CN201910624250.5A CN201910624250A CN110348206B CN 110348206 B CN110348206 B CN 110348206B CN 201910624250 A CN201910624250 A CN 201910624250A CN 110348206 B CN110348206 B CN 110348206B
- Authority
- CN
- China
- Prior art keywords
- code
- apk
- converting
- condition
- methods
- 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/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
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)
- Storage Device Security (AREA)
Abstract
本发明的实施方式提供了一种应用于安卓安装包APK的保护方法。该方法包括:获取待保护的APK;确定待保护的APK中包含的关键文件,其中,关键文件包括用于实现待保护的APK的功能和逻辑中至少一个的文件;以及将关键文件的代码转换为对应的本地代码,以保护待保护的APK。通过将APK中关键文件的代码转换为本地代码,即通过静态代码下沉的方式,不仅能够增强APK的安全强度,而且对APK的性能影响不大,甚至在某些情况下可以提高APK的性能。此外,本发明的实施方式提供了一种应用于安卓安装包APK的保护装置。
Description
技术领域
本发明的实施方式涉及计算机领域,更具体地,本发明的实施方式涉及一种应用于安卓安装包APK(Android Package,安卓安装包)的保护方法及其装置、介质和计算设备。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
APP(Application,应用程序)主要指安装在智能机上的软件,用于完善原始系统的不足与个性化,为用户提供更丰富的使用体验。然而,APP是一把双刃剑,在提供便利的同时还可能给用户带来安全隐患。比如金融类APP,一旦遭受攻击,轻则泄露用户的个人信息,重则给用户造成经济损失。为了保护APP安全,相关技术中一般会对APP采取加固保护措施。
目前市面上已有的Android应用程序加固保护方案主要有如下3种。
(1)一代加固方案。对APK中的dex文件先进行整体加密,再在运行时进行整体解密、加载。
(2)二代加固方案。先随机抽取dex文件中的部分指令进行加密,再在运行时进行解密、修复、还原。
(3)三代加固方案。先抽取dex文件中的重要方法指令进行加密变换,再在运行时使用自定义的虚拟解释器对加密变换后的指令进行解释。
发明内容
但是,受技术本身的限制,针对相关技术中提供的加固方案,攻击者很容易获得加固前的dex文件。
(1)对于一代加固方案,由于是整体加密的,因此攻击者可以在APK运行期间,等内存中的dex文件全部还原以后,再在关键系统加载处进行内存Dump。攻击者也可以通过对系统的关键函数进行Hook,进而将dex文件从内存读出。因此,APK经一代加固保护后安全强度依旧比较弱。
(2)对于二代加固方案,虽然是部分解密的,但攻击者可以通过遍历内存结构来重建dex文件。攻击者也可以利用Hook Class Loader提供的Load Class方法,通过反射调用Getdex方法来取得dex文件。因此,APK经二代加固保护后安全强度也比较弱
(3)对于三代加固方案,虽然采用了dexVMP(dex Virtual Machine Protect,dex虚拟机保护),但攻击者可以通过分析虚拟解释函数,对虚拟后的指令进行映射还原。因此,APK经三代加固保护后安全强度也比较弱。同时dexVMP对APK性能影响较大。此外,这种方案不仅对调用频率较高的函数代码不适用,而且也不能进行大面积的代码保护。
因此,在现有技术中针对APK即使使用了加固保护,安全强度也比较弱。同时现有的加固方案对APK性能影响较大。这非常令人烦恼。
为此,非常需要一种改进的应用于APK的保护方法,以加强APK的安全强度,同时减少对APK性能的影响。
在本上下文中,本发明的实施方式期望提供一种应用于APK的保护方法和装置。
在本发明实施方式的第一方面中,提供了一种应用于APK的保护方法,包括:获取待保护的APK;确定所述待保护的APK中包含的关键文件,其中,所述关键文件包括用于实现所述待保护的APK的功能和逻辑中至少一个的文件;以及将所述关键文件的代码转换为对应的本地代码,以保护所述待保护的APK。
在本发明的一个实施例中,该将所述关键文件的代码转换为对应的本地代码包括:确定所述关键文件中包含的所有方法的代码;针对所述所有方法中的每个方法,确定所述方法是否满足代码转换条件;以及将所述所有方法中满足所述代码转换条件的方法对应的代码转换为对应的本地代码。
在本发明的另一实施例中,该针对所述所有方法中的每个方法,确定所述方法是否满足代码转换条件,包括以下至少之一:针对所述每个方法,确定所述方法是否是被标记过的方法;针对所述每个方法,确定所述方法的调用频率是否满足第一预设值;以及针对所述每个方法,确定所述方法的类型是否是指定的方法类型。
在本发明的又一个实施例中,该方法还包括将所述所有方法中满足所述代码转换条件的方法对应的代码转换为本地代码之前:针对满足所述代码转换条件的方法,确定所述方法是否满足代码转换限制条件;以及将与满足所述代码转换条件但不满足所述代码转换限制条件的方法对应的代码转换为对应的本地代码。
在本发明的再一个实施例中,该所述针对满足所述代码转换条件的方法,确定所述方法是否满足代码转换限制条件,包括以下至少之一:针对满足所述代码转换条件的方法,确定将所述方法对应的代码转换为对应的本地代码后对所述待保护的APK的性能的影响程度是否满足预设条件;以及针对满足所述代码转换条件的方法,确定经转换所述方法对应的代码得到的本地代码的数据量是否满足第二预设值。
在本发明的再一个实施例中,该将所述关键文件的代码转换为对应的本地代码,包括:将所述关键文件的代码转换为中间状态的代码;以及将所述中间状态的代码转换为指定处理器可运行的本地代码。
在本发明的再一个实施例中,该将所述关键文件的代码转换为中间状态的代码包括:将所述关键文件的代码转换为中端语言状态的代码,其中,所述中端语言状态的代码对应的语言级别高于所述中间状态的代码对应的语言级别;以及将所述中端语言状态的代码转换为所述中间状态的代码。
在本发明的再一个实施例中,该关键文件包括:dex文件或者jar文件。
在本发明实施方式的第二方面中,提供了一种介质,存储有计算机可执行指令,所述指令在被处理单元执行时用于实现上述任一项所述的应用于APK的保护方法。
在本发明实施方式的第三方面中,提供了一种应用于APK的保护装置,包括:获取模块,用于获取待保护的APK;确定模块,用于确定所述待保护的APK中包含的关键文件,其中,所述关键文件包括用于实现所述待保护的APK的功能和逻辑中至少一个的文件;以及转换模块,用于将所述关键文件的代码转换为对应的本地代码,以保护所述待保护的APK。
在本发明实施方式的第四方面中,提供了一种计算设备,包括:处理单元;以及存储单元,存储有计算机可执行指令,所述指令在被所述处理单元执行时用于实现上述任一项所述的应用于APK的保护方法。
根据本发明实施方式的静态代码下沉操作,即在加固期间将APK中包含的关键文件如dex文件或jar文件的代码转换为对应的本地代码,在运行期间可以直接加载经转换得到的本地代码,无需将关键文件基于对应的本地代码还原回原来的代码,因而关键文件不可能被内存Dump,从而显著地加强了APK的安全强度,并且减少了对APK性能的影响,为用户带来了更好的体验。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性地示出了根据本发明实施方式的适于APK保护的应用场景示意图;
图2示意性地示出了根据本发明实施例的应用于APK的保护方法的流程图;
图3示意性地示出了根据本发明实施例的将关键文件的代码转换为对应的本地代码的流程图;
图4示意性示出了根据本发明另一实施例的将关键文件的代码转换为对应的本地代码的流程图;
图5示意性示出了根据本发明实施例的将关键文件的代码转换为中间状态的代码的流程图;
图6示意性地示出了根据本发明实施例的应用于APK的保护装置的框图;
图7示意性地示出了根据本发明实施例的转换模块的框图;
图8示意性地示出了根据本发明另一实施例的转换模块的框图;
图9示意性地示出了根据本发明实施例的第一转换单元的框图;
图10示意性地示出了根据本发明实施方式的应用于APK的保护方法的程序产品示意图;以及
图11示意性地示出了根据本发明实施例的应用于APK的保护方法的计算设备的框图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种应用于APK的保护方法、介质、装置和计算设备。
在本文中,需要理解的是,所涉及的术语表示如下。
内存Dump是指在程序运行期间将内存中的数据和代码片段等进行“卸出”并保存到另一个存储装置(如本地硬盘)中。
Hook表示钩子机制。应用程序可以通过Hook截获并处理应用程序中的消息或其他特定事件。
VMP是一种代码保护方法。通过将待保护的指令变换为一种自定义的指令形式,然后用自定义的虚拟解释器对转换后的指令进行解释。VMP不改变原有的代码逻辑。
中间状态是编译器在运行过程中产生的一种中间语言表现形式。
此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明的发明人发现,使用现有技术提供的加固方案,攻击者要么可以通过内存Dump获得APK的dex文件,要么可以通过Hook机制获得dex文件,要么可以通过重建获得dex文件,要么可以通过反射调用获得dex文件,等等。因此,在现有技术中APK即使使用了加固保护,安全强度也比较弱。同时现有的加固方案对APK性能影响较大。
基于以上分析,本发明的发明构思在于,在加固期间将APK的关键文件(如dex文件和jar文件)进行代码下沉,比如将关键文件的代码从Java层转换为本地层。如此,一方面由于运行期间不需要还原关键文件,因而可以解决内存Dump这种攻击威胁,使得加固后的APK安全强度增强。另一方面由于代码在本地层的安装速度和运行速度都比在Java层的要快,因而本发明提供的加固方案对APK性能影响不大,甚至在某些情况下可以提高APK的性能。
本发明通过获取待保护的APK,并确定该APK中包含的关键文件,进而将确定出的关键文件的代码转换为对应的本地代码,可以实现对该APK进行加固保护,并使加固后的APK安全强度增强,同时减小对APK性能的影响。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
首先参考图1详细阐述本发明实施例的应用于APK的保护方法和装置的应用场景。
图1示意性地示出了根据本发明实施方式的适于APK保护的应用场景示意图。
如图1所示,为了完善原有系统的不足与个性化,通常情况下用户会考虑在智能机上安装更多的APP,比如金融类的、社交类的、办公类的、购物类的和娱乐类的,等等。然而,APP是一把双刃剑,在提供便利的同时还可能给用户带来安全隐患。因此,为了保护APP安全,本发明提供了一种改进的应用于APK的保护方法和装置。
并且,通过本发明提供的APK加固保护方案,可以解决内存Dump这种攻击威胁,使得加固后的APK安全强度增强。并且,可以提高代码的安装速度和运行速度,减少对APK性能的影响,甚至提高APK的性能。此外,在代码下沉时,还可以针对不同的处理器转换成不同的本地代码,提高APK的兼容性。
示例性方法
下面结合图1的应用场景,参考图2来描述根据本发明示例性实施方式的应用于APK的保护方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
图2示意性地示出了根据本发明实施例的应用于APK的保护方法的流程图。
如图2所示,根据本发明实施例的应用于APK的保护方法包括操作S210~操作S230。
在操作S210,获取待保护的APK。
在本发明实施例中,可以获取任何需要进行加固保护的APK,在此不做限定。
接下来,在操作S220,确定待保护的APK中包含的关键文件,其中,关键文件例如可以包括用于实现待保护的APK的功能和逻辑中至少一个的文件。
具体地,该关键文件例如可以包括:dex文件或jar文件。即本发明实施例提供的加固方案不仅可以支持dex文件的加固保护,还可以支持Jar文件的加固保护。
需要说明的是,dex文件和jar文件可以相互转换,并且都是用于描述APK的功能/逻辑的文件。
因为APK中包含的关键文件一旦被攻击成功,APK的安全防线就会被突破,带来的后果也会比较严重。所以,在本发明实施例中,优先考虑对关键文件进行加固保护。
然后,在操作S230,将关键文件的代码转换为对应的本地代码,以保护待保护的APK。
需要说明的是,在本发明实施例中,关键文件在转换之前的代码(以下称原代码)可以是字节码(如Java字节码,有时候也叫编译代码)。
应该理解,本地代码是计算机编程(代码),编译用来运行一个特殊的处理器(如X86处理器)和它的特殊指令集。本地代码可以与字节码区分开来,并且可以在虚拟机上运行(比如Java虚拟机)。
具体地,在本发明实施例中,可以在加固期间,通过虚拟机把字节码(如APK中关键文件的jave代码)转换成用于特定处理器的本地代码(如二进制代码),从而对APK实现静态代码下沉,进而对APK实现加固保护。
通过本发明提供的APK加固保护方案,以“静态代码下沉”的方式将APK中关键文件的字节码转换为对应的本地代码,例如将关键文件的原代码从java层完全下沉到本地层,此时攻击者的攻击目标由Java层转为本地层。这个时候对于攻击者而言,将代码从本地层还原为Java层的这个过程是不可逆的,即不存在还原,因而攻击难度会大大增加,对APK的保护效果会大大增强。并且,由于代码在本地层的安装速度和运行速度都比在其他层的要快,因此代码下沉以后,可以减少对APK性能的影响,甚至可以提高APK的性能。
应该理解,在本发明实施例中,也可以对APK的全部文件进行加固保护。具体加固方法与对APK中关键文件的加固保护方案类似,在此不再赘述。
下面参考图3~图5,结合具体实施例对图2所示的方法做进一步说明。
图3示意性地示出了根据本发明实施例的将关键文件的代码转换为对应的本地代码的流程图。在该实施例中,除了包括上文参考图2描述的操作S210和S220之外,例如还可以包括操作S310~S330。为了描述的简洁起见,这里省略对操作S210和S220的描述。
应该理解,在该实施例中,上文参考图2描述的操作S230可以包括如图3所示的操作S310~S330。
在操作S310,确定关键文件中包含的所有方法的代码。
具体地,在本发明实施例中,例如可以对待保护的APK中包含的dex文件进行解析,从而收集所有待保护的方法并确定用于实现这些方法的代码。
接下来,在操作S320,针对所有方法中的每个方法,确定该方法是否满足代码转换条件。
应该理解,在本发明实施例中,满足代码转换条件的方法例如可以包括与APK安全性关系密切的所有方法。
具体地,在操作S310之后,可以将收集到的所有方法存储的方法列表中。然后,遍历该方法列表,针对其中的每个方法,确定其是否满足代码转换条件。如果满足,则执行代码转换操作,如果不满足,则继续判断下一个方法是否满足代码转换条件。
进一步,作为一种可选的实施例,针对所有方法中的每个方法确定方法是否满足代码转换条件例如可以包括以下至少之一。
例如,针对每个方法确定该方法是否是被标记过的方法。由于在实现每个方法的过程中,通常会将那些对安全性影响较大的方法预先标记出来。因此,在实现本实施方式时,可以将标记过的方法作为满足代码转换条件的方法。对于未标记过的方法,可以继续判断它是否满足其他代码转换条件。
再例如,针对每个方法确定该方法的调用频率是否满足第一预设值。应该理解,一个方法如果经常被调用,即调用频率比较高,则一般认为该方法被攻击的可能性比较大。因此,在实现本实施方式时,可以将调用频率超过一定值如第一预设值的方法作为满足代码转换条件的方法。对于调用频率未超过一定值的方法,可以继续判断它是否满足其他代码转换条件。需要说明的是,第一预设值例如可以根据实际需要灵活设置。
例如,针对每个方法确定该方法的类型是否是指定的方法类型。应该理解,在本实施方式中,例如可以根据实际需要灵活指定需要执行代码转换的方法类型。例如对于原代码很少(如只有一行)的方法一般认为是没有必要转换的,因此可以将其排除在指定的方法类型之外。因此,在实现本实施方式时,可以将属于指定的方法类型的方法作为满足代码转换条件的方法。对于不属于指定的方法类型的方法,可以继续判断它是否满足其他代码转换条件。
应该理解,在本发明实施例中,例如可以通过调度引擎对所有的方法数从调用频率、方法类型等方面进行初步分析,进而确定这些方法是否满足代码转换条件。
然后,在操作S330,将所有方法中满足代码转换条件的方法对应的代码转换为对应的本地代码。
应该理解,在本发明实施例中,对于不满足代码转换条件的方法,在进行加固保护时可以不做任何处理。
通过本发明实施例,可以只对与APK安全性关系密切即满足代码转换条件的方法进行加固保护,从而减少不必要的加固操作。
此外,作为一种可选的实施例,该方法例如还可以包括在将所有方法中满足代码转换条件的方法对应的代码转换为本地代码之前执行如下操作。针对满足代码转换条件的方法,进一步确定该方法是否满足代码转换限制条件。并将与满足代码转换条件但不满足代码转换限制条件的方法对应的代码转换为对应的本地代码。
如果只考虑安全性影响,将满足代码转换条件的所有方法都执行代码下沉操作,则有可能会影响APK的性能或者影响用户体验。
基于此,在本发明实施例中,对前述实施例做了进一步改进。即对于某些关系到安全性的方法,如果转换之后会严重影响APK的性能或者转换之后数据量较大,则会考虑性能/数据量与安全性之间的平衡,选择性地进行代码转换。具体地,可以增加代码转换限制条件进行过滤。
进一步,作为一种可选的实施例,针对满足代码转换条件的方法,确定该方法是否满足代码转换限制条件例如可以包括以下至少之一。
例如,针对满足代码转换条件的方法,进一步确定将该方法对应的代码(如该方法的字节码)转换为对应的本地代码后对待保护的APK的性能的影响程度是否满足预设条件。其中,如果确定将某个方法的原代码转换为对应的本地代码后对APK的性能的影响程度满足预设条件,则认为该方法满足代码转换限制条件。否则,如果确定将某个方法的原代码转换为对应的本地代码后对APK的性能的影响程度不满足预设条件,则认为该方法不满足代码转换限制条件。例如,如果将一个方法的原代码转换为对应的本地代码后,安装APK所需要的时间将由原来的3秒增加到1分钟,则认为该方法满足代码转换限制条件,需要限制对该方法进行代码转换。
例如,针对满足代码转换条件的方法,进一步确定经转换该方法对应的代码(如该方法的字节码)得到的本地代码的数据量是否满足第二预设值。例如,如果将一个方法的原代码转换为对应的本地代码后,代码的数据量将由原来的500M增加到1G,则认为该方法满足代码转换限制条件,需要限制对该方法进行代码转换。
应该理解,在本发明实施例中,例如可以通过调度引擎对满足代码转换条件的所有方法进一步从代码转换后对APK性能的影响以及代码数据量的大小自定义选择是否需要加固。
通过本发明实施例,在增强APK安全性的基础上,可以避免APK性能受到较大影响。或者可以避免转换后代码数据量过大而影响用户体验。
图4示意性示出了根据本发明另一实施例的将关键文件的代码转换为对应的本地代码的流程图。在该实施例中,除了包括上文参考图2描述的操作S210和S220之外,例如还可以包括操作S410~S420。为了描述的简洁起见,这里省略对操作S210和S220的描述。
应该理解,在该实施例中,上文参考图2描述的操作S230(为了区别于图3所示的实施例,此处将该操作标记为S230’)可以包括如图4所示的操作S410~S420。
在操作S410,将关键文件的代码转换为中间状态的代码。
具体地,针对一个关键文件,例如可以通过编译器编译其原代码来产生一段对应的中间状态的代码。
接下来,在操作S420,将中间状态的代码转换为指定处理器可运行的本地代码。
应该理解,在本发明实施例中,先将关键文件如dex文件的原代码转换为中间状态,再从中间状态编译处理成各指定处理器(ARM/X86/MISP等)可运行的本地代码,可以更好地兼容不同的dex文件指令集,即可以提高APK的兼容性。
本发明实施例由于引入了编译处理,因此既能增强APK的安全强度,同时也可以使整体架构保持良好的兼容性。
图5示意性示出了根据本发明实施例的将关键文件的代码转换为中间状态的代码的流程图。在该实施例中,除了包括上文参考图2描述的操作S210和S220,以及上文参考图4描述的操作S420之外,例如还可以包括操作S510~S520。为了描述的简洁起见,这里省略对操作S210~S220以及S420的描述。
应该理解,在该实施例中,上文参考图4描述的操作S410可以包括如图5所示的操作S510~S520。
在操作S510,将关键文件的代码转换为中端语言状态的代码,其中,中端语言状态的代码对应的语言级别高于中间状态的代码对应的语言级别。
具体地,可以通过对dex文件进行解析并对其指令进行处理,形成块状态,然后将块状态转化为一种自定义的中端语言状态。需要说明的是,该中端语言状态能保持dex文件中原有的所有语义信息。并且该中端语言状态可以为中间状态转换提供一定的基础。
接下来,在操作S520,将中端语言状态的代码转换为中间状态的代码。
具体地,在操作S520中,例如可以对中端语言状态代码中的指令进行一对一的“下沉”翻译处理,从而将中端语言状态代码转换为编译器中的中间状态代码,以便后面执行编译汇编处理。
通过执行操作S520,例如原先Java层方法代码中的指令可以被抽空,从而变成本地层声明的方法代码。
需要说明的是,在本发明实施例中,在编译汇编阶段,例如可以对中间状态代码进行编译汇编,得到各个架构平台下的目标文件。这里的目标文件例如可以包括ARM、X86、MIPS等形式的文件。
通过本发明实施例,在保障APK安全强度足够的前提下,还可以提高APK的兼容性,例如使APK兼容多个不同的架构平台。并且,通过本发明实施例,先做中端语言状态转换,再做中间状态转换,可以便于工程后期维护。
示例性装置
在介绍了本发明示例性实施方式的方法之后,接下来,参考图6对本发明示例性实施方式的应用于APK的保护装置进行描述。
图6示意性地示出了根据本发明实施例的应用于APK的保护装置的框图。
如图6所示,该保护装置600例如可以包括获取模块610、确定模块620和转换模块630。
该保护装置600可以用来实现参考图2~图5所示的方法。
具体地,获取模块610,用于获取待保护的APK。
确定模块620,用于确定待保护的APK中包含的关键文件,其中,关键文件例如可以包括用于实现待保护的APK的功能和逻辑中至少一个的文件。
转换模块630,用于将关键文件的代码转换为对应的本地代码,以保护待保护的APK。
通过本发明提供的APK加固保护方案,以“静态代码下沉”的方式将APK中关键文件的字节码转换为对应的本地代码,例如将关键文件的原代码从java层完全下沉到本地层,此时攻击者的攻击目标由Java层转为本地层。这个时候对于攻击者而言,将代码从本地层还原为Java层的这个过程是不可逆的,即不存在还原,因而攻击难度会大大增加,对APK的保护效果会大大增强。并且,由于代码在本地层的安装速度和运行速度都比在其他层的要快,因此代码下沉以后,可以减少对APK性能的影响,甚至可以提高APK的性能。
图7示意性地示出了根据本发明实施例的转换模块的框图。
在该实施例中,除了包括上文参考图6描述的获取模块610和确定模块620之外,例如还可以包括第一确定单元710、第二确定单元720和转换单元730。为了描述的简洁起见,这里省略对获取模块610和确定模块620的描述。
应该理解,在该实施例中,上文参考图6描述的转换模块630可以包括如图7所示的第一确定单元710、第二确定单元720和转换单元730。
具体地,第一确定单元710例如可以用于确定关键文件中包含的所有方法的代码。
第二确定单元720例如可以用于针对所有方法中的每个方法,确定该方法是否满足代码转换条件。
转换单元730例如可以用于将所有方法中满足代码转换条件的方法对应的代码转换为对应的本地代码。
通过本发明实施例,可以只对与APK安全性关系密切即满足代码转换条件的方法进行加固保护,从而减少不必要的加固操作。
作为一种可选的实施例,上述第二确定单元例如还可以用于执行以下至少之一。例如,针对每个方法确定该方法是否是被标记过的方法。例如,针对每个方法确定该方法的调用频率是否满足第一预设值。例如,针对每个方法确定该方法的类型是否是指定的方法类型。
作为一种可选的实施例,该保护装置例如还可以包括:第三确定单元。
具体地,该第三确定单元例如可以用于在将所有方法中满足代码转换条件的方法对应的代码转换为本地代码之前,针对满足代码转换条件的方法,确定该方法是否满足代码转换限制条件。
对应地,上述转换单元例如还可以用于将与满足代码转换条件但不满足代码转换限制条件的方法对应的代码转换为对应的本地代码。
通过本发明实施例,在增强APK安全性的基础上,可以避免APK性能受到较大影响。或者可以避免转换后代码数据量过大而影响用户体验。
进一步,作为一种可选的实施例,上述第三确定单元例如还可以用于执行以下至少之一。例如,针对满足代码转换条件的方法确定将该方法对应的代码转换为对应的本地代码后对待保护的APK的性能的影响程度是否满足预设条件。例如,针对满足代码转换条件的方法确定经转换该方法对应的代码得到的本地代码的数据量是否满足第二预设值。
图8示意性地示出了根据本发明另一实施例的转换模块的框图。
在该实施例中,除了包括上文参考图6描述的获取模块610和确定模块620之外,例如还可以包括第一转换单元810和第二转换单元820。为了描述的简洁起见,这里省略对获取模块610和确定模块620的描述。
应该理解,在该实施例中,上文参考图6描述的转换模块630可以包括如图8所示的第一转换单元810和第二转换单元820。
具体地,第一转换单元810例如可以用于将关键文件的代码转换为中间状态的代码。
第二转换单元820例如可以用于将中间状态的代码转换为指定处理器可运行的本地代码。
通过本发明实施例,既能增强APK的安全强度,同时也可以使整体架构保持良好的兼容性。
图9示意性地示出了根据本发明实施例的第一转换单元的框图。
在该实施例中,除了包括上文参考图6描述的获取模块610和确定模块620,以及参考图8描述的第二转换单元820之外,例如还可以包括第一转换子单元910和第二转换子单元920。为了描述的简洁起见,这里省略对获取模块610和确定模块620的描述。
应该理解,在该实施例中,上文参考图8描述的第一转换单元810可以包括如图9所示的第一转换子单元910和第二转换子单元920。
具体地,第一转换子单元910例如可以用于将关键文件的代码转换为中端语言状态的代码,其中,中端语言状态的代码对应的语言级别高于中间状态的代码对应的语言级别;以及
第二转换子单元920例如可以用于将中端语言状态的代码转换为中间状态的代码。
通过本发明实施例,在保障APK安全强度足够的前提下,还可以使APK兼容多个不同的架构平台。并且,先做中端语言状态转换,再做中间状态转换,可以便于工程后期维护。
作为一种可选的实施例,上述关键文件包括例如可以dex文件或者jar文件。
示例性介质
在介绍了本发明示例性实施方式的装置之后,接下来,参考图10对本发明示例性实施方式的、用于存储有计算机可执行指令,该指令在被处理单元执行时用于实现图2至图5中的应用于APK的保护方法的介质进行描述。
在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算设备上运行时,所述程序代码用于使所述计算设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的应用于APK的保护方法中的操作,例如,所述计算设备可以执行如图2中所示的操作S210,获取待保护的APK。在操作S220,确定待保护的APK中包含的关键文件,其中,关键文件包括用于实现待保护的APK的功能和逻辑中至少一个的文件。在操作S230,将关键文件的代码转换为对应的本地代码,以保护待保护的APK。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
图10示意性地示出了根据本发明实施方式的应用于APK的保护方法的程序产品示意图。
如图10所示,描述了根据本发明的实施方式的应用于APK的保护方法的程序产品40,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在计算设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆,RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言——诸如Java,C++等,还包括常规的过程式程序设计语言——诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
示例性计算设备
在介绍了本发明示例性实施方式的方法、介质和装置之后,接下来,参考图11对本发明示例性实施方式的计算设备进行描述,该计算设备包括处理单元和存储单元,存储单元存储有计算机可执行指令,上述指令在被上述处理单元执行时用于实现图2至图5中的应用于APK的保护方法进行描述。
本发明实施例还提供了一种计算设备。所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在一些可能的实施方式中,根据本发明的计算设备可以至少包括至少一个处理单元、以及至少一个存储单元。其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的应用于APK的保护方法中的操作。例如,所述处理单元可以执行如图2中所示的操作S210,获取待保护的APK。在操作S220,确定待保护的APK中包含的关键文件,其中,关键文件包括用于实现待保护的APK的功能和逻辑中至少一个的文件。在操作S230,将关键文件的代码转换为对应的本地代码,以保护待保护的APK。
图11示意性地示出了根据本发明实施例的应用于APK的保护方法的计算设备的框图。
下面参照图11来描述根据本发明的这种实施方式的应用于APK的保护方法的计算设备50。如图5所示的计算设备50仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,计算设备50以通用计算设备的形式表现。计算设备50的组件可以包括但不限于:上述至少一个处理单元501、上述至少一个存储单元502、连接不同系统组件(包括存储单元502和处理单元501)的总线503。
总线503表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储单元502可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)5021和/或高速缓存存储器5022,还可以进一步包括只读存储器(ROM)5023。
存储单元502还可以包括具有一组(至少一个)程序模块5024的程序/实用工具5025,这样的程序模块5024包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
计算设备50也可以与一个或多个外部设备504(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与计算设备50交互的设备通信,和/或与使得计算设备50能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/0)接口505进行。并且,计算设备50还可以通过网络适配器506与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器506通过总线503与计算设备50的其它模块通信。应当明白,尽管图中未示出,可以结合计算设备50使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
应当注意,尽管在上文详细描述中提及了装置的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (14)
1.一种应用于安卓安装包APK的保护方法,包括:
获取待保护的APK;
确定所述待保护的APK中包含的关键文件,其中,所述关键文件包括用于实现所述待保护的APK的功能和逻辑中至少一个的文件;以及
将所述关键文件的代码转换为对应的本地代码,以保护所述待保护的APK;
其中,
所述将所述关键文件的代码转换为对应的本地代码,包括:
将所述关键文件的代码转换为中间状态的代码;以及
将所述中间状态的代码转换为指定处理器可运行的本地代码;
其中,
所述将所述关键文件的代码转换为中间状态的代码包括:
将所述关键文件的代码转换为中端语言状态的代码,其中,所述中端语言状态的代码对应的语言级别高于所述中间状态的代码对应的语言级别;以及
将所述中端语言状态的代码转换为所述中间状态的代码;
其中,
所述将所述关键文件的代码转换为中端语言状态的代码包括:
通过对dex文件进行解析并对其指令进行处理,形成块状态,然后将块状态转化为一种自定义的中端语言状态。
2.根据权利要求1所述的方法,其中,所述将所述关键文件的代码转换为对应的本地代码,包括:
确定所述关键文件中包含的所有方法的代码;
针对所述所有方法中的每个方法,确定所述方法是否满足代码转换条件;以及
将所述所有方法中满足所述代码转换条件的方法对应的代码转换为对应的本地代码。
3.根据权利要求2所述的方法,其中,所述针对所述所有方法中的每个方法,确定所述方法是否满足代码转换条件,包括以下至少之一:
针对所述每个方法,确定所述方法是否是被标记过的方法;
针对所述每个方法,确定所述方法的调用频率是否满足第一预设值;以及
针对所述每个方法,确定所述方法的类型是否是指定的方法类型。
4.根据权利要求2所述的方法,其中,在将所述所有方法中满足所述代码转换条件的方法对应的代码转换为本地代码之前,所述方法还包括:
针对满足所述代码转换条件的方法,确定所述方法是否满足代码转换限制条件;以及
将与满足所述代码转换条件但不满足所述代码转换限制条件的方法对应的代码转换为对应的本地代码。
5.根据权利要求4所述的方法,其中,所述针对满足所述代码转换条件的方法,确定所述方法是否满足代码转换限制条件,包括以下至少之一:
针对满足所述代码转换条件的方法,确定将所述方法对应的代码转换为对应的本地代码后对所述待保护的APK的性能的影响程度是否满足预设条件;以及
针对满足所述代码转换条件的方法,确定经转换所述方法对应的代码得到的本地代码的数据量是否满足第二预设值。
6.根据权利要求1所述的方法,其中,所述关键文件包括:dex文件或者jar文件。
7.一种应用于安卓安装包APK的保护装置,包括:
获取模块,用于获取待保护的APK;
确定模块,用于确定所述待保护的APK中包含的关键文件,其中,所述关键文件包括用于实现所述待保护的APK的功能和逻辑中至少一个的文件;以及
转换模块,用于将所述关键文件的代码转换为对应的本地代码,以保护所述待保护的APK;
其中,所述转换模块包括:
第一转换单元,用于将所述关键文件的代码转换为中间状态的代码;以及
第二转换单元,用于将所述中间状态的代码转换为指定处理器可运行的本地代码;
其中,所述第一转换单元包括:
第一转换子单元,用于将所述关键文件的代码转换为中端语言状态的代码,其中,所述中端语言状态的代码对应的语言级别高于所述中间状态的代码对应的语言级别;以及
第二转换子单元,用于将所述中端语言状态的代码转换为所述中间状态的代码;
其中,所述将所述关键文件的代码转换为中端语言状态的代码包括:
通过对dex文件进行解析并对其指令进行处理,形成块状态,然后将块状态转化为一种自定义的中端语言状态。
8.根据权利要求7所述的装置,其中,所述转换模块包括:
第一确定单元,用于确定所述关键文件中包含的所有方法的代码;
第二确定单元,用于针对所述所有方法中的每个方法,确定所述方法是否满足代码转换条件;以及
转换单元,用于将所述所有方法中满足所述代码转换条件的方法对应的代码转换为对应的本地代码。
9.根据权利要求8所述的装置,其中,所述第二确定单元还用于执行以下至少之一:
针对所述每个方法,确定所述方法是否是被标记过的方法;
针对所述每个方法,确定所述方法的调用频率是否满足第一预设值;以及
针对所述每个方法,确定所述方法的类型是否是指定的方法类型。
10.根据权利要求8所述的装置,其中:
所述装置还包括:第三确定单元,用于在将所述所有方法中满足所述代码转换条件的方法对应的代码转换为本地代码之前,针对满足所述代码转换条件的方法,确定所述方法是否满足代码转换限制条件;以及
所述转换单元,还用于将与满足所述代码转换条件但不满足所述代码转换限制条件的方法对应的代码转换为对应的本地代码。
11.根据权利要求10所述的装置,其中,所述第三确定单元,还用于执行以下至少之一:
针对满足所述代码转换条件的方法,确定将所述方法对应的代码转换为对应的本地代码后对所述待保护的APK的性能的影响程度是否满足预设条件;以及
针对满足所述代码转换条件的方法,确定经转换所述方法对应的代码得到的本地代码的数据量是否满足第二预设值。
12.根据权利要求7所述的装置,其中,所述关键文件包括:dex文件或者jar文件。
13.一种计算机可读存储 介质,存储有计算机可执行指令,所述指令在被处理单元执行时用于实现权利要求1至6中任一项所述的应用于APK的保护方法。
14.一种计算设备,包括:
处理单元;以及
存储单元,存储有计算机可执行指令,所述指令在被所述处理单元执行时用于实现权利要求1至6中任一项所述的应用于APK的保护方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910624250.5A CN110348206B (zh) | 2019-07-11 | 2019-07-11 | 应用于安卓安装包apk的保护方法、介质、装置和计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910624250.5A CN110348206B (zh) | 2019-07-11 | 2019-07-11 | 应用于安卓安装包apk的保护方法、介质、装置和计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110348206A CN110348206A (zh) | 2019-10-18 |
CN110348206B true CN110348206B (zh) | 2021-09-17 |
Family
ID=68174981
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910624250.5A Active CN110348206B (zh) | 2019-07-11 | 2019-07-11 | 应用于安卓安装包apk的保护方法、介质、装置和计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110348206B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112287306B (zh) * | 2020-10-29 | 2024-04-26 | 中国银联股份有限公司 | 一种应用程序安装包的保护方法、装置及计算机可读存储介质 |
CN113805894B (zh) * | 2021-09-17 | 2023-08-18 | 杭州云深科技有限公司 | 一种异常apk的识别方法、电子设备及可读存储介质 |
CN113805892B (zh) * | 2021-09-17 | 2024-04-05 | 杭州云深科技有限公司 | 一种异常apk的识别方法、电子设备及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106933610A (zh) * | 2015-12-30 | 2017-07-07 | 北京金山安全软件有限公司 | 一种应用程序安装包生成方法、装置及电子设备 |
CN109784010A (zh) * | 2018-12-18 | 2019-05-21 | 武汉极意网络科技有限公司 | 一种基于llvm的程序控制流混淆方法及装置 |
CN109977671A (zh) * | 2019-03-14 | 2019-07-05 | 西安电子科技大学 | 一种基于编译器修改的Android锁屏型勒索软件检测方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150132461A (ko) * | 2013-03-15 | 2015-11-25 | 푸후 홀딩스, 인코포레이티드. | 태블릿 컴퓨터 |
US10324693B2 (en) * | 2015-11-24 | 2019-06-18 | Nvidia Corporation | Optimizing multiple invocations of graphics processing unit programs in Java |
CN106355049B (zh) * | 2016-08-19 | 2020-02-11 | 北京奇虎科技有限公司 | 一种加固安卓安装包的动态链接库so文件的方法和装置 |
CN107480476B (zh) * | 2017-06-15 | 2020-05-19 | 西北大学 | 一种基于ELF感染的Android本地层指令编译虚拟化加壳方法 |
CN108681457B (zh) * | 2018-05-11 | 2020-09-01 | 西北大学 | 基于代码下沉与残码解释的Android应用程序保护方法 |
CN108846282A (zh) * | 2018-06-04 | 2018-11-20 | 西安电子科技大学 | 基于静态污点分析的安卓应用程序权限泄露漏洞检测方法 |
-
2019
- 2019-07-11 CN CN201910624250.5A patent/CN110348206B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106933610A (zh) * | 2015-12-30 | 2017-07-07 | 北京金山安全软件有限公司 | 一种应用程序安装包生成方法、装置及电子设备 |
CN109784010A (zh) * | 2018-12-18 | 2019-05-21 | 武汉极意网络科技有限公司 | 一种基于llvm的程序控制流混淆方法及装置 |
CN109977671A (zh) * | 2019-03-14 | 2019-07-05 | 西安电子科技大学 | 一种基于编译器修改的Android锁屏型勒索软件检测方法 |
Non-Patent Citations (2)
Title |
---|
Turning Regular Code Into Atrocities With LLVM;Adrien Merlini;《网页在线公开:https://blog.quarkslab.com/turning-regular-code-into-atrocities-with-llvm.html》;20150202;第1-19页 * |
基于逆向工程的Androd应用漏洞检测技术研究;许庆富等;《西南民族大学学报(自然科学版)》;20190110;第44卷(第5期);第512-520页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110348206A (zh) | 2019-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102592082B (zh) | 通过操作码随机化的安全 | |
CN110348206B (zh) | 应用于安卓安装包apk的保护方法、介质、装置和计算设备 | |
US8090959B2 (en) | Method and apparatus for protecting .net programs | |
WO2017107706A1 (zh) | 基于arm指令虚拟化的elf文件保护方法及系统 | |
Lu et al. | AutoD: Intelligent blockchain application unpacking based on JNI layer deception call | |
CN110059456B (zh) | 代码保护方法、代码保护装置、存储介质与电子设备 | |
US8650537B2 (en) | Optimizing an object-oriented program by transforming invocations of synthetic accessor methods | |
KR20180018531A (ko) | 인터프리터 가상 머신을 이용한 행동 멀웨어 탐지 | |
CN113761482A (zh) | 一种程序代码保护方法和装置 | |
CN112163195B (zh) | 一种基于堆栈隐藏的虚拟机软件保护方法 | |
Heule et al. | IFC inside: Retrofitting languages with dynamic information flow control | |
US9197446B2 (en) | Address pinning | |
US11188364B1 (en) | Compilation strategy for a sharable application snapshot | |
Lu et al. | Research on intelligent detection of command level stack pollution for binary program analysis | |
US20130227556A1 (en) | Guest-driven host execution | |
US20230297348A1 (en) | Method for operating second system application on first system, terminal device and storage medium | |
CN107577925B (zh) | 基于双重ARM指令虚拟的Android应用程序保护方法 | |
US20120331489A1 (en) | Bypassing user mode redirection | |
CN111488169A (zh) | 应用程序热更新的方法及装置、存储介质及电子设备 | |
US20070283113A1 (en) | Safe Buffer | |
CN110597496B (zh) | 应用程序的字节码文件获取方法及装置 | |
WO2008157090A2 (en) | Unmanaged memory accessor | |
Bilge et al. | Thwarting real-time dynamic unpacking | |
CN113721928B (zh) | 一种基于二进制分析的动态库裁剪方法 | |
US11520866B2 (en) | Controlling processor instruction execution |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210930 Address after: 310052 Room 408, building 3, No. 399, Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province Patentee after: Hangzhou Netease Zhiqi Technology Co.,Ltd. Address before: 310052 Building No. 599, Changhe Street Network Business Road, Binjiang District, Hangzhou City, Zhejiang Province, 4, 7 stories Patentee before: NETEASE (HANGZHOU) NETWORK Co.,Ltd. |