CN109062582B - 一种应用安装包的加密方法及装置 - Google Patents
一种应用安装包的加密方法及装置 Download PDFInfo
- Publication number
- CN109062582B CN109062582B CN201810811830.0A CN201810811830A CN109062582B CN 109062582 B CN109062582 B CN 109062582B CN 201810811830 A CN201810811830 A CN 201810811830A CN 109062582 B CN109062582 B CN 109062582B
- Authority
- CN
- China
- Prior art keywords
- entry address
- encrypted
- encryption
- installation package
- executable file
- 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
- 238000009434 installation Methods 0.000 title claims abstract description 90
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000003860 storage Methods 0.000 claims abstract description 44
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 20
- 230000006870 function Effects 0.000 claims description 45
- 230000002159 abnormal effect Effects 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 claims description 3
- 230000006837 decompression Effects 0.000 claims description 3
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 238000005336 cracking Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
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/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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种应用安装包的加密方法,用以解决应用程序安装包可能会被反编译等方式破解,而造成应用程序操作代码泄露的问题。方法包括:获取待加密的应用安装包中的可执行文件;在所述可执行文件中确定待加密的入口地址,其中,所述入口地址用于指示类名或函数名在可执行文件中的存放位置;调用预先设置的混淆加密算法对所述入口地址进行混淆加密处理,以得到混淆加密入口地址;基于包含所述混淆加密入口地址的可执行文件,生成加密应用安装包。本申请还公开了一种应用程序安装包的加密装置。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种应用安装包的加密方法及装置。
背景技术
随着互联网信息技术的不断发展,越来越多具有不同功能且可以应用于智能终端设备上的应用程序被开发出来,极大的丰富了人们的日常生活。这里所说的应用程序,比如,可以是计算机上的应用程序,也可以是移动终端上的应用(Application,APP)。
然而,随着终端应用市场的飞速发展,应用程序被山寨、被破解的问题也变得越来越严重。对于一些优秀的应用,由于缺少对源代码的保护机制,很容易就可以通过反编译的方式破解,造成应用程序代码的泄露,这就会给应用程序的开发者带来很大损失。
一直以来,苹果公司移动操作***IOS***由于其本身具备多种安全防护措施,使得IOS***以及针对IOS***开发的应用一直以安全著称。
但是随着漏洞挖掘以及逆向工程等技术的快速发展,IOS***也变得不再像以前那样安全,针对IOS平台苹果应用包(iPhone Application,IPA)的破解、山寨等恶意事件也变得层出不穷。而且由于IOS***本身的封闭性,一直以来很多软件开发商都放弃了针对IOS平台IPA包的安全防护,导致针对IOS平台开发的IPA包在面对反编译等破解手段时毫无安全防护,从而很容易造成代码泄露。
因此提升针对IOS***开发的IPA应用包的破解难度,成为亟待解决的问题。
发明内容
本申请实施例提供一种应用安装包的加密方法,用以解决应用安装包可能会被破解,而造成应用程序操作代码泄露的问题。
本申请实施例还提供一种应用安装包的加密装置,用以解决应用安装包可能会被破解,而造成应用程序操作代码泄露的问题。
本申请实施例采用下述技术方案:
一种应用安装包的加密方法,其特征在于,包括:
获取待加密的应用安装包中的可执行文件;在所述可执行文件中确定待加密的入口地址,其中,所述入口地址用于指示类名或函数名在可执行文件中的存放位置;调用预先设置的混淆加密算法对所述入口地址进行混淆加密处理,以得到混淆加密入口地址;基于包含所述混淆加密入口地址的可执行文件,生成加密应用安装包。
一种应用安装包的加密装置,其特征在于,包括:
可执行文件获取单元,用于获取待加密的应用安装包中的可执行文件;
入口地址确定单元,用于在所述可执行文件中确定待加密的入口地址,其中,所述入口地址用于指示类名或函数名在可执行文件中的存放位置;
加密单元,用于调用预先设置的混淆加密算法对所述入口地址进行混淆加密处理,以得到混淆加密入口地址;
安装包生成单元,用于基于包含所述混淆加密入口地址的可执行文件,生成加密应用安装包。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
采用本申请实施例所提供的方法,通过获取到的待加密应用安装包的可执行文件,在该可执行文件中确定需要加密的用于指示类名或函数名在可执行文件中的存放位置的入口地址,并通过调用预先设置的混淆加密算法对该入口地址进行混淆加密处理,进而得到混淆加密入口地址,后续可以基于包含该混淆加密入口地址的可执行文件生成加密后的应用安装包。由于在本方案中,可执行文件中入口地址是经过加密混淆的,即根据该入口地址无法查找到应用运行是所需要的正确的类名或者函数名,因而即使通过反编译等手段对采用本方案进行加密的应用安装包进行破解后可以得到该应用程序的可执行文件,但是由于在可执行文件中入口地址是进行混淆处理后,因而破解人员根据该入口地址仍然无法得到该应用在运行时所需要的正确的类名和函数名,进而无法通过该应用的类名和函数名来确定该程序的代码,从而避免了应用程序代码泄露的问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的一种应用安装包的加密方法的具体流程示意图;
图2为本申请实施例提供的一种Mach-O格式的可执行文件的具体结构示意图;
图3为本申请实施例提供的一种应用安装包的加密装置的具体结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
本申请实施例提供了一种应用安装包的加密方法,用以解决应用安装包可能会被破解,而造成应用程序操作代码泄露的问题。
本申请实施例提供的应用安装包的加密方法,该方法的执行主体,可以但不限于为手机、平板电脑、个人电脑(Personal Computer,PC)、智能电视以及任何可以运行应用程序的终端设备中的至少一种。此外,该方法的执行主体,也可以是服务器,例如,用于对应用安装包进行加密处理的服务器(可以称为应用安装包加密服务器),等。
为便于描述,下文以该方法的执行主体为应用程序安装包加密服务器为例,对该方法的实施方式进行介绍。可以理解,该方法的执行主体为应用程序加密服务器只是一种示例性的说明,并不应理解为对该方法的限定。
该方法的具体实现流程图如图1所示,主要包括下述步骤:
步骤11,获取待加密的应用安装包中的可执行文件;
所述应用安装包(Install Package)中包括该应用程序的安装文件,运行所述安装包,可将该应用的安装文件保存到智能终端的存储设备(如,硬盘)上。
需要说明的是,本方案所提供的应用安装包加密方法可以是针对苹果公司移动操作***(IOS***)上的应用安装包(iPhoneApplication,IPA)。一般地,应用程序的IPA安装包往往是一个zip压缩包,该文件包含3个组件:payload目录下的“.app文件”,该文件是整个应用的主程序,里面包含了该应用的全部资源和可执行文件;iTunesArtwork文件,实质是一个无后缀名的png图片,用来在iTunes中显示图标;iTunesMetadata.plist文件,记录购买者信息、售价等数据。
因而在本申请实施例中,在对待加密的应用安装包解压后,可以从解压得到的“.app文件”中获取到该应用安装包的可执行文件。其中,IPA安装包中的可执行文件为MachObject(Mach-O)格式的文件。Mach-O格式的可执行文件主要由以下三个部分组成,如图2所示:
1、文件头(Header),其中,Mach-O格式的可执行文件中文件头往往具有特定的字符长度。
2、加载命令区(Load commands),在Mach-O格式的可执行文件中加载命令区往往直接跟在文件头部分的后面,包含了多种格式的加载命令,该些加载命令在Mach-O文件加载解析时,被内核加载器或者动态链接器调用,指导如何设置加载对应的二进制数据段。
加载命令区所保存的加载命令的种类有很多种,通过命令所对应的命令类型,可以确定该命令所包含的具体内容,而其中有些命令用于指示运行中所需要调用的类名或者函数名在数据区的存放位置,因而可以根据加载命令的类型,确定出用于指示类名或者函数名地址的加载命令,并在该加载命令中确定出用于指示类名或者函数名的入口地址。具体如何在加载命令区中确定类名或者函数名的入口地址,详见下述步骤2中的相关描述。
3、数据区(Data),数据区中包含了很多数据段(segment),每一个数据段定义了该Mach-O文件的数据、地址和内存等属性,这些数据段在动态链接器加载程序时被映射到了虚拟内存中。每个数据段都有不同的功能,一般包括:
1).__PAGEZERO:空指针陷阱段,映射到虚拟内存空间的第一页,用于捕捉对NULL指针的引用;
2).__TEXT:包含了执行代码以及其他只读数据。为了让内核将它直接从可执行文件映射到共享内存,静态连接器设置该段的虚拟内存权限为不允许写。
3).__DATA:包含了程序数据;
4).__OBJC:Objective-C运行时支持库,包含了应用在运行是所需要调用的类、类的名称、函数以及函数的名称;
5).__LINKEDIT:含有为动态链接库使用的原始数据,比如符号,字符串,重定位表条目等等。
步骤2:在通过执行步骤1获取到的可执行文件中确定待加密的入口地址;
其中,可执行文件中的该入口地址用于指示类名或函数名在可执行文件中的存放位置。
通过上文的相关介绍可知,在Mach-O格式的可执行文件中,用于指示类名或函数名存放位置的入口地址往往以加载命令的形式存放在加载命令区,因而在本申请实施例中,可以从Mach-O格式的可执行文件的加载命令区中获得需要进行加密的类名或者函数名的入口地址。
需要说明的是,Mach-O格式的可执行文件中加载命令区中的所保存的命令往往是具有固定格式的,举例而言,其中命令的格式往往可以包括:
其中,命令类型cmd和整个命令长度这两个信息的格式是固定的,且所占字符长度也是固定的,均占据了前8个字节。而payload[xxxx]则表示该条命令的具体内容,且payload的长度也不是固定的,而用于指示类名或函数名存放位置的入口地址就存放在加载命令的payload中。
在本申请实施例中,应用安装包加密服务器可以依据可执行文件的文件头,遍历加载命令区,以在加载命令区中确定待加密的入口地址。具体地,可以通过以下子步骤,来确定可执行文件中待加密的入口地址:
子步骤a:确定可执行文件中文件头的文件长度,并根据该文件头的长度,将距离可执行文件的起始位置该文件头长度处确定为该可执行文件的第一个加载命令区的起始位置。
假设确定的文件头的长度为6字节,那么应用安装包加密服务器可以将距离可执行文件的起始位置6字节的位置,确定为第一个加载命令的起始位置。
子步骤b:根据通过执行子步骤2确定的第一个加载命令的起始位置,遍历加载命令区中的所有加载命令,以确定加载命令区中用于指示运行中所需要调用的类名或者函数名在数据区的存放位置命令。
需要说明的是,加载命令区中往往包含多个加载命令,而在可执行文件的文件头中,一般有特定字段来表示加载命令区中加载命令的个数,因而在本方案中,应用安装包加密服务器可以根据文件头中的特定字段来确定该加载命令区中所包含的加载命令数量,并根据加载命令的数量以及第一个加载命令的起始位置,确定加载命令区中各个加载命令的起始位置,进而实现对各个加载命令的遍历,以确定加载命令区中用于指示运行中所需要调用的类名或者函数名在数据区的存放位置命令。
子步骤c:在通过执行子步骤2确定出加载命令区中用于指示运行中所需要调用的类名或者函数名在数据区的存放位置命令后,将距离该命令的起始位置8字节的位置,确定为该命令所包含具体数据的起始位置,并依次确定出在该命令中的入口地址。
例如,通过执行子步骤2确定出的用于指示运行中所需要调用的类名或者函数名在数据区的存放位置命令如下所示:
通过加载以下SEGMENT(32位)命令获取到如类名、方法名所在的SECTION信息。
在上述命令中,cmd表明该命令的类型,该命令为SEGMENT命令,cmdsize表示该命令的长度包含其所拥有的SECTION的长度,segname表示该SEGMENT命令的名称,vmaddr表示该命令所指数据的虚拟内存地址,vmsize表示该命令所指数据内存大小,fileoff表示数据在文件中的偏移量,filesize表示数据大小,nsects表示该SEGMENT所拥有的SECTION数量,SECTION具有相同格式,通过nsects参数可以遍历其所有SECTION数据,如下所示:
通过以下SECTION(32位)结构,获取到如类名、方法名在文件中的具体偏移地址。
在上述结构中,sectname表示名称,segname表示该section所在的SEGMENT名称,addr表示数据内存地址,size表示数据大小,offset表示数据在文件中的偏移量,而其中第addr和offset所表示的内容,则为本方案中所要确定的入口地址。因而可以据此在用于指示运行中所需要调用的类名或者函数名在数据区的存放位置的加载命令中确定出待加密的入口地址。
步骤3:调用预先设置的混淆加密算法对所述入口地址进行混淆加密处理,以得到混淆加密入口地址;
需要说明的是,在本方案中,主要是通过对入口地址中的偏移量进行修改,使得通过该修改后的偏移量实现对入口地址的混淆加密,具体地,本方案可以采用下述方法对入口地址进行混淆:按照预先设置的加密混淆算法,计算用于混淆所述入口地址的偏移量;根据所述偏移量对所述入口地址进行改写,以得到加密混淆入口地址。
在实际运行中,内核加载器可以根据加载命令中的地址以及偏移量,来确定需要调用的类名在数据区的存放位置,因而在本方案中可以通过改变偏移量,以使得根据地址以及混淆后的偏移量无法确定出待调用类名在数据区的正确存储位置,以达到对应用安装包的加密混淆。在一种实施方式中,计算针对所述入口地址的混淆偏移量具体可以包括:确定所述类名或函数名在所述可执行文件中的存放区域;根据所述存放区域在所述可执行文件中的位置,按照预先设置的加密混淆算法,计算针对所述入口地址的混淆偏移量,以使得根据所述混淆偏移量改写得到加密混淆入口地址所指示的位置在所述存放区域外。
具体地,在本方案中可以采用下述方法对偏移量进行混淆加密,首先随机预设置两个常量数值,其中一个用于计算新的偏移量,另一个用于计算新的内存长度,通过这两个数字与之前确定出的偏移量和内存长度数值进行相加或相减运算,并验证相加或相减的结果是否出现异常,每个命令的数据是否连续,并通过不断的修正预设数值,取得正确的计算结果,以得到混淆加密后的偏移量。
经过上述混淆处理,以使得可执行文件中入口地址被加密,即根据该入口地址无法查找到应用运行是所需要的正确的类名或者函数名,因而即使通过反编译等手段对采用本方案进行加密的应用安装包进行破解后可以得到该应用程序的可执行文件,但是由于在可执行文件中入口地址是进行混淆处理后,因而破解人员根据该入口地址仍然无法得到该应用在运行时所需要的正确的类名和函数名,进而无法通过该应用的类名和函数名来确定该程序的代码,从而避免了应用程序代码泄露的问题
步骤4:基于包含所述混淆加密入口地址的可执行文件,生成加密应用安装包。
该加密应用安装包,即为供用户使用的应用程序安装包。后续,可以发布加密应用安装包,使得用户可以根据需求下载并使用该加密应用安装包。具体而言,可以将加密应用安装包,发布到应用程序下载平台(如应用程序商城中),供用户下载使用。
采用本申请实施例所提供的应用安装包的加密方法,通过获取到的待加密应用安装包的可执行文件,在该可执行文件中确定需要加密的用于指示类名或函数名在可执行文件中的存放位置的入口地址,并通过调用预先设置的混淆加密算法对该入口地址进行混淆加密处理,进而得到混淆加密入口地址,后续可以基于包含该混淆加密入口地址的可执行文件生成加密后的应用安装包。由于在本方案中,可执行文件中入口地址是经过加密混淆的,即根据该入口地址无法查找到应用运行是所需要的正确的类名或者函数名,因而即使通过反编译等手段对采用本方案进行加密的应用安装包进行破解后可以得到该应用程序的可执行文件,但是由于在可执行文件中入口地址是进行混淆处理后,因而破解人员根据该入口地址仍然无法得到该应用在运行时所需要的正确的类名和函数名,进而无法通过该应用的类名和函数名来确定该程序的代码,从而避免了应用程序代码泄露的问题。
本申请还提供了一种应用安装包的加密装置,用以解决应用安装包可能会被破解,而造成应用程序操作代码泄露的问题。该装置的具体结构示意图如图3所示,包括:可执行文件获取单元31、入口地址确定单元32、加密单元33以及安装包生成单元34。
其中,可执行文件获取单元31,用于获取待加密的应用安装包中的可执行文件;
入口地址确定单元32,用于在所述可执行文件中确定待加密的入口地址,其中,所述入口地址用于指示类名或函数名在可执行文件中的存放位置;
混淆单元33,用于调用预先设置的混淆加密算法对所述入口地址进行混淆加密处理,以得到混淆加密入口地址;
安装包生成单元34,用于基于包含所述混淆加密入口地址的可执行文件,生成加密应用安装包。
在一种实施方式中,入口地址确定单元,具体用于:按照预先设置的加密混淆算法,计算用于混淆所述入口地址的偏移量;根据所述偏移量对所述入口地址进行改写,以得到加密混淆入口地址。
在一种实施方式中,加密单元,具体用于:确定所述类名或函数名在所述可执行文件中的存放区域;根据所述存放区域在所述可执行文件中的位置,按照预先设置的加密混淆算法,计算针对所述入口地址的混淆偏移量,以使得根据所述混淆偏移量改写得到加密混淆入口地址所指示的位置在所述存放区域外。
在一种实施方式中,可执行文件获取单元,具体用于:获取所述待加密的应用安装包;对所述待加密的应用安装包进行解压缩处理,得到所述可执行文件。
在一种实施方式中,安装包生成单元,具体用于:对包含所述加密混淆入口地址的可执行文件进行与所述解压缩对应的打包处理,以得到加密应用安装包。
在一种实施方式中,所述应用安装包为iOS应用包。
采用本申请实施例所提供的应用安装包的加密装置,通过获取到的待加密应用安装包的可执行文件,在该可执行文件中确定需要加密的用于指示类名或函数名在可执行文件中的存放位置的入口地址,并通过调用预先设置的混淆加密算法对该入口地址进行混淆加密处理,进而得到混淆加密入口地址,后续可以基于包含该混淆加密入口地址的可执行文件生成加密后的应用安装包。由于在本方案中,可执行文件中入口地址是经过加密混淆的,即根据该入口地址无法查找到应用运行是所需要的正确的类名或者函数名,因而即使通过反编译等手段对采用本方案进行加密的应用安装包进行破解后可以得到该应用程序的可执行文件,但是由于在可执行文件中入口地址是进行混淆处理后,因而破解人员根据该入口地址仍然无法得到该应用在运行时所需要的正确的类名和函数名,进而无法通过该应用的类名和函数名来确定该程序的代码,从而避免了应用程序代码泄露的问题。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、***或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (8)
1.一种应用安装包的加密方法,其特征在于,包括:
获取待加密的应用安装包中的可执行文件;
在所述可执行文件中确定待加密的入口地址,其中,所述入口地址用于指示类名或函数名在可执行文件中的存放位置;
调用预先设置的混淆加密算法对所述入口地址进行混淆加密处理,以得到混淆加密入口地址;
基于包含所述混淆加密入口地址的可执行文件,生成加密应用安装包;
其中,所述调用预先设置的加密混淆算法对所述入口地址进行加密混淆处理,以得到加密混淆入口地址,具体包括:
按照预先设置的加密混淆算法,计算用于混淆所述入口地址的偏移量;
根据所述偏移量对所述入口地址进行改写,以得到加密混淆入口地址;
按照预先设置的加密混淆算法,计算针对所述入口地址的混淆偏移量,具体包括:
确定所述类名或函数名在所述可执行文件中的存放区域;
根据所述存放区域在所述可执行文件中的位置,按照预先设置的加密混淆算法,计算针对所述入口地址的混淆偏移量,以使得根据所述混淆偏移量改写得到加密混淆入口地址所指示的位置在所述存放区域外;
采用下述方法对偏移量进行混淆加密,首先随机预设置两个常量数值,其中一个用于计算新的偏移量,另一个用于计算新的内存长度,通过这两个数字与之前确定出的偏移量和内存长度数值进行相加或相减运算,并验证相加或相减的结果是否出现异常,每个命令的数据是否连续,并通过不断的修正预设数值,取得正确的计算结果,以得到混淆加密后的偏移量。
2.根据权利要求1所述的方法,其特征在于,获取待加密的应用安装包中的可执行文件,具体包括:
获取所述待加密的应用安装包;
对所述待加密的应用安装包进行解压缩处理,得到所述可执行文件。
3.根据权利要求2所述的方法,其特征在于,基于所述加密混淆入口地址,生成加密应用安装包,具体包括:
对包含所述加密混淆入口地址的可执行文件进行与所述解压缩对应的打包处理,以得到加密应用安装包。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述应用安装包为iOS应用包。
5.一种应用安装包的加密装置,其特征在于,包括:
可执行文件获取单元,用于获取待加密的应用安装包中的可执行文件;
入口地址确定单元,用于在所述可执行文件中确定待加密的入口地址,其中,所述入口地址用于指示类名或函数名在可执行文件中的存放位置;
加密单元,用于调用预先设置的混淆加密算法对所述入口地址进行混淆加密处理,以得到混淆加密入口地址;
安装包生成单元,用于基于包含所述混淆加密入口地址的可执行文件,生成加密应用安装包;
其中,入口地址确定单元,具体用于:
按照预先设置的加密混淆算法,计算用于混淆所述入口地址的偏移量;
根据所述偏移量对所述入口地址进行改写,以得到加密混淆入口地址;
加密单元,具体用于:
确定所述类名或函数名在所述可执行文件中的存放区域;
根据所述存放区域在所述可执行文件中的位置,按照预先设置的加密混淆算法,计算针对所述入口地址的混淆偏移量,以使得根据所述混淆偏移量改写得到加密混淆入口地址所指示的位置在所述存放区域外;
采用下述方法对偏移量进行混淆加密,首先随机预设置两个常量数值,其中一个用于计算新的偏移量,另一个用于计算新的内存长度,通过这两个数字与之前确定出的偏移量和内存长度数值进行相加或相减运算,并验证相加或相减的结果是否出现异常,每个命令的数据是否连续,并通过不断的修正预设数值,取得正确的计算结果,以得到混淆加密后的偏移量。
6.根据权利要求5所述的装置,其特征在于,可执行文件获取单元,具体用于:
获取所述待加密的应用安装包;
对所述待加密的应用安装包进行解压缩处理,得到所述可执行文件。
7.根据权利要求6所述的装置,其特征在于,安装包生成单元,具体用于:
对包含所述加密混淆入口地址的可执行文件进行与所述解压缩对应的打包处理,以得到加密应用安装包。
8.根据权利要求5至7中任一项所述的装置,其特征在于,所述应用安装包为iOS应用包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810811830.0A CN109062582B (zh) | 2018-07-23 | 2018-07-23 | 一种应用安装包的加密方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810811830.0A CN109062582B (zh) | 2018-07-23 | 2018-07-23 | 一种应用安装包的加密方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109062582A CN109062582A (zh) | 2018-12-21 |
CN109062582B true CN109062582B (zh) | 2022-02-01 |
Family
ID=64835304
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810811830.0A Active CN109062582B (zh) | 2018-07-23 | 2018-07-23 | 一种应用安装包的加密方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109062582B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110110506B (zh) * | 2019-03-28 | 2021-07-02 | 江苏通付盾信息安全技术有限公司 | 基于应用程序安装包的程序加固方法及装置 |
CN110119601B (zh) * | 2019-03-28 | 2022-07-12 | 江苏通付盾信息安全技术有限公司 | 基于应用程序安装包的程序加固方法及装置 |
CN110147653B (zh) * | 2019-03-28 | 2022-04-19 | 江苏通付盾信息安全技术有限公司 | 应用程序安全加固方法及装置 |
CN110119600A (zh) * | 2019-03-28 | 2019-08-13 | 江苏通付盾信息安全技术有限公司 | 基于应用程序安装包的程序加固方法及装置 |
CN110147655A (zh) * | 2019-03-28 | 2019-08-20 | 江苏通付盾信息安全技术有限公司 | 应用程序的安全防护***及方法 |
CN110135152B (zh) * | 2019-03-28 | 2021-07-02 | 江苏通付盾信息安全技术有限公司 | 应用程序攻击检测方法及装置 |
CN111917680A (zh) * | 2019-05-07 | 2020-11-10 | ***通信集团湖南有限公司 | 一种加密***、方法、服务器及存储介质 |
CN110597496B (zh) * | 2019-09-10 | 2021-09-24 | 腾讯科技(深圳)有限公司 | 应用程序的字节码文件获取方法及装置 |
CN110990056A (zh) * | 2019-11-01 | 2020-04-10 | 北京三快在线科技有限公司 | 逆向分析方法、装置、电子设备及存储介质 |
CN111212057B (zh) * | 2019-12-30 | 2022-09-27 | 武汉联影医疗科技有限公司 | 资源包传输方法、装置、计算机设备和可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101634992A (zh) * | 2009-06-11 | 2010-01-27 | 上海交通大学 | Ntfs文件***下轻量级文件加密及其解密恢复方法 |
CN104809414A (zh) * | 2015-05-04 | 2015-07-29 | 深圳市创世达实业有限公司 | 一种防止冷启动攻击的u盘加密密钥存放方法 |
CN105978876A (zh) * | 2016-05-11 | 2016-09-28 | 杭州图南电子有限公司 | 一种应用在广播通讯中的指令加密方法 |
CN106599629A (zh) * | 2016-12-16 | 2017-04-26 | Tcl集团股份有限公司 | 一种安卓应用程序加固方法及装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9450749B2 (en) * | 2000-03-29 | 2016-09-20 | Wolfgang S. Hammersmith | One-time-pad encryption with central key service |
CN104573416B (zh) * | 2013-10-25 | 2018-07-17 | 腾讯科技(深圳)有限公司 | 一种生成应用安装包、执行应用的方法及装置 |
CN104111832A (zh) * | 2014-07-03 | 2014-10-22 | 北京思特奇信息技术股份有限公司 | 一种安卓应用程序安装包加壳方法及***及解壳方法 |
CN104318135B (zh) * | 2014-10-27 | 2017-04-05 | 中国科学院信息工程研究所 | 一种基于可信执行环境的Java代码安全动态载入方法 |
CN106034119B (zh) * | 2015-03-16 | 2019-01-04 | 阿里巴巴集团控股有限公司 | 应用安装包的加密混淆方法及装置 |
CN105512521A (zh) * | 2015-12-25 | 2016-04-20 | 北京奇虎科技有限公司 | 一种软件安装包的加固保护方法和*** |
CN105740703A (zh) * | 2016-01-29 | 2016-07-06 | 北京奇虎科技有限公司 | 一种应用程序的加固方法及装置 |
CN107169370A (zh) * | 2017-04-21 | 2017-09-15 | 广州优视网络科技有限公司 | 可执行文件的加密方法及加密装置 |
WO2019080112A1 (zh) * | 2017-10-27 | 2019-05-02 | 福建联迪商用设备有限公司 | 一种基于 Ukey 的软件解密的方法及终端 |
-
2018
- 2018-07-23 CN CN201810811830.0A patent/CN109062582B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101634992A (zh) * | 2009-06-11 | 2010-01-27 | 上海交通大学 | Ntfs文件***下轻量级文件加密及其解密恢复方法 |
CN104809414A (zh) * | 2015-05-04 | 2015-07-29 | 深圳市创世达实业有限公司 | 一种防止冷启动攻击的u盘加密密钥存放方法 |
CN105978876A (zh) * | 2016-05-11 | 2016-09-28 | 杭州图南电子有限公司 | 一种应用在广播通讯中的指令加密方法 |
CN106599629A (zh) * | 2016-12-16 | 2017-04-26 | Tcl集团股份有限公司 | 一种安卓应用程序加固方法及装置 |
Non-Patent Citations (3)
Title |
---|
AXI总线加密模块的设计与验证;贺依盟 等;《杭州电子科技大学学报(自然科学版)》;20160115;第36卷(第1期);第57-62页 * |
PE可执行文件通用加密工具的设计与实现;张建明 等;《计算机***应用》;20040805(第8期);第19-22页 * |
Scalable, Cluster-based Anti-replay Protection for Wireless Sensor Networks;David R. Raymond 等;《In Proceedings of the 2007 IEEE SMC Information Assurance and Security Workshop》;20070709;第127-134页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109062582A (zh) | 2018-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109062582B (zh) | 一种应用安装包的加密方法及装置 | |
CN106971098B (zh) | 一种防重打包的方法及其装置 | |
CN108229112B (zh) | 一种保护应用程序、应用程序的运行方法以及装置 | |
US20080216071A1 (en) | Software Protection | |
CN110033261B (zh) | 区块链数据处理方法、装置及*** | |
US20080270806A1 (en) | Execution Device | |
CN111008034B (zh) | 一种补丁生成方法及装置 | |
CN110309630B (zh) | 一种Java代码加密方法及装置 | |
CN111897623B (zh) | 一种集群管理方法、装置、设备及存储介质 | |
CN112069468B (zh) | 一种页面动态水印的方法及设备 | |
CN114327791B (zh) | 基于虚拟化的可信计算度量方法、装置、设备和存储介质 | |
KR101863325B1 (ko) | 역공학 방지 방법 및 장치 | |
CN111090425B (zh) | 一种程序封装方法、装置及电子设备 | |
CN112579955A (zh) | 一种页面访问方法、设备、介质及电子设备 | |
CN109409037B (zh) | 一种数据混淆规则的生成方法、装置及设备 | |
CN111813460A (zh) | 一种应用程序配套文件的存取方法、装置、设备及存储介质 | |
CN113220314B (zh) | App资源加载及apk生成方法、装置、设备及介质 | |
CN114840822A (zh) | 代码保护方法、装置、设备及存储介质 | |
CN110764782B (zh) | 软件的保护方法及装置 | |
KR102039380B1 (ko) | 공유 오브젝트의 코드 보호를 위한 보안 제공 장치와 방법, 및 보안 실행 장치와 방법 | |
CN106897588B (zh) | 一种标签函数的处理方法及装置 | |
CN110968879A (zh) | 基于区块链的数据处理方法及装置 | |
CN116700841B (zh) | 一种原生api调用的方法及装置 | |
CN117251234B (zh) | 基于补丁的函数调用方法及装置 | |
CN117492900A (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 |