CN107092816A - 一种Android应用程序加固方法 - Google Patents
一种Android应用程序加固方法 Download PDFInfo
- Publication number
- CN107092816A CN107092816A CN201710107567.2A CN201710107567A CN107092816A CN 107092816 A CN107092816 A CN 107092816A CN 201710107567 A CN201710107567 A CN 201710107567A CN 107092816 A CN107092816 A CN 107092816A
- Authority
- CN
- China
- Prior art keywords
- application programs
- android application
- key
- ciphertext
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000002787 reinforcement Effects 0.000 title claims abstract description 18
- 230000007246 mechanism Effects 0.000 claims description 3
- 230000011514 reflex Effects 0.000 claims description 3
- 238000000682 scanning probe acoustic microscopy Methods 0.000 claims description 2
- 238000012795 verification Methods 0.000 abstract description 3
- 238000000034 method Methods 0.000 description 9
- 239000000243 solution Substances 0.000 description 7
- 230000008569 process Effects 0.000 description 5
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000003014 reinforcing effect Effects 0.000 description 1
- 239000012089 stop solution Substances 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
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
- H04L63/0442—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computing Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种Android应用程序加固方法,包括步骤:对需要保护的Android应用程序使用密钥进行加密;对密钥进行非对称加密得到密文;将密文截图成图片,以二进制流嵌入到另一张图片的文件尾部;将加密后的程序密文嵌入到解壳程序文件尾部;解壳程序运行时,验证服务器的数字证书,并取出密文图片;使用OCR识别把密文图片还原为字符串,从服务器中获得私钥,解密字符串得到密钥;使用密钥对加密后的Android应用程序解密;动态加载运行解密后的Android应用程序。本发明对移动应用程序的关键代码进行加密,同时结合远程服务器验证保证了程序不被篡改,达到了保护Android应用程序的目的。
Description
技术领域
本发明涉及软件信息安全领域,尤其涉及一种Android应用程序加固方法。
背景技术
近年来,智能手机在全球范围内迅速普及,正在占据着越来越多的手机市场份额。Android系统是Google于2007年11月5日宣布推出的基于Linux、开放源码的智能手机操作系统。至今,Android已成为最热门的移动终端开放平台之一。基于Android平台的应用程序代码经过编译器编译生成的Android应用压缩包APK,即Android Package的缩写,它包含了Android程序运行时所必需的代码文件、资源、配置信息等。APK极容易被进行逆向攻击,被攻击的Android应用程序就可能被植入广告、后门,甚至带有窃取用户隐私数据、恶意扣费等行为,给用户造成了损失。
针对Android平台的应用面临被逆向工程和篡改的威胁,目前,研究人员已经提出了一些应用加固方法,并且现在的Android平台应用程序保护技术中,软件加壳技术、完整性检验等技术已被应用其中。但是由于Android平台诞生时间较短,软件保护技术方面尚处于起步阶段,同时由于加密算法的简单、密钥保护不足等原因,导致了很多加固的Android应用程序被攻击。
发明内容
为克服现有技术的不足,本发明提出一种Android应用程序加固方法。
本发明的技术方案是这样实现的:
一种Android应用程序加固方法,包括步骤
S1:对需要保护的Android应用程序使用密钥K进行加密,将源程序的hash值保存到服务器;
S2:对密钥K进行非对称加密得到密文T,将私钥PK保存到服务器;
S3:将密文T截图成图片,以二进制流嵌入到另一张图片的文件尾部;
S4:将加密后的程序密文嵌入到解壳程序dex文件尾部,将签名打包,并数字证书上传到服务器中;
S5:解壳程序运行时,验证服务器的数字证书,并取出密文图片;
S6:使用OCR识别把密文图片还原为字符串,从服务器中获得私钥PK,解密字符串得到密钥K;
S7:使用密钥K对加密后的Android应用程序解密,验证服务器返回的hash值;
S8:动态加载运行解密后的Android应用程序。
进一步地,步骤S1中对Android应用程序加密的算法是AES算法,对Android应用程序的hash加密算法是MD5算法,所述MD5值保存于服务器中。
进一步地,步骤S2中,对密钥K进行非对称加密的算法是RSA算法,RSA私钥保存于服务器中。
进一步地,步骤S3中,密文图片二进制流潜入的图片为Android应用程序的源程序资源文件的任意一张图片。嵌入图片后,图片的体积变化不大,且能正常显示。
进一步地,步骤S4中对破壳程序签名的数字证书来源为可靠的发行机构,同时把数字证书上传到服务器中。
进一步地,步骤S5中还包括步骤:若验证服务器的数字证书不通过,则强制停止解壳程序的运行。
进一步地,步骤S7中还包括步骤:若验证hash值不通过,则强制停止解密Android应用程序。
进一步地,步骤S8还包括步骤,通过java反射机制运行Android应用程序。
本发明的有益效果在于,与现有技术相比,本发明对移动应用程序的关键代码进行加密,同时结合远程服务器验证保证了程序不被篡改,达到了保护Android应用程序的目的。
附图说明
图1是本发明一种Android应用程序加固方法流程图;
图2是本发明对Android应用程序进行加壳的流程图;
图3是本发明对Android应用程序运行时解密的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,本发明一种Android应用程序加固方法,包括步骤
S1:对需要保护的Android应用程序使用密钥K进行加密,将源程序的hash值保存到服务器;
S2:对密钥K进行非对称加密得到密文T,将私钥PK保存到服务器;
S3:将密文T截图成图片,以二进制流嵌入到另一张图片的文件尾部;
S4:将加密后的程序密文嵌入到解壳程序dex文件尾部,将签名打包,并数字证书上传到服务器中;
S5:解壳程序运行时,验证服务器的数字证书,并取出密文图片;
S6:使用OCR识别把密文图片还原为字符串,从服务器中获得私钥PK,解密字符串得到密钥K;
S7:使用密钥K对加密后的Android应用程序解密,验证服务器返回的hash值;
S8:动态加载运行解密后的Android应用程序。
本发明一种Android应用程序加固方法包含两个主要步骤:加壳过程和解壳过程。其中加壳过程主要在计算机端进行,图2是加壳的流程图,具体步骤如下:
(1)先计算要加固的Android应用程序source.apk的MD5值,在本计算机安装Apache服务器,把计算好的MD5值放在服务器上;
(2)使用AES算法加密source.apk的二进制流,其中AES算法使用的密钥为K;
(3)对密钥K使用RSA加密再转为十六进制文本格式,获得密文T,同时把RSA的私钥PK放在Apache服务器上;
(4)把密文T写在记事本上对其进行截图保存为jpg文件,为保证OCR技术能顺利识别,截图应该清晰,不应含有干扰因素,截图的jpg文件转为二进制流嵌入壳程序资源文件的图标图片中,把嵌入密文图片后的图标图片覆盖壳程序资源文件中的图标图片;
(5)由步骤(2)得到的源程序加密密文嵌入壳程序dex文件尾部得到classes.dex,修复dex文件头,把classes.dex覆盖编译生成的解壳程序apk里面的classes.dex,然后对覆盖后的apk签名打包,数字证书上传到服务器中。
解壳过程主要在Android手机端进行,图3为Android程序加固后运行的解壳的流程图,该过程主要是解壳程序的编写,具体步骤如下:
(1)由Apache服务器返回的数字证书验证通过后,解壳程序的第一步就是从其资源文件的logo图片取出密文的二进制流,并还原为密文图片KP;
(2)接下来就是运行OCR识别模块,本示例使用的是tess-two,把密文图片KP中的密文T识别为字符串;
(3)从Apache服务器中返回私钥PK,对上一步的密文T进行RSA解密,得到源程序AES加密的密钥K;
(4)解壳程序从合并后的classes.dex文件取出加密后的apk文件二进制流,使用上一步得到的密钥K对二进制流进行解密,同时把解密二进制流转为apk文件;
(5)Apache服务器返回源程序的MD5值,验证通过就动态加载source.apk,然后利用java的反射机制运行该程序。
现有的Android应用程序保护技术存在密钥特征明显容易被破解或加密算法过于简单等问题,本发明具有下面的优点:
1.现有的技术中用加密算法对源代码进行加密,但其密钥大多是被嵌入壳程序的dex文件中,密钥容易被识别且被取出,给程序的安全性带来一定的隐患。本发明提出的密钥用非对称加密算法进一步加密,同时把加密后的密文保存为图片嵌入资源文件的图片中,嵌入后的图片只比原来的图片多了几十KB,不容易被攻击者发现,提高了密钥的安全性;
2.结合服务器验证,对壳程序的数字证书进行验证和对源程序的hash值进行验证,保证了加固后的程序不被篡改,有效地防止二次打包攻击的发生。同时把密钥非对称加密的私钥放在了远程服务器验证,进一步大大提高了密钥的安全性。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (8)
1.一种Android应用程序加固方法,其特征在于,包括步骤
S1:对需要保护的Android应用程序使用密钥K进行加密,将源程序的hash值保存到服务器;
S2:对密钥K进行非对称加密得到密文T,将私钥PK保存到服务器;
S3:将密文T截图成图片,以二进制流嵌入到另一张图片的文件尾部;
S4:将加密后的程序密文嵌入到解壳程序dex文件尾部,将签名打包,并数字证书上传到服务器中;
S5:解壳程序运行时,验证服务器的数字证书,并取出密文图片;
S6:使用OCR识别把密文图片还原为字符串,从服务器中获得私钥PK,解密字符串得到密钥K;
S7:使用密钥K对加密后的Android应用程序解密,验证服务器返回的hash值;
S8:动态加载运行解密后的Android应用程序。
2.如权利要求1所述的Android应用程序加固方法,其特征在于,步骤S1中对Android应用程序加密的算法是AES算法,对Android应用程序的hash加密算法是MD5算法,所述MD5值保存于服务器中。
3.如权利要求1所述的Android应用程序加固方法,其特征在于,步骤S2中,对密钥K进行非对称加密的算法是RSA算法,RSA私钥保存于服务器中。
4.如权利要求1所述的Android应用程序加固方法,其特征在于,步骤S3中,密文图片二进制流潜入的图片为Android应用程序的源程序资源文件的任意一张图片。
5.如权利要求1所述的Android应用程序加固方法,其特征在于,步骤S4中对破壳程序签名的数字证书来源为可靠的发行机构,且所述数字证书上传在服务器中。
6.如权利要求1所述的Android应用程序加固方法,其特征在于,步骤S5中还包括步骤:若验证服务器的数字证书不通过,则强制停止解壳程序的运行。
7.如权利要求1所述的Android应用程序加固方法,其特征在于,步骤S7中还包括步骤:若验证hash值不通过,则强制停止解密Android应用程序。
8.如权利要求1所述的Android应用程序加固方法,其特征在于,步骤S8还包括步骤,通过java反射机制运行Android应用程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710107567.2A CN107092816B (zh) | 2017-02-27 | 2017-02-27 | 一种Android应用程序加固方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710107567.2A CN107092816B (zh) | 2017-02-27 | 2017-02-27 | 一种Android应用程序加固方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107092816A true CN107092816A (zh) | 2017-08-25 |
CN107092816B CN107092816B (zh) | 2020-07-28 |
Family
ID=59648797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710107567.2A Active CN107092816B (zh) | 2017-02-27 | 2017-02-27 | 一种Android应用程序加固方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107092816B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107707357A (zh) * | 2017-10-10 | 2018-02-16 | 武汉斗鱼网络科技有限公司 | 应用二次打包检测方法、存储介质、电子设备及系统 |
CN108875385A (zh) * | 2018-05-07 | 2018-11-23 | 麒麟合盛网络技术股份有限公司 | 应用间通信的方法及装置 |
CN108900472A (zh) * | 2018-05-31 | 2018-11-27 | 北京五八信息技术有限公司 | 信息的传输方法和装置 |
CN109165029A (zh) * | 2018-08-27 | 2019-01-08 | 北京奇虎科技有限公司 | 实现下载运行付费应用的方法、服务器和装置 |
WO2019134272A1 (zh) * | 2018-01-05 | 2019-07-11 | 武汉斗鱼网络科技有限公司 | 应用安装包二次打包检测方法、存储介质、设备及系统 |
CN111246279A (zh) * | 2018-11-28 | 2020-06-05 | 驰众信息技术(上海)有限公司 | 一种加密广告播放系统及方法 |
CN111868724A (zh) * | 2017-12-12 | 2020-10-30 | 约翰·阿尔梅达 | 病毒免疫计算机系统和方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102236757A (zh) * | 2011-06-30 | 2011-11-09 | 北京邮电大学 | 一种适用于Android系统的软件保护方法及系统 |
CN103442156A (zh) * | 2013-08-20 | 2013-12-11 | 宁波大学 | 基于移动智能终端的图像隐写和秘密信息提取方法 |
US20150013013A1 (en) * | 2013-06-05 | 2015-01-08 | Tencent Technology (Shenzhen) Company Limited | Encryption Recommendation Method and Encryption Recommendation Device |
CN104573490A (zh) * | 2013-10-29 | 2015-04-29 | 桂林电子科技大学 | Android平台上已安装软件保护方法 |
CN104680083A (zh) * | 2015-03-19 | 2015-06-03 | 福州瑞芯微电子有限公司 | 一种图片管理方法及装置 |
-
2017
- 2017-02-27 CN CN201710107567.2A patent/CN107092816B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102236757A (zh) * | 2011-06-30 | 2011-11-09 | 北京邮电大学 | 一种适用于Android系统的软件保护方法及系统 |
US20150013013A1 (en) * | 2013-06-05 | 2015-01-08 | Tencent Technology (Shenzhen) Company Limited | Encryption Recommendation Method and Encryption Recommendation Device |
CN103442156A (zh) * | 2013-08-20 | 2013-12-11 | 宁波大学 | 基于移动智能终端的图像隐写和秘密信息提取方法 |
CN104573490A (zh) * | 2013-10-29 | 2015-04-29 | 桂林电子科技大学 | Android平台上已安装软件保护方法 |
CN104680083A (zh) * | 2015-03-19 | 2015-06-03 | 福州瑞芯微电子有限公司 | 一种图片管理方法及装置 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107707357A (zh) * | 2017-10-10 | 2018-02-16 | 武汉斗鱼网络科技有限公司 | 应用二次打包检测方法、存储介质、电子设备及系统 |
CN111868724A (zh) * | 2017-12-12 | 2020-10-30 | 约翰·阿尔梅达 | 病毒免疫计算机系统和方法 |
WO2019134272A1 (zh) * | 2018-01-05 | 2019-07-11 | 武汉斗鱼网络科技有限公司 | 应用安装包二次打包检测方法、存储介质、设备及系统 |
CN108875385A (zh) * | 2018-05-07 | 2018-11-23 | 麒麟合盛网络技术股份有限公司 | 应用间通信的方法及装置 |
CN108900472A (zh) * | 2018-05-31 | 2018-11-27 | 北京五八信息技术有限公司 | 信息的传输方法和装置 |
CN108900472B (zh) * | 2018-05-31 | 2021-11-30 | 北京五八信息技术有限公司 | 信息的传输方法和装置 |
CN109165029A (zh) * | 2018-08-27 | 2019-01-08 | 北京奇虎科技有限公司 | 实现下载运行付费应用的方法、服务器和装置 |
CN111246279A (zh) * | 2018-11-28 | 2020-06-05 | 驰众信息技术(上海)有限公司 | 一种加密广告播放系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107092816B (zh) | 2020-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107092816A (zh) | 一种Android应用程序加固方法 | |
AU2021203184B2 (en) | Transaction messaging | |
EP3387813B1 (en) | Mobile device having trusted execution environment | |
CN107078904B (zh) | 混合密码密钥导出 | |
CN105760764B (zh) | 一种嵌入式存储设备文件的加解密方法、装置及终端 | |
CN102509047B (zh) | 校验机顶盒中程序代码的方法和系统 | |
CN109983732B (zh) | 保护密钥库内容的使用 | |
CN111917540B (zh) | 一种数据加解密方法、装置、移动终端和存储介质 | |
KR20100120671A (ko) | 스마트 카드의 보안 | |
CN111614467A (zh) | 系统后门防御方法、装置、计算机设备和存储介质 | |
CN107122629B (zh) | 一种基于随机混淆的Android软件协同加固方法 | |
CN101916344B (zh) | 一种验证软件保护装置合法性的方法及系统 | |
CN112069535B (zh) | 一种基于访问分区物理隔离的双系统安全智能终端架构 | |
CN111327429B (zh) | 终端启动的处理方法和装置 | |
KR20140139392A (ko) | 모바일 장치를 위한 애플리케이션 실행 파일 생성방법, 모바일 장치의 애플리케이션 실행 방법, 애플리케이션 실행 파일 생성 장치 및 모바일 장치 | |
CN112115430A (zh) | 一种apk的加固方法、电子设备及存储介质 | |
CN107918739B (zh) | 一种数据的保护方法、装置及存储介质 | |
CN109408085A (zh) | 硬件钱包的升级方法、装置、系统和存储介质 | |
CN115357929A (zh) | 一种图像的处理方法、装置及设备 | |
CN108933790A (zh) | 高安全等级的ota升级固件的加密方法 | |
CN104615944A (zh) | 一种加密文件和解密文件的方法和装置 | |
CN105610582B (zh) | 单片机与远程服务器加密通讯方法 | |
WO2023212838A1 (en) | Fast signature generation and verification | |
US8880906B2 (en) | Storing encrypted contents in digital archives | |
CN116502260A (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 |