CN104077504B - 一种应用程序加密的方法及装置 - Google Patents
一种应用程序加密的方法及装置 Download PDFInfo
- Publication number
- CN104077504B CN104077504B CN201310096196.4A CN201310096196A CN104077504B CN 104077504 B CN104077504 B CN 104077504B CN 201310096196 A CN201310096196 A CN 201310096196A CN 104077504 B CN104077504 B CN 104077504B
- Authority
- CN
- China
- Prior art keywords
- character string
- application program
- language form
- language
- encrypted
- 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
- 238000000034 method Methods 0.000 title claims abstract description 35
- 230000006870 function Effects 0.000 claims description 40
- 238000012795 verification Methods 0.000 claims description 32
- 239000000203 mixture Substances 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 5
- 238000002372 labelling Methods 0.000 description 12
- 238000005336 cracking Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 229940104697 arixtra Drugs 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- KANJSNBRCNMZMV-ABRZTLGGSA-N fondaparinux Chemical compound O[C@@H]1[C@@H](NS(O)(=O)=O)[C@@H](OC)O[C@H](COS(O)(=O)=O)[C@H]1O[C@H]1[C@H](OS(O)(=O)=O)[C@@H](O)[C@H](O[C@@H]2[C@@H]([C@@H](OS(O)(=O)=O)[C@H](O[C@H]3[C@@H]([C@@H](O)[C@H](O[C@@H]4[C@@H]([C@@H](O)[C@H](O)[C@@H](COS(O)(=O)=O)O4)NS(O)(=O)=O)[C@H](O3)C(O)=O)O)[C@@H](COS(O)(=O)=O)O2)NS(O)(=O)=O)[C@H](C(O)=O)O1 KANJSNBRCNMZMV-ABRZTLGGSA-N 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
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/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
Abstract
本发明公开一种应用程序加密的方法及装置,涉及电子产品应用程序技术领域,可以降低应用程序的可破解性,提高安全保护性。本发明通过确定应用程序中待加密的第一语言格式的字符序列;将所述第一语言格式的字符序列转换为第二语言格式的字符序列,所述第一语言格式与第二语言格式不同;对所述第二语言格式的字符序列进行加密,获得加密应用程序。本发明提供的实施例适于对应用程序加密时采用。
Description
技术领域
本发明涉及电子产品应用程序技术领域,尤其涉及一种应用程序加密的方法及装置。
背景技术
目前,由Google公司主导开发的安卓Android操作系统已经得到越来越快地应用,同时Android应用程序的数量也在不断增长。现有技术中Android终端中应用的Android应用程序一般采用Java语言进行软件开发,源代码被编译为Java类文件,再通过Android软件开发工具包(Software Development kit,SDK)中的攻击转换为dex格式的二进制可执行文件,与软件配置、资源文件等打包为apk格式文件,apk格式文件即Android应用程序安装包。用户下载apk格式文件,并安装到Android终端中即可正常使用。
Android是一个源代码完全开放的操作系统,无论是DEX格式文件的指令编码方式,还是Dalvik虚拟机的工作原理,都已被人们所知。目前,Android应用程序由于采用Java语言进行开发,通过Dalvik虚拟机解释执行,解释执行之后的Java代码进行反编译后的代码具有很强的可读性,导致Android应用程序容易被破解。
发明内容
本发明的实施例提供一种应用程序加密的方法及装置,可以降低应用程序的可破解性,提高安全保护性。
第一方面,本发明提供一种应用程序加密的方法,包括:
确定应用程序中待加密的第一语言格式的字符序列;
将所述第一语言格式的字符序列转换为第二语言格式的字符序列,所述第一语言格式与第二语言格式不同;
对所述第二语言格式的字符序列进行加密,获得加密应用程序。
在第一种可能的实施例中,结合第一方面,所述确定应用程序中待加密的第一语言格式的字符序列包括:
根据所述应用程序中第一函数前添加的预设标记,确定所述应用程序中第一函数为所述待加密的第一语言格式的字符序列,所述第一函数为所述应用程序中任一个函数;或者,
根据所述应用程序中的一段第一语言格式的字符序列前后添加的预设标记,确定所述应用程序中此段所述第一语言格式的字符序列为所述待加密的第一语言格式的字符序列。
在第二种可能的实施例中,结合第一方面,所述对所述第二语言格式的字符序列进行加密,获得加密应用程序包括:
在所述第二语言格式的字符序列中添加对所述应用程序的签名验证,所述签名验证包括至少两个字符组成的第一字符串,获得加密应用程序。
在第三种可能的实施例中,结合第一方面中第二种可能的实施例,所述对所述第二语言格式的字符序列进行加密,获得加密应用程序包括:
确定在所述第二语言格式的字符序列中需要添加的对所述应用程序的签名验证,所述签名验证包括至少两个字符组成的第一字符串;
对所述签名验证中包括的所述第一字符串进行处理,获得第二字符串,所述第二字符串与所述第一字符串不同;
在所述第二语言格式的字符序列中添加所述第二字符串,获得加密应用程序。
在第四种可能的实施例中,结合第一方面所述对所述第二语言格式的字符序列进行加密,获得加密应用程序包括:
在所述第二语言格式的字符序列中添加预设密码,获得加密应用程序。
在第五种可能的实施例中,结合第一方面中以上任一种可能的实施例,在所述对所述第二语言格式的字符序列进行加密之后,还包括:
将加密的第二语言格式的字符序列保存在第一文件中,所述第一文件为动态链接库文件。
第二方面,本发明提供一种应用程序加密的装置,包括:
字符序列确定单元,用于确定应用程序中待加密的第一语言格式的字符序列;
转换单元,用于将所述第一语言格式的字符序列转换为第二语言格式的字符序列,所述第一语言格式与第二语言格式不同;
加密单元,用于对所述第二语言格式的字符序列进行加密,获得加密应用程序。
在第一种可能的实施例中,结合第二方面,所述字符序列确定单元,用于根据所述应用程序中第一函数前添加的预设标记,确定所述应用程序中第一函数为所述待加密的第一语言格式的字符序列,所述第一函数为所述应用程序中任一个函数;或者,
根据所述应用程序中的一段第一语言格式的字符序列前后添加的预设标记,确定所述应用程序中此段所述第一语言格式的字符序列为所述待加密的第一语言格式的字符序列。
在第二种可能的实施例中,结合第二方面,所述加密单元包括:
第一加密模块,用于在所述第二语言格式的字符序列中添加对所述应用程序的签名验证,所述签名验证包括至少两个字符组成的第一字符串,获得加密应用程序。
在第三种可能的实施例中,结合第二方面中第二种可能的实施例,所述加密单元包括:
确定模块,用于确定在所述第二语言格式的字符序列中需要添加的对所述应用程序的签名验证,所述签名验证包括至少两个字符组成的第一字符串;
处理模块,用于对所述签名验证中包括的所述第一字符串进行处理,获得第二字符串,所述第二字符串与所述第一字符串不同;
第二加密模块,用于在所述第二语言格式的字符序列中添加所述第二字符串,获得加密应用程序。
在第四种可能的实施例中,结合第二方面,所述加密单元包括:
第三加密模块,用于在所述第二语言格式的字符序列中添加预设密码,获得加密应用程序。
在第五种可能的实施例中,结合第二方面中以上任一种可能的实施例,所述装置还包括:
保存单元,用于将加密的第二语言格式的字符序列保存在第一文件中,所述第一文件为动态链接库文件。
本发明实施例提供一种应用程序加密的方法及装置,通过确定应用程序中待加密的第一语言格式的字符序列;将所述第一语言格式的字符序列转换为第二语言格式的字符序列,所述第一语言格式与第二语言格式不同;对所述第二语言格式的字符序列进行加密,获得加密应用程序。与现有技术中采用Java语言进行开发,通过Dalvik虚拟机解释执行,解释执行之后的Java代码进行反编译后的代码具有很强的可读性,导致Android应用程序容易被破解相比,本发明通过将第一语言格式的字符序列转换为第二语言格式的字符序列,并对第二语言格式的字符序列进行加密,可以降低应用程序的可破解性,提高安全保护性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1提供的一种应用程序加密的方法的流程图;
图2为本发明实施例1提供的另一种应用程序加密的方法的流程图;
图3为本发明实施例2提供的一种应用程序加密的装置的框图;
图4为本发明实施例2提供的另一种应用程序加密的装置的框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本发明实施例提供一种应用程序加密的方法,如图1所示,该方法包括:
步骤101,确定应用程序中待加密的第一语言格式的字符序列;
在本实施例中,第一语言格式的字符序列可以为高级语言的字符序列。由于Android应用程序大部分采用Java语言进行开发,因此第一语言格式的字符序列可以为Java字符序列,Java字符序列也可以称为Java代码。当然本发明不限制第一语言格式的字符序列的语言类型。
可选的,确定应用程序中待加密的第一语言格式的字符序列可以采用以下方式:方式一,预先在应用程序中第一函数前添加标记;根据应用程序中第一函数前添加的预设标记,确定应用程序中第一函数为待加密的第一语言格式的字符序列,其中,第一函数为应用程序中任一个函数;方式二:预先在应用程序中一段第一语言格式的字符序列前后添加标记,即将需要加密的一段第一语言格式的字符序列的开始和结束处添加标记,根据所述应用程序中的一段第一语言格式的字符序列前后添加的预设标记,确定所述应用程序中此段所述第一语言格式的字符序列为所述待加密的第一语言格式的字符序列。
优选的,第一函数为应用程序中较重要的函数,加密的一段第一语言格式的字符序列为应用程序中较重要的一段字符序列,这样对重要的函数或者第一语言格式的字符序列进行加密后,可以防止容易获取应用程序中重要的内容,并且防止应用程序被破解。
步骤102,将所述第一语言格式的字符序列转换为第二语言格式的字符序列,所述第一语言格式与第二语言格式不同;
在本实施例中,第二语言格式的字符序列可以为次高级语言的字符序列,例如,第二语言格式的字符序列可以为C语言的字符序列,C语言字符序列也可以称为C语言代码。当然本发明不限制第二语言格式的字符序列的语言类型。
需要说明的是,在编程语言中,第一语言格式的字符序列比第二语言格式的字符序列高级。编程语言的源程序经过编译可以转换为可执行文件,反编译即为相反的过程,即将机器码进行反编译获得编程语言。采用Java字符序列获得的应用程序,可以通过Dalvik虚拟机解释执行。Java字符序列经过反编译后具有很强的可读性,因此Java字符序列经过反编译后很容易被破解,因此安全性较低。C语言字符序列编译后的二进制代码是可以直接在CPU上执行的机器码,C语言字符序列反编译后可读性非常差,因此C语言字符序列经过反编译后不容易被破解,因此安全性较高。
步骤103,对所述第二语言格式的字符序列进行加密,获得加密应用程序。
在本实施例中,对第二语言格式的字符序列进行加密,可以使得第二语言格式的字符序列经过反编译后更不容易进行破解,更加程序语言的安全性。
本发明实施例提供一种应用程序加密的方法,通过将应用程序中部分第一语言格式的字符序列转换为第二语言格式的字符序列,并对第二语言格式的字符序列进行加密,使得可以降低应用程序的可破解性,提高安全保护性。
本发明实施例提供另一种应用程序加密的方法,如图2所示,该方法包括:
步骤201,在应用程序中对需要加密的第一语言格式的字符序列添加标记。
在本步骤中,应用程序可以为任一Android应用程序,在Android应用程序中大部分采用Java字符序列进行开发,因此第一语言格式的字符序列可以为Java字符序列,Java字符序列也可以称为Java代码。当然本发明不限制第一语言格式的字符序列的语言类型。
可选的,在应用程序中对需要加密的Java字符序列添加标记时可以采用以下方式:
方式一,在应用程序中第一函数前添加标记。需要说明的是,第一函数可以为应用程序中任一函数。可选的,第一函数可以为应用程序中比较重要的函数,可以防止容易获取应用程序中重要的内容,并且防止应用程序被破解。
方式二:在应用程序中第一Java字符序列前后添加标记,即将需要加密的一段Java字符序列的开始和结束处添加标记。需要说明的是,第一Java字符序列可以为应用程序中任一段Java字符序列。可选的,第一Java字符序列可以为应用程序中比较重要的Java字符序列,可以防止容易获取应用程序中重要的内容,并且防止应用程序被破解。当然,本发明并不限制对需要加密的Java字符序列添加标记的方式。
可选的,在应用程序中对需要加密的Java字符序列添加的标记可以为Dalvik虚拟机可以识别的标记。
步骤202,确定应用程序中待加密的Java字符序列。
在本步骤中,确定应用程序中待加密的Java字符序列时可以采用以下方式:
方式一:根据应用程序中第一函数前添加的预设标记,确定应用程序中第一函数为待加密的Java字符序列,其中,第一函数为应用程序中任一个函数;
方式二:根据应用程序中第一Java字符序列前后添加的预设标记,确定应用程序中第一Java字符序列为待加密的Java字符序列,第一Java字符序列为所述应用程序中任一段Java字符序列。当然,本发明并不限制确定应用程序中待加密的Java字符序列的方式。
步骤203,将所述第一语言格式的字符序列转换为第二语言格式的字符序列,所述第一语言格式与第二语言格式不同。
在本实施例中,第一语言格式的字符序列可以为高级语言的字符序列,第二语言格式的字符序列可以为次高级语言的字符序列,例如,第二语言格式的字符序列可以为C语言的字符序列,C语言字符序列也可以称为C语言代码。当然本发明不限制第二语言格式的字符序列的语言类型。
需要说明的是,在编程语言中,第一语言格式的字符序列比第二语言格式的字符序列高级。编程语言的源程序经过编译可以转换为可执行文件,反编译即为相反的过程,即将机器码进行反编译获得编程语言。采用Java字符序列获得的应用程序,可以通过Dalvik虚拟机解释执行。Java字符序列经过反编译后具有很强的可读性,因此Java字符序列经过反编译后很容易被破解,因此安全性较低。C语言字符序列编译后的二进制代码是可以直接在CPU上执行的机器码,C语言字符序列反编译后可读性非常差,因此C语言字符序列经过反编译后不容易被破解,因此安全性较高。
在本步骤中,将所述第一语言格式的字符序列转换为第二语言格式的字符序列,包括:接收用户发送的将所述第一语言格式的字符序列转换为第二语言格式的字符序列。即用户获取确定待加密的Java字符序列之后,手动将Java字符序列翻译为C语言的字符序列,并将C语言的字符序列上传给本系统。或者,采用第一方式自动将所述第一语言格式的字符序列转换为第二语言格式的字符序列,第一方式为包括自动翻译功能的插件。例如,采用预编译的方式将Java字符序列自动翻译为C语言的字符序列。可选的,在需要预编译的Java字符序列前增加一个预处理声明标记,然后通过采用Eclipse插件通过预编译的方式将Java字符序列自动翻译为C语言的字符序列,Eclipse插件可以识别此预处理声明标记,并具备自动翻译功能。当然,本发明实施例不限制将第一语言格式的字符序列转换为第二语言格式的字符序列的方式。
步骤204,对所述第二语言格式的字符序列进行加密,获得加密应用程序。
在本步骤中,对第二语言格式的字符序列进行加密,获得加密应用程序可以采用以下方式:
方式一:在C语言字符序列中添加预设密码,获得加密应用程序。预设密码可以为预设字符串,例如英文字符、数字或者英文和数字混合组成的字符串。
方式二:在C语言字符序列中添加对应用程序的签名验证,所述签名验证包括至少两个字符组成的第一字符串,获得加密应用程序。具体的,签名验证可以为数字签名验证,其中,签名验证为两种的互补运算,包括签名以及验证。在本实施例中,具体指在C语言字符序列中添加对应用程序的签名,当安装或者运行此应用程序时,则需要对此应用程序进行验证。当验证正确时,可以对应用程序进行安装或者运行,当验证错误时,则结束对应用程序的安装或者运行。
方式三:确定在C语言字符序列中需要添加的对应用程序的签名验证,签名验证包括至少两个字符组成的第一字符串;对签名验证中包括的第一字符串进行处理,获得第二字符串,所述第二字符串与所述第一字符串不同;在C语言字符序列中添加第二字符串,获得加密应用程序。
方式三采用的加密方式为对方式二的进一步处理,使得安全性更好。其中对签名验证中包括的第一字符串进行处理可以为对签名验证中包括的第一字符串进行散列处理,散列处理为对所述第一字符串中的各个字符串重新排序,并组成新的字符串,所述新的字符串为第二字符串。
需要说明的是,当对应用程序进行反编译时,有时可以获得此应用程序的签名验证方式,容易获得签名的第一字符串,当对第一字符串进行进一步处理之后,获得重新排序的第二字符串,并采用第二字符串进行加密,使得即使反编译后获得应用程序的签名验证方式,也很困难获得真正加密采用的字符串,因此应用程序安全性较高。
进一步的,将获得的加密后的C语言字符序列保存在第一文件中,所述第一文件为动态链接库文件。可选的,将获得的加密后的C语言字符序列保存在S0库中,S0库为一种linux下的动态链接库文件,S0库为采用C语言开发的。
需要说明的是,应用程序中除待加密的Java字符序列之外的Java字符序列,以及加密后的C语言的字符序列构成加密应用程序。当需要应用此应用程序时,Dalvik虚拟机解释执行到待加密的Java字符序列时,可以动态链接到S0库中执行加密后的C语言字符序列。
本发明实施例提供一种应用程序加密的方法,通过将应用程序中部分第一语言格式的字符序列转换为第二语言格式的字符序列,并对第二语言格式的字符序列进行加密,使得可以降低应用程序的可破解性,提高安全保护性。
实施例2
本发明实施例提供一种应用程序加密的装置,如图3所示,该装置包括:字符序列确定单元301,转换单元302,加密单元303。
字符序列确定单元301,用于确定应用程序中待加密的第一语言格式的字符序列;
第一语言格式的字符序列可以为Java字符序列,Java字符序列也可以称为Java代码。当然本发明不限制第一语言格式的字符序列的语言类型。
转换单元302,用于将所述第一语言格式的字符序列转换为第二语言格式的字符序列,所述第一语言格式与第二语言格式不同;
第二语言格式的字符序列可以为C语言字符序列,C语言字符序列也可以称为C代码。当然本发明不限制第二语言格式的字符序列的语言类型。
加密单元303,用于对所述第二语言格式的字符序列进行加密,获得加密应用程序。
进一步可选的,所述字符序列确定单元301用于:根据所述应用程序中第一函数前添加的预设标记,确定所述应用程序中第一函数为所述待加密的第一语言格式的字符序列,所述第一函数为所述应用程序中任一个函数;或者,
根据所述应用程序中的一段第一语言格式的字符序列前后添加的预设标记,确定所述应用程序中此段所述第一语言格式的字符序列为所述待加密的第一语言格式的字符序列。
进一步可选的,如图4所示,所述加密单元303包括:第一加密模块3031,确定模块3032,处理模块3033,第二加密模块3034,第三加密模块3035。
对所述第二语言格式的字符序列进行加密可以采用以下方式:
方式一:第一加密模块3031,用于在所述第二语言格式的字符序列中添加对所述应用程序的签名验证,所述签名验证包括至少两个字符组成的第一字符串,获得加密应用程序。
方式二:确定模块3032,用于确定在所述第二语言格式的字符序列中需要添加的对所述应用程序的签名验证,所述签名验证包括至少两个字符组成的第一字符串;
处理模块3033,用于对所述签名验证中包括的所述第一字符串进行处理,获得第二字符串,所述第二字符串与所述第一字符串不同;例如,可以为对所述签名验证中包括的所述第一字符串进行散列处理,所述散列处理为对所述第一字符串中的各个字符串重新排序,并组成新的字符串,所述新的字符串为第二字符串;
第二加密模块3034,用于在所述第二语言格式的字符序列中添加所述第二字符串,获得加密应用程序。
方式三:第三加密模块3035,用于在所述第二语言格式的字符序列中添加预设密码,获得加密应用程序。
可选的,如图4所示,该装置还包括:保存单元304。
其中,保存单元304,用于将加密的第二语言格式的字符序列保存在第一文件中,所述第一文件为动态链接库文件。
进一步可选的,所述转换单元302用于:采用第一方式自动将所述第一语言格式的字符序列转换为第二语言格式的字符序列;或者,接收用户发送的将所述第一语言格式的字符序列转换为第二语言格式的字符序列。
其中,所述第一方式为包括自动翻译功能的插件。
需要说明的是,附图3或者附图4所示装置中,其各个模块的具体实施过程以及各个模块之间的信息交互等内容,由于与本发明方法实施例基于同一发明构思,可以参见方法实施例,在此不一一赘述。
本发明实施例提供一种应用程序加密的装置,通过转换单元将应用程序中部分第一语言格式的字符序列转换为第二语言格式的字符序列,并采用加密单元对第二语言格式的字符序列进行加密,使得可以降低应用程序的可破解性,提高安全保护性。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (12)
1.一种应用程序加密的方法,其特征在于,包括:
确定应用程序中待加密的第一语言格式的字符序列;
将所述第一语言格式的字符序列转换为第二语言格式的字符序列,所述第一语言格式与第二语言格式不同;
对所述第二语言格式的字符序列进行加密,获得加密应用程序。
2.根据权利要求1所述的方法,其特征在于,所述确定应用程序中待加密的第一语言格式的字符序列包括:
根据所述应用程序中第一函数前添加的预设标记,确定所述应用程序中第一函数为所述待加密的第一语言格式的字符序列,所述第一函数为所述应用程序中任一个函数;或者,
根据所述应用程序中的一段第一语言格式的字符序列前后添加的预设标记,确定所述应用程序中此段所述第一语言格式的字符序列为所述待加密的第一语言格式的字符序列。
3.根据权利要求1所述的方法,其特征在于,所述对所述第二语言格式的字符序列进行加密,获得加密应用程序包括:
在所述第二语言格式的字符序列中添加对所述应用程序的签名验证,所述签名验证包括至少两个字符组成的第一字符串,获得加密应用程序。
4.根据权利要求3所述的方法,其特征在于,所述对所述第二语言格式的字符序列进行加密,获得加密应用程序包括:
确定在所述第二语言格式的字符序列中需要添加的对所述应用程序的签名验证,所述签名验证包括至少两个字符组成的第一字符串;
对所述签名验证中包括的所述第一字符串进行处理,获得第二字符串,所述第二字符串与所述第一字符串不同;
在所述第二语言格式的字符序列中添加所述第二字符串,获得加密应用程序。
5.根据权利要求1所述的方法,其特征在于,所述对所述第二语言格式的字符序列进行加密,获得加密应用程序包括:
在所述第二语言格式的字符序列中添加预设密码,获得加密应用程序。
6.根据权利要求1-5中任一项所述的方法,其特征在于,在所述对所述第二语言格式的字符序列进行加密之后,还包括:
将加密的第二语言格式的字符序列保存在第一文件中,所述第一文件为动态链接库文件。
7.一种应用程序加密的装置,其特征在于,包括:
字符序列确定单元,用于确定应用程序中待加密的第一语言格式的字符序列;
转换单元,用于将所述第一语言格式的字符序列转换为第二语言格式的字符序列,所述第一语言格式与第二语言格式不同;
加密单元,用于对所述第二语言格式的字符序列进行加密,获得加密应用程序。
8.根据权利要求7所述的装置,其特征在于,所述字符序列确定单元用于,
根据所述应用程序中第一函数前添加的预设标记,确定所述应用程序中第一函数为所述待加密的第一语言格式的字符序列,所述第一函数为所述应用程序中任一个函数;或者,
根据所述应用程序中的一段第一语言格式的字符序列前后添加的预设标记,确定所述应用程序中此段所述第一语言格式的字符序列为所述待加密的第一语言格式的字符序列。
9.根据权利要求7所述的装置,其特征在于,所述加密单元包括:
第一加密模块,用于在所述第二语言格式的字符序列中添加对所述应用程序的签名验证,所述签名验证包括至少两个字符组成的第一字符串,获得加密应用程序。
10.根据权利要求9所述的装置,其特征在于,所述加密单元包括:
确定模块,用于确定在所述第二语言格式的字符序列中需要添加的对所述应用程序的签名验证,所述签名验证包括至少两个字符组成的第一字符串;
处理模块,用于对所述签名验证中包括的所述第一字符串进行处理,获得第二字符串,所述第二字符串与所述第一字符串不同;
第二加密模块,用于在所述第二语言格式的字符序列中添加所述第二字符串,获得加密应用程序。
11.根据权利要求7所述的装置,其特征在于,所述加密单元包括:
第三加密模块,用于在所述第二语言格式的字符序列中添加预设密码,获得加密应用程序。
12.根据权利要求7-11中任一项所述的装置,其特征在于,所述装置还包括:
保存单元,用于将加密的第二语言格式的字符序列保存在第一文件中,所述第一文件为动态链接库文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310096196.4A CN104077504B (zh) | 2013-03-25 | 2013-03-25 | 一种应用程序加密的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310096196.4A CN104077504B (zh) | 2013-03-25 | 2013-03-25 | 一种应用程序加密的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104077504A CN104077504A (zh) | 2014-10-01 |
CN104077504B true CN104077504B (zh) | 2017-04-19 |
Family
ID=51598755
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310096196.4A Active CN104077504B (zh) | 2013-03-25 | 2013-03-25 | 一种应用程序加密的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104077504B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105930745A (zh) * | 2016-04-25 | 2016-09-07 | 北京珊瑚灵御科技有限公司 | 一种基于Android平台的字符串加固方法 |
CN107122631A (zh) * | 2017-04-26 | 2017-09-01 | 北京洋浦伟业科技发展有限公司 | 一种脚本文件的透明加密方法和装置 |
CN111460464B (zh) * | 2019-01-22 | 2023-04-25 | 阿里巴巴集团控股有限公司 | 数据加解密方法、装置、电子设备及计算机存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1604037A (zh) * | 2004-10-28 | 2005-04-06 | 威盛电子股份有限公司 | 程序编码方法及其系统 |
CN101158911A (zh) * | 2007-11-22 | 2008-04-09 | 北京飞天诚信科技有限公司 | .Net程序保护方法及装置 |
CN102346834A (zh) * | 2011-11-25 | 2012-02-08 | 武汉钢铁(集团)公司 | Java应用软件加密保护的方法 |
CN102708322A (zh) * | 2012-05-12 | 2012-10-03 | 北京深思洛克软件技术股份有限公司 | 安卓系统中java应用程序的保护方法 |
CN102779029A (zh) * | 2011-05-10 | 2012-11-14 | 北京磊友信息科技有限公司 | 一种对JavaScript代码加扰的方法及设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120159193A1 (en) * | 2010-12-18 | 2012-06-21 | Microsoft Corporation | Security through opcode randomization |
-
2013
- 2013-03-25 CN CN201310096196.4A patent/CN104077504B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1604037A (zh) * | 2004-10-28 | 2005-04-06 | 威盛电子股份有限公司 | 程序编码方法及其系统 |
CN101158911A (zh) * | 2007-11-22 | 2008-04-09 | 北京飞天诚信科技有限公司 | .Net程序保护方法及装置 |
CN102779029A (zh) * | 2011-05-10 | 2012-11-14 | 北京磊友信息科技有限公司 | 一种对JavaScript代码加扰的方法及设备 |
CN102346834A (zh) * | 2011-11-25 | 2012-02-08 | 武汉钢铁(集团)公司 | Java应用软件加密保护的方法 |
CN102708322A (zh) * | 2012-05-12 | 2012-10-03 | 北京深思洛克软件技术股份有限公司 | 安卓系统中java应用程序的保护方法 |
Non-Patent Citations (1)
Title |
---|
《Java类文件保护方法综述》;鲍福良 等;《计算机系统应用》;20070615;第102、124-126页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104077504A (zh) | 2014-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105683990B (zh) | 用于保护动态库的方法和装置 | |
CN103544414B (zh) | 一种Android系统应用的深度代码混淆方法 | |
CN104462959B (zh) | 一种安卓应用的加固保护方法、服务器和系统 | |
CN101908119B (zh) | 一种动态链接库dll文件的处理方法和装置 | |
US20180260199A1 (en) | Method and apparatus for intermediate representation of applications | |
CN104680039B (zh) | 一种应用程序安装包的数据保护方法及装置 | |
CN109614771A (zh) | 一种基于Java代码的混淆方法和装置 | |
CN106650341A (zh) | 基于smali流程混淆技术的Android应用加固方法 | |
CN106326693A (zh) | 应用程序的代码混淆方法及装置 | |
CN104866739A (zh) | 安卓系统中应用程序加密方法及系统 | |
CN108399319B (zh) | 源代码保护方法、应用服务器及计算机可读存储介质 | |
JP2018181350A (ja) | アプリケーションの保安性を評価する方法およびシステム | |
TW200939122A (en) | Non-native program execution across multiple execution environments | |
US20110271350A1 (en) | method for protecting software | |
CN103177199A (zh) | 网页应用代码保护方法及系统和执行的提速方法及系统 | |
WO2016024838A1 (ko) | 클라우드 기반의 애플리케이션 보안 서비스 제공 방법 및 시스템 | |
CN106559223B (zh) | 应用程序签名方法及装置 | |
CN104077504B (zh) | 一种应用程序加密的方法及装置 | |
WO2022078366A1 (zh) | 应用保护方法、装置、设备及介质 | |
CN109740314A (zh) | 一种swf混淆加密的方法 | |
CN106709281B (zh) | 补丁发放和获取方法、装置 | |
Senanayake et al. | Developing secured android applications by mitigating code vulnerabilities with machine learning | |
CN105873044A (zh) | 基于安卓平台的应用程序发布方法、开发者追溯方法和装置 | |
CN104462883A (zh) | 一种apk文件加固的方法 | |
CN111159712B (zh) | 检测方法、设备及存储介质 |
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 |