CN107766096A - 应用程序安装包的生成方法、应用程序的运行方法及装置 - Google Patents
应用程序安装包的生成方法、应用程序的运行方法及装置 Download PDFInfo
- Publication number
- CN107766096A CN107766096A CN201610693824.0A CN201610693824A CN107766096A CN 107766096 A CN107766096 A CN 107766096A CN 201610693824 A CN201610693824 A CN 201610693824A CN 107766096 A CN107766096 A CN 107766096A
- Authority
- CN
- China
- Prior art keywords
- code
- dynamic link
- file
- application program
- link library
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 80
- 238000009434 installation Methods 0.000 claims abstract description 108
- 230000015654 memory Effects 0.000 claims description 63
- 230000004044 response Effects 0.000 claims description 14
- 238000005516 engineering process Methods 0.000 claims description 10
- 230000009467 reduction Effects 0.000 claims description 9
- 230000005055 memory storage Effects 0.000 claims description 8
- 230000006870 function Effects 0.000 description 23
- 238000003860 storage Methods 0.000 description 20
- 230000008569 process Effects 0.000 description 16
- 238000012545 processing Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 101100084030 Mus musculus Alpl gene Proteins 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 238000005336 cracking Methods 0.000 description 3
- 230000006837 decompression Effects 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000010438 heat treatment Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- FGUUSXIOTUKUDN-IBGZPJMESA-N C1(=CC=CC=C1)N1C2=C(NC([C@H](C1)NC=1OC(=NN=1)C1=CC=CC=C1)=O)C=CC=C2 Chemical compound C1(=CC=CC=C1)N1C2=C(NC([C@H](C1)NC=1OC(=NN=1)C1=CC=CC=C1)=O)C=CC=C2 FGUUSXIOTUKUDN-IBGZPJMESA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- 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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种应用程序安装包的生成方法,用以解决应用程序安装包可能会被反编译的方式破解,而造成应用程序操作代码泄露的问题。方法包括:从应用程序第一安装包中确定待保护的第一代码,并根据确定出的第一代码,生成包含第一代码的动态链接库文件;生成用于调用动态链接库文件的第二代码;根据第二代码以及生成的动态链接库文件,生成包含所述第二代码以及所述动态链接库文件的应用程序第二安装包。本申请还公开了一种应用程序安装包的生成装置。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种应用程序安装包的生成方法、应用程序的运行方法及装置。
背景技术
随着互联网信息技术的不断发展,越来越多具有不同功能且可以应用于智能终端设备上的应用程序被开发出来,极大的丰富了人们的日常生活。这里所说的应用程序,比如,可以是计算机上的应用程序,也可以是移动终端上的应用(Application,APP)。
然而,随着终端应用市场的飞速发展,应用程序被山寨、被破解的问题也变得越来越严重。对于一些优秀的应用,由于缺少对源代码的保护机制,很容易就可以通过反编译的方式破解,造成应用程序代码的泄露,这就会给应用程序的开发者带来很大损失。
其中,反编译,一般是指将应用程序的指定可执行文件中包含的操作代码(OperateCode,opcode)转化为应用程序的高级语言源代码。就反编译的具体实现方式而言,其通常采用的是转移内存数据(dump内存)的方式:在应用程序运行时,从内存中,dump出应用程序的指定可执行文件中的被加载到内存的操作代码,进而将所述操作代码转化为该应用程序的高级语言源代码。以安卓应用为例,这里所说的指定可执行文件一般是classes.dex文件。
如何保护应用程序的操作代码不会被反编译的方式破解,成为亟待解决的问题。
发明内容
本申请实施例提供一种应用程序安装包的生成方法,用以解决应用程序安装包可能会被反编译的方式破解,而造成应用程序操作代码泄露的问题。
本申请实施例还提供一种应用程序安装包的生成装置,用以解决应用程序安装包可能会被反编译的方式破解,而造成应用程序操作代码泄露的问题。
本申请实施例提供一种应用程序的运行方法。
本申请实施例提供一种应用程序的运行装置。
本申请实施例采用下述技术方案:
一种应用程序安装包的生成方法,包括:
从应用程序第一安装包中确定出待保护的第一代码,并根据确定出的所述第一代码,生成包含所述第一代码的动态链接库文件;
生成用于调用所述生成的动态链接库文件的第二代码;
根据所述第二代码以及所述生成的动态链接库文件,生成包含所述第二代码以及所述动态链接库文件的应用程序第二安装包。
一种应用程序安装包的生成装置,包括:
动态链接库文件生成单元,用于从应用程序第一安装包中确定出待保护的第一代码,并根据分离出的所述第一代码,生成包含所述第一代码的动态链接库文件;
第二代码生成单元,用于生成用于调用所述生成的动态链接库文件的第二代码;
应用程序安装包生成单元,用于根据所述第二代码以及所述生成的动态链接库文件,生成包含所述第二代码以及所述动态链接库文件的应用程序第二安装包。
一种应用程序的运行方法,包括:
接收针对应用程序第二安装包的加载指令;所述应用程序第二安装包中包含用于调用动态链接库文件的第二代码,所述动态链接库文件,是根据所述应用程序第一安装包中待保护的第一代码生成的;
响应于所述加载指令,加载所述第二代码,以使得通过运行所述第二代码,调用所述动态链接库文件到内存中;
运行被调用到所述内存中的所述动态链接库文件。
一种应用程序的运行装置,包括:
加载指令接收单元,用于接收针对应用程序第二安装包的加载指令;所述应用程序第二安装包中包含用于调用动态链接库文件的第二代码,所述动态链接库文件,是根据所述应用程序第一安装包中待保护的第一代码生成的;
代码加载单元,用于响应于所述加载指令,加载所述第二代码,以使得通过运行所述第二代码,调用所述动态链接库文件到内存中;
运行单元,用于运行被调用到所述内存中的所述动态链接库文件。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
一方面,由于根据所述第二代码以及所述生成的动态链接库文件,生成包含所述第二代码以及所述动态链接库文件的应用程序第二安装包后,第一代码存在于应用程序第二安装包的动态链接库中,因此采用反编译的方式从生成的应用程序第二安装包中无法获得第一代码,从而避免了应用程序操作代码泄露;另一方面,由于第一代码原有的功能,后续可以由第二代码调用包含所述第一代码的动态链接库文件来实现,因此保证了生成的应用程序第二安装包仍然可以实现所述第一代码的功能。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的一种应用程序安装包的生成方法的具体实现流程示意图;
图2为本申请实施例提供的一种应用程序安装包的生成方法的具体实现流程示意图;
图3为本申请实施例提供的一种应用程序运行方法的具体实现流程示意图;
图4为本申请实施例提供的一种应用程序安装包的生成方法以及运行应用程序安装包的具体流程示意图;
图5为本申请实施例提供的一种应用程序安装包的生成装置的具体结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
实施例1
本申请实施例提供了一种应用程序安装包的生成方法,用以解决应用程序安装包可能会被反编译的方式破解,而造成应用程序操作代码泄露的问题。
本申请实施例提供的应用程序安装包的生成方法,该方法的执行主体,可以但不限于为手机、平板电脑、个人电脑(Personal Computer,PC)、智能电视以及任何可以运行应用程序的终端设备中的至少一种。此外,该方法的执行主体,也可以是服务器,例如,用于对应用程序安装包进行生成处理的服务器(可以称为应用程序安装包生成服务器),等。
为便于描述,下文以该方法的执行主体为应用程序安装包生成网站服务器为例,对该方法的实施方式进行介绍。可以理解,该方法的执行主体为应用程序生成网站服务器只是一种示例性的说明,并不应理解为对该方法的限定。
该方法的具体实现流程图如图1所示,主要包括下述步骤:
步骤11,从应用程序第一安装包中确定待保护的第一代码,并根据确定出的所述第一代码,生成包含所述第一代码的动态链接库文件;
所述应用程序的安装包(Install Package)中包括该应用程序的安装文件,运行所述安装包,可将该应用程序的安装文件保存到智能终端的存储设备(如,硬盘)上。
所述第一代码可以是指应用程序安装包中的操作代码(OperateCode,opcode)。以使用安卓(Android)操作系统的智能手机为例,所述第一代码可以为安卓安装包(AndroidPackage,APK)中的可执行文件“classes.dex文件”中的opcode。而采用反编译等应用程序安装包破解方法,就是期望获取到应用程序的opcode,进而将获取到的opcode转化为应用程序的高级语言源代码。
需要说明的是,所述应用程序的操作代码一般保存在应用程序安装包的指定文件中,以运行在安卓操作系统的安卓应用程序为例,安卓应用程序的操作代码一般保存在安卓安装包的可执行文件classes.dex文件中,则一般可以从应用程序安装包的指定文件(后文称为第一文件)中确定出待保护的第一代码。
从应用程序安装包的第一文件中确定出待保护的第一代码,具体可以包括:对所述应用程序第一安装包进行解压,获得所述应用程序第一安装包中的第一文件以及第二文件;从所述第二文件中确定所述应用程序待保护的类的名称;根据确定出的所述待保护的类的名称,从所述第一文件中确定与所述待保护的类的名称对应的代码,作为待保护的第一代码。其中,所述第二文件中保存有所述应用程序能够实现的类的名称。
步骤12,生成用于调用所述生成的动态链接库文件的第二代码;
在一种实施方式中,步骤12的具体实现方式可以为:在所述应用程序第一安装包中生成用于调用所述动态链接库文件的第二代码。
具体地,可以在所述应用程序第一安装包中通过加载重新编写(getMethodRewriter)函数,对所述应用程序第一安装包中的第一文件进行重新创建,在重新创建的过程中,可以在第一文件中生成用于调用所述动态链接库文件的第二代码,从而使得重新创建的第一文件中包含第二代码。
后续,可以通过运行所述重新创建的第一文件,来实现所述应用程序的、与所述第一文件中包含的第一代码对应的功能。具体而言,可以通过运行所述第一文件中包含的第二代码,实现调用所述动态链接库文件并运行。由于运行所述动态链接库文件,包含运行所述动态链接库文件中的第一代码,从而达到了实现第一代码对应的功能的目的。
步骤13,根据所述第二代码以及所述生成的动态链接库文件生成包含所述第二代码以及所述动态链接库文件的应用程序第二安装包。
该应用程序第二安装包,即为供用户使用的应用程序安装包。后续,可以发布应用程序第二安装包,使得用户可以根据需求下载并使用该应用程序第二安装包。具体而言,可以将应用程序第二安装包,发布到应用程序下载平台(如应用程序商城中),供用户下载使用。
通过上述执行步骤13,可以达到将所述应用程序安装包中待保护的第一代码替换为所述动态链接库文件。
需要说明的是,目前,反编译的具体实现方式,通常采用的是转移内存数据(dump内存)的方式。具体而言,由于在运行应用程序时,该应用程序的指定可执行文件(也即所述第一文件)中包括的操作代码会被加载到内存中,那么,基于该特点,反编译的具体实现方式包括:根据操作系统为运行所述中指定可执行文件分配的进程的进程号,在内存中查找与该进程号对应的存储区域;由于所述确定出的存储区域中保存的内存数据,为所述指定可执行文件中包括的操作代码,因此,将所述确定出的存储区域中保存的内存数据进行dump(比如dump到其他文件中),就可以获得所述指定可执行文件中包含的操作代码,后续,可以进一步地将所述操作代码转化为该应用程序的高级语言源代码。
而通过本申请实施例提供的上述方法可知,由于采用本申请实施例提供的方案,可以实现将待保护的第一代码替换为所述动态链接库文件,使得所述指定可执行文件中不再存在第一代码(可以相当于所述指定可执行文件中的第一代码无效),从而后续即便所述指定可执行文件中的操作代码被加载到内存中,相应的内存数据也不会包含第一代码。
此外,将应用程序第一安装包,生成为包含第二代码以及动态链接库文件的应用程序第二安装包后,原有的应用程序第一安装包中的第一代码的功能,是通过运行动态链接库文件实现的。由于操作系统为应用程序中的不同文件所分配的进程是不同的,即操作系统为所述指定可执行文件分配的进程的进程号与操作系统为所述动态链接库文件分配的进程的进程号是不同的,因此根据所述指定可执行文件的进程号确定的内存存储区域与动态链接库文件对应的内存存储区域不同,从而,在这样的情况下采用反编译的方式,将无法从所述指定可执行文件对应的内存存储区域中dump得到所述待保护的第一代码。
综上可知,采用本申请实施例提供的方案,可以避免通过反编译的方式,从所述应用程序安装包的所述指定可执行文件中获得待保护的第一代码,从而造成应用程序操作代码泄露的问题。
为了达到将应用程序安装包中待保护的第一代码替换成包含所述第一代码的动态链接库文件的目的,在一种实施方式中,步骤13的具体实现方式可以包括:根据所述第二代码以及所述生成的动态链接库文件,按照使得所述第二代码以及生成的动态链接库文件替换所述应用程序第一安装包中第一代码的方式,生成包含所述第二代码以及所述动态链接库文件的应用程序第二安装包。
具体而言,比如,在生成过程中,可以将待保护的第一代码从应用程序第一安装包中的所述第一文件中分离出来,以使得生成的第二应用程序安装包的所述第一文件中不包含第一代码。本申请实施例中,将待保护的第一代码从应用程序第一安装包中的所述第一文件中分离出来的时机,可以是在所述应用程序第一安装包中通过加载重新编写(getMethodRewriter)函数,对所述应用程序第一安装包中的第一文件进行重新创建的过程中。在该过程中,通过对getMethodRewriter函数的设置,可以使重新编写的第一文件中不再包含第一代码。
需要说明的是,本申请实施例中,为了保证使用所述动态链接库文件替换所述应用程序第一安装包中待保护的第一代码后,不影响该应用程序的运行,在一种实施方式中,生成的动态链接库文件一般满足:成功运行所述动态链接库文件得到的运行结果,与成功运行所述第一代码得到的运行结果相同。
当通过执行步骤11,生成加密后的动态链接库文件时,步骤13的具体实现方式可以包括:根据所述第二代码以及加密后的动态链接库文件生成包含所述第二代码以及所述加密后的动态链接库文件的应用程序第二安装包。
一般地,应用程序安装包中的第二文件可包括但不仅限于以下两种类型的文件:
类型1:所述第二文件为预设的配置文件;
当所述第二文件为预设的配置文件时,从所述第二文件中确定出所述待保护的类的名称,具体可以包括:将所述预设的配置文件中的类的名称确定为所述待保护的类的名称。
其中,所述预设的配置文件为根据应用程序开发人员预先设定的类,而生成的包含所述预先设定的类的名称的文件。
本申请实施例中,为了使得应用程序开发人员可以根据对于代码的保护需求,灵活设置期望保护的代码,在一种实施方式中,可以根据期望保护的代码(即待保护的第一代码)对应的类(也称期望保护的类)的名称,生成包含所述期望保护的类的名称的预设的配置文件。
为便于描述,后文将期望保护的代码对应的类,称为待保护的类。
本申请实施例中,基于保存有期望保护的类的名称的预设的配置文件,后续可以从预设的配置文件中确定出类的名称,作为待保护的类的名称。
类型2:所述第二文件为全局描述文件——Manifest.xml;
当所述第二文件为全局描述Manifest.xml文件时,从所述第二文件中确定出所述待保护的类的名称,具体可以包括:将所述全局描述Manifest.xml文件中的组件类的名称确定为所述待保护的类的名称。
以待保护的应用程序安装包为安卓安装包(AndroidPackage,APK)为例,该应用程序能够实现的类的名称,往往保存在APK的AndroidManifest.xml文件中,而AndroidManifest.xml文件中包括的:活动(Activity)组件、服务(Service)组件、广播接收机(BroadcastReceiver)组件以及内容提供商(Content provider)组件,与该应用程序功能的实现密切相关。考虑到组件类与应用程序功能的实现密切相关,因而AndroidManifest.xml文件中的组件类一般为应用程序开发人员期望重点保护的类,从而在本申请实施例中,可以将AndroidManifest.xml文件中的组件类默认作为待保护的类,而待保护的类对应的代码(也即待保护的类的名称对应的代码),即为待保护的第一代码。
假设,以待保护的应用程序安装包为安卓安装包(AndroidPackage,APK)为例,该应用程序待保护的第一代码往往保存在APK的classes.dex文件中,而该应用程序能够实现的类的名称往往保存在APK的AndroidManifest.xml文件中,则在一种实施方式中,从应用程序的APK的第一文件中分离出待保护的第一代码,具体可以包括:通过对所述应用程序APK的解压,获得所述APK中的AndroidManifest.xml文件以及classes.dex文件;从所述AndroidManifest.xml文件中确定出所述的应用程序待保护的类的名称;在所述classes.dex文件中通过加载重新编写(getMethodRewriter)函数,对所述classes.dex文件进行重新创建,在重新创建的过程中,不再将所述classes.dex文件中包含的、与待保护的类的名称对应的代码再放入重新创建的classes.dex文件中,而是存放到其他位置备用。根据存放到其他位置备用的第一代码,可以生成包含所述第一代码的动态链接库文件。
在一种实施方式中,根据第一代码生成动态链接库文件的具体实现方式,具体可以包括:将所述第一代码保存为CPP格式的文件;根据所述CPP格式的文件与用于将所述CPP格式的文件加载到内存中的加载器,生成包含所述CPP格式的文件和所述加载器的动态链接库文件。
其中,所述CPP格式的文件,即C++(C Plus Plus)格式的文件。所述加载器用于将所述CPP格式的文件加载到内存中,并运行所述CPP格式的文件。所述动态链接库文件为一种二进制程序文件,允许程序共享执行特殊任务所需要的操作代码以及其他资源。针对动态链接库中的操作代码(如前文所述的第一代码)的加载和运行方式而言,当操作系统需要运行某个类所对应的操作代码时,可以从动态链接库文件中调用本次需要运行的该类对应的操作代码,并将本次需要运行的该类对应的操作代码加载到内存中。类似地,当操作系统需要运行其他类所对应的操作代码时,可以从动态链接库文件中调用所述其他类对应的操作代码,并将本次需要运行的所述其他类对应的操作代码加载到内存中。
仍以待保护的应用程序安装包为安卓安装包为例,则根据确定出的第一代码生成动态链接库文件可以为SO库文件。
需要说明的是,目前逆向分析(又称逆向工程)也是一种常见的应用程序破解方式。所述逆向工程是根据已经存在的产品,反向推出产品设计数据(如,应用程序的高级语言源代码)的过程。以通过逆向分析破解应用程序安装包为例,可以根据该应用程序的功能,反向推出该功能是通过应用程序安装包中的什么文件实现的,并确定这个文件中包含哪些代码,分析这个文件中所包含的代码对应的功能,进而一步步的推导出应用程序安装包中用于实现该功能的操作代码。
假设将应用程序安装包中第一文件中的操作代码被替换成了动态链接库文件,并在所述第一文件中生成用于调用动态链接库文件的第二代码,则采用逆向分析的方式,可能会实现根据所述第一文件中的所述第二代码,分析出所述第一文件中被分离出的第一代码保存在动态链接库文件中,进而可以从动态链接库文件中获得所述第一代码。
为了避免上述问题,在一种实施方式中,可以对生成的动态链接库文件进行加密处理。所述加密处理不影响终端操作系统通过加载第二代码对加密后的动态链接库文件的调用。在这种情况下,采用逆向分析的方式,从动态链接库文件中获得的操作代码为加密后的操作代码,加密后的操作代码一般为乱码,从而避免了应用程序中操作代码的泄露。
具体的,本申请实施例可以通过下述两种方式对动态链接库文件进行的加密处理,具体可以包括:
方式a:采用加壳技术,对所述动态链接库文件进行处理;
其中,所述加壳技术的原理,是指利用特殊的算法,对待加壳的文件里的数据进行压缩,且压缩后该文件的解压过程完全隐蔽,都在内存中完成。采用加壳技术对文件进行处理后,该文件中保存的代码将以加密的形式存在,从而可以比较有效地防止通过逆向分析的方式对文件的破解。
方式b:采用花指令技术,对所述动态链接库文件进行处理;
其中,花指令,一般是指无意义且不影响程序正常运行的代码。花指令技术,则是指通过在文件中保存的代码中增加花指令的方式,防止对文件的破解。
下文以应用程序安装包为Apk1为例,介绍本申请实施例提供的应用程序安装包的生成方法的具体实现方式,该方法的具体实现流程如图2所述,主要包括下述步骤:
步骤a,对Apk1进行解压,获得所述Apk1中的AndroidManifest.xml文件以及classes.dex文件;
步骤b,从所述AndroidManifest.xml文件中获取待保护的类的名称;
需要说明的是,可以默认将所述AndroidManifest.xml文件中的组件类作为待保护的类;或者也可以将所述Akp1中包含的配置文件中的类作为待保护的类;
步骤c,从所述classes.dex文件分离出与待保护的类的名称对应的第一代码,作为待保护的代码;并在所述classes.dex文件中生成用于调用动态链接库的第二代码;
步骤d,将分离出的所述待保护的代码保存为CPP格式文件,并根据所述CPP格式的文件与用于将所述CPP格式的文件加载到内存中的加载器,生成包含所述CPP格式的文件和所述加载器的动态链接库文件(so文件);
步骤e,采用加壳技术或花指令技术,对所述动态链接库文件进处理;
步骤f,根据第二代码以及生成的动态链接库文件,生成包含所述第二代码以及所述动态链接库文件的Apk2,并将所述Apk2作为后续发布的、供用户下载使用的安装包。
下文以执行主体为智能手机为例,介绍一种应用程序的运行方法。
该方法的具体实现流程如图3所示,主要包括下述步骤:
步骤A:接收针对应用程序的安装包的加载指令;所述应用程序安装包中包含用于调用动态链接库文件的第二代码;
用户可以通过在应用程序的操作界面输入指定操作(如点击操作或者滑动操作)以触发针对应用程序的指定文件的加载指令,通过将所述指定文件中的代码加载到内存并运行所述代码,以实现所述应用程序的与该代码对应的功能。
以安卓应用为例,安卓应用能够实现的类所对应的代码一般保存在classes.dex文件中,则用户可以通过在安卓应用的操作界面输入指定操作(如点击操作或者滑动操作)以触发针对安卓应用的classes.dex文件的加载指令。
步骤B:响应于所述加载指令,加载所述第二代码,以使得通过运行所述第二代码,调用所述动态链接库文件到内存中;
响应于所述加载指令,智能终端的操作系统通过加载所述第二文件,并对第二文件中包含的代码进行运行,通过运行所述第二文件中包含的第二代码,可以调用所述动态链接库文件,并将所述动态链接库文件中包含的代码加载到内存中。
步骤C:运行被调用到所述内存中的所述动态链接库文件;
其中,所述动态链接库文件,是根据所述应用程序的安装包中待保护的第一代码生成的。
需要说明的是,当所述动态链接库文件为加密后的动态链接库文件时,步骤C的具体实现方式可以包括:对所述加密后的动态链接库文件进行还原处理,并运行经还原处理后的动态链接库文件。
其中,所述还原处理,可以是指对加密后的动态链接库文件进行的脱壳处理,由于如何对加密文件进行脱壳处理已经是比较成熟的相关技术,因而此处不再赘述。
以下以图4为例,具体介绍对应用程序安装包的生成方法以及运行应用程序安装包过程,如图4所示,用户A为Apk1的开发人员,用户A通过工作机A对Apk1的解压,获得Apk1中的AndroidManifest.xml文件以及classes.dex文件,从所述classes.dex文件获得待保护的第一代码;生成包含所述第一代码的动态链接库文件;并根据动态链接库文件以及所述第二代码,生成包含所述第二代码以及所述动态链接库文件的Akp2,并将生成的Akp2上传至服务器,供用户下载并使用。
用户B作为Akp2的使用用户,用户B通过工作机B从服务器中下载生成的Akp2,并通过工作机B输入针对Akp2的加载指令,工作机B接收针对Akp2的加载指令;响应于所述加载指令,工作机B的操作系统加载所述第二文件,并对第二文件中包含的代码进行运行,工作机B运行所述第二文件中包含的第二代码,可以调用所述动态链接库文件,并将所述动态链接库文件中包含的代码加载到内存中,进而运行被调用到所述内存中的所述动态链接库文件,工作机B通过将所述动态链接库文件中包含的待保护的第一代码加载到内存中,并运行所述加载到内存中的第一代码,以达到运行所述Akp2的目的。
采用实施例1提供的应用程序安装包的生成方法,一方面,由于根据所述第二代码以及所述生成的动态链接库文件,生成包含所述第二代码以及所述动态链接库文件的应用程序第二安装包后,第一代码存在于应用程序第二安装包的动态链接库中,因此采用反编译的方式从生成的应用程序第二安装包中无法获得第一代码,从而避免了应用程序操作代码泄露;另一方面,由于第一代码原有的功能,后续可以由第二代码调用包含所述第一代码的动态链接库文件来实现,因此保证了生成的应用程序第二安装包仍然可以实现所述第一代码的功能。
实施例2
本申请实施例提供了一种应用程序安装包的生成装置,用以解决应用程序安装包可能会被反编译的方式破解,而造成应用程序操作代码泄露的问题。该装置的具体结构示意图如图5所示,包括:动态链接库文件生成单元21、第二代码生成单元22以及应用程序安装包生成单元23。
其中,动态链接库文件生成单元21,用于从应用程序第一安装包中确定待保护的第一代码,并根据确定出的所述第一代码,生成包含所述第一代码的动态链接库文件;
第二代码生成单元22,用于生成用于调用所述生成的动态链接库文件的第二代码;
应用程序安装包生成单元23,用于根据所述第二代码以及所述生成的动态链接库文件,生成包含所述第二代码以及所述动态链接库文件的应用程序第二安装包。
在一种实施方式中,应用程序安装包生成单元23,用于根据所述第二代码以及所述生成的动态链接库文件,按照使得所述第二代码以及生成的动态链接库文件替换所述应用程序第一安装包中第一代码的方式,生成包含所述第二代码以及所述动态链接库文件的应用程序第二安装包。
在一种实施方式中,动态链接库文件生成单元21,用于:将确定出的所述第一代码保存为符合指定的计算机编程语言格式的文件;根据所述符合指定的计算机编程语言格式的文件与加载器,生成包含所述符合指定的计算机编程语言格式的文件和所述加载器的动态链接库文件,其中,所述加载器用于将所述符合指定的计算机编程语言格式的文件加载到内存中。
在一种实施方式中,动态链接库文件生成单元21,用于:对所述应用程序第一安装包进行解压,获得所述应用程序第一安装包中的第一文件以及第三文件;所述第三文件中保存有所述应用程序能够实现的类的名称;从所述第三文件中确定所述待保护的类的名称;根据确定出的所述待保护的类的名称,从所述第一文件中确定与所述待保护的类的名称对应的代码。
在一种实施方式中,动态链接库文件生成单元21,用于:当所述第二文件为全局描述Manifest.xml文件时,将所述全局描述Manifest.xml文件中的所有组件类的名称确定为所述待保护的类的名称;当所述第二文件为预设的配置文件时,将所述预设的配置文件中的所有类的名称确定为所述待保护的类的名称;所述预设的配置文件为根据预先设定的类,生成的包含所述预先设定的类的名称的文件。
在一种实施方式中,第二代码生成单元22,用于:在所述应用程序第一安装包中生成用于调用所述动态链接库文件的第二代码。
在一种实施方式中,应用程序安装包生成单元23,用于:对所述动态链接库文件进行加密处理,得到加密后的动态链接库文件;根据所述第二代码以及加密后的动态链接库文件,生成包含所述第二代码以及所述加密后的动态链接库文件的应用程序第二安装包。
在一种实施方式中,对所述动态链接库文件进行加密处理,包括下述至少一种:采用加壳技术,对所述动态链接库文件进行处理;采用花指令技术,对所述动态链接库文件进行处理。
本申请实施例还提供了一种应用程序的运行装置,用以实现对加密后的应用程序的运行,包括:加载指令接收单元31、代码加载单元32以及运行单元33。
其中,加载指令接收单元31,用于接收针对应用程序第二安装包的加载指令;所述应用程序第二安装包中包含用于调用动态链接库文件的第二代码,所述动态链接库文件,是根据应用程序第一安装包中待保护的第一代码生成的;
代码加载单元32,用于响应于所述加载指令,加载所述第二代码,以使得所述通过运行所述第二代码,调用所述动态链接库文件到内存中;
运行单元33,用于运行被调用到所述内存中的所述动态链接库文件。
在一种实施方式中,运行单元,用于:当所述动态链接库文件为加密后的动态链接库文件时,对所述加密后的动态链接库文件进行还原处理,并运行经还原处理后的动态链接库文件。
采用实施例2提供的应用程序安装包的生成装置,一方面,由于根据所述第二代码以及所述生成的动态链接库文件,生成包含所述第二代码以及所述动态链接库文件的应用程序第二安装包后,第一代码存在于应用程序第二安装包的动态链接库中,因此采用反编译的方式从生成的应用程序第二安装包中无法获得第一代码,从而避免了应用程序操作代码泄露;另一方面,由于第一代码原有的功能,后续可以由第二代码调用包含所述第一代码的动态链接库文件来实现,因此保证了生成的应用程序第二安装包仍然可以实现所述第一代码的功能。
实施例3
为了解决应用程序安装包可能会被反编译的方式破解,而造成应用程序操作代码泄露的问题。本申请实施例提供了一种应用程序安装包的生成装置。所述应用程序安装包的生成装置可以包括处理器以及存储器等。
其中,所述存储器用于存储程序指令;所述处理器,耦合到所述存储器,用于读取所述存储器存储的程序指令,并作为响应,执行如下操作:从应用程序第一安装包中确定待保护的第一代码,并根据确定出的所述第一代码,生成包含所述第一代码的动态链接库文件;生成用于调用所述生成的动态链接库文件的第二代码;根据所述第二代码以及所述生成的动态链接库文件,生成包含所述第二代码以及所述动态链接库文件的应用程序第二安装包。
在一种实施方式中,所述处理器,用于根据所述第二代码以及所述生成的动态链接库文件,按照使得所述第二代码以及生成的动态链接库文件替换所述应用程序第一安装包中第一代码的方式,生成包含所述第二代码以及所述动态链接库文件的应用程序第二安装包。
在一种实施方式中,所述处理器,用于将确定出的所述第一代码保存为符合指定的计算机编程语言格式的文件;根据所述符合指定的计算机编程语言格式的文件与加载器,生成包含所述符合指定的计算机编程语言格式的文件和所述加载器的动态链接库文件,其中,所述加载器用于将所述符合指定的计算机编程语言格式的文件加载到内存中。
在一种实施方式中,所述处理器,用于对所述应用程序第一安装包进行解压,获得所述应用程序第一安装包中的第一文件以及第二文件;所述第二文件中保存有所述应用程序能够实现的类的名称;从所述第二文件中确定所述待保护的类的名称;根据确定出的所述待保护的类的名称,从所述第一文件中确定与所述待保护的类的名称对应的代码,作为待保护的第一代码。
在一种实施方式中,所述处理器,用于当所述第二文件为全局描述文件时,将所述全局描述文件中的组件类的名称确定为所述待保护的类的名称;当所述第二文件为预设的配置文件时,将所述预设的配置文件中的类的名称确定为所述待保护的类的名称;所述预设的配置文件为根据预先设定的类,生成的包含所述预先设定的类的名称的文件。
在一种实施方式中,所述处理器,用于在所述应用程序第一安装包中生成用于调用所述动态链接库文件的第二代码。
在一种实施方式中,所述处理器,用于对所述动态链接库文件进行加密处理,得到加密后的动态链接库文件;根据所述第二代码以及加密后的动态链接库文件,生成包含所述第二代码以及所述加密后的动态链接库文件的应用程序第二安装包。
在一种实施方式中,所述处理器,用于采用加壳技术,对所述动态链接库文件进行处理;采用花指令技术,对所述动态链接库文件进行处理。
本申请还提供了一种应用程序的运行装置,该装置,比如可以是智能手机或平板电脑等。所述应用程序的运行装置可以包括处理器以及存储器等。
其中,所述存储器用于存储程序指令;所述处理器,耦合到所述存储器,用于读取所述存储器存储的程序指令,并作为响应,执行如下操作:接收针对应用程序第二安装包的加载指令;所述应用程序第二安装包中包含用于调用动态链接库文件的第二代码,所述动态链接库文件,是根据应用程序第一安装包中待保护的第一代码生成的;响应于所述加载指令,加载所述第二代码,以使得通过运行所述第二代码,调用所述动态链接库文件到内存中;运行被调用到所述内存中的所述动态链接库文件。
在一种实施方式中,所述处理器,用于当所述动态链接库文件为加密后的动态链接库文件时,对所述加密后的动态链接库文件进行还原处理,并运行经还原处理后的动态链接库文件。
采用本申请实施例提供的应用程序安装包生成方法,一方面,由于根据所述第二代码以及所述生成的动态链接库文件,生成包含所述第二代码以及所述动态链接库文件的应用程序第二安装包后,第一代码存在于应用程序第二安装包的动态链接库中,因此采用反编译的方式从生成的应用程序第二安装包中无法获得第一代码,从而避免了应用程序操作代码泄露;另一方面,由于第一代码原有的功能,后续可以由第二代码调用包含所述第一代码的动态链接库文件来实现,因此保证了生成的应用程序第二安装包仍然可以实现所述第一代码的功能。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (18)
1.一种应用程序安装包的生成方法,其特征在于,包括:
从应用程序第一安装包中确定待保护的第一代码,并根据确定出的所述第一代码,生成包含所述第一代码的动态链接库文件;
生成用于调用所述生成的动态链接库文件的第二代码;
根据所述第二代码以及所述生成的动态链接库文件,生成包含所述第二代码以及所述动态链接库文件的应用程序第二安装包。
2.如权利要求1所述的方法,其特征在于,根据所述第二代码以及所述生成的动态链接库文件,生成包含所述第二代码以及所述动态链接库文件的应用程序第二安装包,包括:
根据所述第二代码以及所述生成的动态链接库文件,按照使得所述第二代码以及生成的动态链接库文件替换所述应用程序第一安装包中第一代码的方式,生成包含所述第二代码以及所述动态链接库文件的应用程序第二安装包。
3.如权利要求1所述的方法,其特征在于,根据确定出的所述第一代码,生成包含所述第一代码的动态链接库文件,包括:
将确定出的所述第一代码保存为符合指定的计算机编程语言格式的文件;
根据所述符合指定的计算机编程语言格式的文件与加载器,生成包含所述符合指定的计算机编程语言格式的文件和所述加载器的动态链接库文件,其中,所述加载器用于将所述符合指定的计算机编程语言格式的文件加载到内存中。
4.如权利要求1所述的方法,其特征在于,从应用程序第一安装包中确定待保护的第一代码,包括:
对所述应用程序第一安装包进行解压,获得所述应用程序第一安装包中的第一文件以及第二文件;所述第二文件中保存有所述应用程序能够实现的类的名称;
从所述第二文件中确定所述待保护的类的名称;
根据确定出的所述待保护的类的名称,从所述第一文件中确定与所述待保护的类的名称对应的代码,作为待保护的第一代码。
5.如权利要求4所述的方法,其特征在于,从所述第二文件中确定出所述待保护的类的名称,包括:
当所述第二文件为全局描述文件时,将所述全局描述文件中的组件类的名称确定为所述待保护的类的名称;
当所述第二文件为预设的配置文件时,将所述预设的配置文件中的类的名称确定为所述待保护的类的名称;所述预设的配置文件为根据预先设定的类,生成的包含所述预先设定的类的名称的文件。
6.如权利要求1所述的方法,其特征在于,生成用于调用所述动态链接库文件的第二代码,包括:
在所述应用程序第一安装包中生成用于调用所述动态链接库文件的第二代码。
7.如权利要求6所述的方法,其特征在于,根据所述第二代码以及所述生成的动态链接库文件,生成包含所述第二代码以及所述动态链接库文件的应用程序第二安装包,包括:
对所述动态链接库文件进行加密处理,得到加密后的动态链接库文件;
根据所述第二代码以及加密后的动态链接库文件,生成包含所述第二代码以及所述加密后的动态链接库文件的应用程序第二安装包。
8.如权利要求7所述的方法,其特征在于,对所述动态链接库文件进行加密处理,包括下述至少一种:
采用加壳技术,对所述动态链接库文件进行处理;
采用花指令技术,对所述动态链接库文件进行处理。
9.一种应用程序的运行方法,其特征在于,包括:
接收针对应用程序第二安装包的加载指令;所述应用程序第二安装包中包含用于调用动态链接库文件的第二代码,所述动态链接库文件,是根据应用程序第一安装包中待保护的第一代码生成的;
响应于所述加载指令,加载所述第二代码,以使得通过运行所述第二代码,调用所述动态链接库文件到内存中;
运行被调用到所述内存中的所述动态链接库文件。
10.如权利要求9所述的方法,其特征在于,当所述动态链接库文件为加密后的动态链接库文件时,运行被调用到所述内存中的所述动态链接库文件,包括:
对所述加密后的动态链接库文件进行还原处理,并运行经还原处理后的动态链接库文件。
11.一种应用程序安装包的生成装置,其特征在于,包括:
动态链接库文件生成单元,用于从应用程序第一安装包中确定待保护的第一代码,并根据确定出的所述第一代码,生成包含所述第一代码的动态链接库文件;
第二代码生成单元,用于生成用于调用所述生成的动态链接库文件的第二代码;
应用程序安装包生成单元,用于根据所述第二代码以及所述生成的动态链接库文件,生成包含所述第二代码以及所述动态链接库文件的应用程序第二安装包。
12.如权利要求11所述的装置,其特征在于,所述动态链接库文件生成单元,用于:
将确定出的所述第一代码保存为符合指定的计算机编程语言格式的文件;
根据所述符合指定的计算机编程语言格式的文件与加载器,生成包含所述符合指定的计算机编程语言格式的文件和所述加载器的动态链接库文件,其中,所述加载器用于将所述符合指定的计算机编程语言格式的文件加载到内存中。
13.如权利要求11所述的装置,其特征在于,所述动态链接库文件生成单元,用于:
对所述应用程序第一安装包进行解压,获得所述应用程序第一安装包中的第一文件以及第二文件;所述第二文件中保存有所述应用程序能够实现的类的名称;
从所述第二文件中确定所述待保护的类的名称;
根据确定出的所述待保护的类的名称,从所述第一文件中确定与所述待保护的类的名称对应的代码,作为待保护的第一代码。
14.如权利要求10所述的装置,其特征在于,所述第二代码生成单元,用于:
在所述应用程序第一安装包中生成用于调用所述动态链接库文件的第二代码。
15.如权利要求14所述的装置,其特征在于,应用程序安装包生成单元,用于:
对所述动态链接库文件进行加密处理,得到加密后的动态链接库文件;
根据所述第二代码以及加密后的动态链接库文件,生成包含所述第二代码以及所述加密后的动态链接库文件的应用程序第二安装包。
16.一种应用程序的运行装置,其特征在于,包括:
加载指令接收单元,用于接收针对应用程序第二安装包的加载指令;所述应用程序第二安装包中包含用于调用动态链接库文件的第二代码,所述动态链接库文件,是根据应用程序第一安装包中待保护的第一代码生成的;
代码加载单元,用于响应于加载指令接收单元接收到的所述加载指令,加载所述第二代码,以使得通过运行所述第二代码,调用所述动态链接库文件到内存中;
运行单元,用于运行被调用到所述内存中的所述动态链接库文件。
17.一种应用程序安装包的生成装置,其特征在于,包括:
存储器,用于存储程序指令;
处理器,耦合到所述存储器,用于读取所述存储器存储的程序指令,并作为响应,执行如下操作:从应用程序第一安装包中确定待保护的第一代码,并根据确定出的所述第一代码,生成包含所述第一代码的动态链接库文件;生成用于调用所述生成的动态链接库文件的第二代码;根据所述第二代码以及所述生成的动态链接库文件,生成包含所述第二代码以及所述动态链接库文件的应用程序第二安装包。
18.一种应用程序的运行装置,其特征在于,包括:
存储器,用于存储程序指令;
处理器,耦合到所述存储器,用于读取所述存储器存储的程序指令,并作为响应,执行如下操作:接收针对应用程序第二安装包的加载指令;所述应用程序第二安装包中包含用于调用动态链接库文件的第二代码,所述动态链接库文件,是根据应用程序第一安装包中待保护的第一代码生成的;响应于所述加载指令,加载所述第二代码,以使得通过运行所述第二代码,调用所述动态链接库文件到内存中;运行被调用到所述内存中的所述动态链接库文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610693824.0A CN107766096A (zh) | 2016-08-19 | 2016-08-19 | 应用程序安装包的生成方法、应用程序的运行方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610693824.0A CN107766096A (zh) | 2016-08-19 | 2016-08-19 | 应用程序安装包的生成方法、应用程序的运行方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107766096A true CN107766096A (zh) | 2018-03-06 |
Family
ID=61262118
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610693824.0A Pending CN107766096A (zh) | 2016-08-19 | 2016-08-19 | 应用程序安装包的生成方法、应用程序的运行方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107766096A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108681457A (zh) * | 2018-05-11 | 2018-10-19 | 西北大学 | 基于代码下沉与残码解释的Android应用程序保护方法 |
CN108897562A (zh) * | 2018-06-27 | 2018-11-27 | 腾讯科技(深圳)有限公司 | 安装包更新方法、装置、介质以及设备 |
CN109032605A (zh) * | 2018-07-05 | 2018-12-18 | 北京奇艺世纪科技有限公司 | 一种应用运行方法和装置 |
CN110414217A (zh) * | 2019-07-31 | 2019-11-05 | 广东小天才科技有限公司 | 应用程序的安全运行方法、装置、电子设备和存储介质 |
WO2020062233A1 (zh) * | 2018-09-30 | 2020-04-02 | 西门子股份公司 | 应用程序处理和部署的方法、装置及计算机可读介质 |
CN111381978A (zh) * | 2018-12-29 | 2020-07-07 | 深圳Tcl数字技术有限公司 | 一种接入应用程序的方法、存储介质以及智能电视 |
CN112947929A (zh) * | 2021-01-28 | 2021-06-11 | 北京字节跳动网络技术有限公司 | 应用程序安装包的构建方法、装置、计算机设备和介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100175104A1 (en) * | 2008-03-03 | 2010-07-08 | Khalid Atm Shafiqul | Safe and secure program execution framework with guest application space |
US20140165030A1 (en) * | 2012-12-06 | 2014-06-12 | Apple Inc. | Methods and apparatus for correlation protected processing of data operations |
CN104021321A (zh) * | 2014-06-17 | 2014-09-03 | 北京奇虎科技有限公司 | 软件安装包的加固保护方法和装置 |
CN104573416A (zh) * | 2013-10-25 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 一种生成应用安装包、执行应用的方法及装置 |
CN104680039A (zh) * | 2013-11-28 | 2015-06-03 | 腾讯科技(深圳)有限公司 | 一种应用程序安装包的数据保护方法及装置 |
CN105068932A (zh) * | 2015-08-25 | 2015-11-18 | 北京安普诺信息技术有限公司 | 一种Android应用程序加壳的检测方法 |
CN105512521A (zh) * | 2015-12-25 | 2016-04-20 | 北京奇虎科技有限公司 | 一种软件安装包的加固保护方法和系统 |
CN105740703A (zh) * | 2016-01-29 | 2016-07-06 | 北京奇虎科技有限公司 | 一种应用程序的加固方法及装置 |
CN105825085A (zh) * | 2016-03-16 | 2016-08-03 | 广州彩瞳网络技术有限公司 | 应用程序的处理方法及装置 |
-
2016
- 2016-08-19 CN CN201610693824.0A patent/CN107766096A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100175104A1 (en) * | 2008-03-03 | 2010-07-08 | Khalid Atm Shafiqul | Safe and secure program execution framework with guest application space |
US20140165030A1 (en) * | 2012-12-06 | 2014-06-12 | Apple Inc. | Methods and apparatus for correlation protected processing of data operations |
CN104573416A (zh) * | 2013-10-25 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 一种生成应用安装包、执行应用的方法及装置 |
CN104680039A (zh) * | 2013-11-28 | 2015-06-03 | 腾讯科技(深圳)有限公司 | 一种应用程序安装包的数据保护方法及装置 |
CN104021321A (zh) * | 2014-06-17 | 2014-09-03 | 北京奇虎科技有限公司 | 软件安装包的加固保护方法和装置 |
CN105068932A (zh) * | 2015-08-25 | 2015-11-18 | 北京安普诺信息技术有限公司 | 一种Android应用程序加壳的检测方法 |
CN105512521A (zh) * | 2015-12-25 | 2016-04-20 | 北京奇虎科技有限公司 | 一种软件安装包的加固保护方法和系统 |
CN105740703A (zh) * | 2016-01-29 | 2016-07-06 | 北京奇虎科技有限公司 | 一种应用程序的加固方法及装置 |
CN105825085A (zh) * | 2016-03-16 | 2016-08-03 | 广州彩瞳网络技术有限公司 | 应用程序的处理方法及装置 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108681457A (zh) * | 2018-05-11 | 2018-10-19 | 西北大学 | 基于代码下沉与残码解释的Android应用程序保护方法 |
CN108681457B (zh) * | 2018-05-11 | 2020-09-01 | 西北大学 | 基于代码下沉与残码解释的Android应用程序保护方法 |
CN108897562A (zh) * | 2018-06-27 | 2018-11-27 | 腾讯科技(深圳)有限公司 | 安装包更新方法、装置、介质以及设备 |
CN108897562B (zh) * | 2018-06-27 | 2022-08-09 | 腾讯科技(深圳)有限公司 | 安装包更新方法、装置、介质以及设备 |
CN109032605A (zh) * | 2018-07-05 | 2018-12-18 | 北京奇艺世纪科技有限公司 | 一种应用运行方法和装置 |
WO2020062233A1 (zh) * | 2018-09-30 | 2020-04-02 | 西门子股份公司 | 应用程序处理和部署的方法、装置及计算机可读介质 |
CN111381978A (zh) * | 2018-12-29 | 2020-07-07 | 深圳Tcl数字技术有限公司 | 一种接入应用程序的方法、存储介质以及智能电视 |
CN111381978B (zh) * | 2018-12-29 | 2024-03-12 | 深圳Tcl数字技术有限公司 | 一种接入应用程序的方法、存储介质以及智能电视 |
CN110414217A (zh) * | 2019-07-31 | 2019-11-05 | 广东小天才科技有限公司 | 应用程序的安全运行方法、装置、电子设备和存储介质 |
CN110414217B (zh) * | 2019-07-31 | 2023-03-24 | 广东小天才科技有限公司 | 应用程序的安全运行方法、装置、电子设备和存储介质 |
CN112947929A (zh) * | 2021-01-28 | 2021-06-11 | 北京字节跳动网络技术有限公司 | 应用程序安装包的构建方法、装置、计算机设备和介质 |
CN112947929B (zh) * | 2021-01-28 | 2023-11-24 | 抖音视界有限公司 | 应用程序安装包的构建方法、装置、计算机设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107766096A (zh) | 应用程序安装包的生成方法、应用程序的运行方法及装置 | |
KR101471589B1 (ko) | 공통중간언어 기반 프로그램을 위한 보안 제공 방법 | |
WO2015058620A1 (en) | Method and apparatus for generating installation package corresponding to an application and executing application | |
CN109598107B (zh) | 一种基于应用安装包文件的代码转换方法及装置 | |
CN105022936A (zh) | 一种类class文件加密解密方法和装置 | |
CN111552931A (zh) | java代码的加壳方法与系统 | |
CN105573734B (zh) | 一种用于提供sdk文件的方法与设备 | |
CN104318155A (zh) | 一种防逆向apk文件的动态加载方法 | |
US9971582B2 (en) | Selecting application wrapper logic components based on features of a mobile application to be wrapped | |
CN104298534B (zh) | 基于Lua语言的编程方法和装置 | |
CN109062582A (zh) | 一种应用安装包的加密方法及装置 | |
CN109840400B (zh) | 提供安全性的设备和方法以及针对通用中间语言执行安全性的设备和方法 | |
CN107103215A (zh) | 一种apk安装方法及装置 | |
Kim et al. | Android Application Protection against Static Reverse Engineering based on Multidexing. | |
CN112069468A (zh) | 一种页面动态水印的方法及设备 | |
CN113568680A (zh) | 应用程序的动态链接库保护方法、装置、设备及介质 | |
WO2015057816A1 (en) | Method and system for adaptive loading of application | |
CN107122636A (zh) | 一种基于so文件的apk加固方法及装置 | |
KR101863325B1 (ko) | 역공학 방지 방법 및 장치 | |
KR101557455B1 (ko) | 응용 프로그램 코드 분석 장치 및 그것을 이용한 코드 분석 방법 | |
KR101667774B1 (ko) | 스크립트 프로그램을 위한 보안 제공 장치 및 방법 | |
CN108153745B (zh) | 一种应用数据调用方法及应用开发系统 | |
Feng et al. | Seqmobile: A sequence based efficient android malware detection system using rnn on mobile devices | |
CN106775843A (zh) | 基于内存加载的dalvik字节码优化方法 | |
CN113835748B (zh) | 基于html5的应用程序的打包方法、系统和可读介质 |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20201223 Address after: Room 603, 6 / F, Roche Plaza, 788 Cheung Sha Wan Road, Kowloon, China Applicant after: Zebra smart travel network (Hong Kong) Limited Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands Applicant before: Alibaba Group Holding Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180306 |