CN108537010A - 一种基于AES算法的Android应用程序Native层壳加密方法 - Google Patents
一种基于AES算法的Android应用程序Native层壳加密方法 Download PDFInfo
- Publication number
- CN108537010A CN108537010A CN201810210444.6A CN201810210444A CN108537010A CN 108537010 A CN108537010 A CN 108537010A CN 201810210444 A CN201810210444 A CN 201810210444A CN 108537010 A CN108537010 A CN 108537010A
- Authority
- CN
- China
- Prior art keywords
- file
- dex
- native
- aes
- shell
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 22
- 238000009434 installation Methods 0.000 claims abstract description 28
- 238000009825 accumulation Methods 0.000 claims abstract description 4
- 101100217298 Mus musculus Aspm gene Proteins 0.000 claims description 4
- 230000001186 cumulative effect Effects 0.000 claims description 3
- 229910002056 binary alloy Inorganic materials 0.000 claims description 2
- 230000006870 function Effects 0.000 description 7
- 230000003068 static effect Effects 0.000 description 3
- CHBOSHOWERDCMH-UHFFFAOYSA-N 1-chloro-2,2-bis(4-chlorophenyl)ethane Chemical compound C=1C=C(Cl)C=CC=1C(CCl)C1=CC=C(Cl)C=C1 CHBOSHOWERDCMH-UHFFFAOYSA-N 0.000 description 2
- 230000015654 memory Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000000694 effects 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/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/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)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于AES算法的Android应用程序Native层壳加密方法,包括以下步骤(A)加密源Apk安装包:在Pc端使用Apk壳加密工具分析源Apk安装包并抽取所有Native层代码,并将Native层代码、资源文件和配置文件使用AES算法加密,然后存储在临时Dex文件;(B)合并文件:将加密之后的临时Dex文件和脱壳Dex文件进行合并,生成最终的Dex文件;(C)累加长度:在最终Dex文件的末尾累加源Apk安装包的长度;(D)修改文件头信息:修改最终Dex文件的文件头信息,最终生成已加密的Apk安装包。
Description
技术领域
本发明涉及移动信息安全技术领域,特别是一种基于AES算法的Android应用程序Native层壳加密方法。
背景技术
基于Linux内核、且具有开源等特性的Android系统自推出以来迅速得到广大开发人员以及厂商的支持,截止2017年6月,各大Android商店的应用数量总和已经超过250万个,但与此同时,在恶意攻击环境下Android应用程序面临着被逆向、被二次打包、初窃取、被篡改等严峻的安全问题,这可能和大多Android应用都使用Android SDK、采用Java语言编写有很大关系。
传统加密方法是使用Android开发工具对程序关键代码进行混淆,或者采用静态处理的方法对Apk包装包的Dex文件进行一些修改,这种加密方法只是增加了代码阅读难度,但其防护效果非常有限,攻击者依然能够通过工具Apktool、Dex2jar、Jd-gui、DDMS、签名等反编译工具进行静态破解,窃取Apk安装包源码;或者通过Gdb、Gcore等工具,从正在运行的App内存中截取Dex文件,获取代码片段,再反编译还原APK,所以无法保证应用程序的安全性。
发明内容
本发明主要针对这种现状,提出一种基于AES算法的Android应用程序Native层壳加密方法。
本发明采用的技术方案是:
一种基于AES算法的Android应用程序Native层壳加密方法,包括以下步骤
(A)加密源Apk安装包:在Pc端使用Apk壳加密工具分析源Apk安装包并抽取所有Native层代码,并将Native层代码、资源文件和配置文件使用AES算法加密,然后存储在临时Dex文件;
(B)合并文件:将加密之后的临时Dex文件和脱壳Dex文件进行合并,生成最终的Dex文件;
(C)累加长度:在最终Dex文件的末尾累加源Apk安装包的长度;
(D)修改文件头信息:修改最终Dex文件的文件头信息,最终生成已加密的Apk安装包。
进一步的,所述步骤(A)根据密钥V使用AES算法加密Native层代码所包括的功能函数,重命名和混淆Native层代码的关键逻辑代码;对资源文件和配置文件分别分配唯一MD5标识符;然后再将处理后的功能函数、关键逻辑代码、资源文件和配置文件合并转换成二进制流,记录源Apk安装包的长度,使用AES算法进行二次加密操作,二次加密后的二进制流存储在临时Dex文件。
所述步骤(B)的脱壳Dex是程序运行时用于解密源Apk安装包,即Android系统运行Apk时,默认先加载外层壳NLDex,先由它解壳,再返回给Android系统运行。
所述Android应用程序Native层壳加密方法还包括程序运行后脱壳Dex解密步骤:
(A1)加载脱壳Dex:程序启动后,Android系统会默认执行程序的onCreate方法,然后加载脱壳NLDex;
(B1)初始化头信息:脱壳Dex初始化头信息;
(C1)AES解密源Apk:从脱壳Dex中根据头信息找到源Apk,转换成二进制流,根据密钥V进行AES解密操作;根据MD5标识符还原所有的资源文件和配置文件,最后对于Native层代码进行二次AES解密;
(D1)返回源程序:返回解密后的程序,Android系统加载运行程序。
所述文件头信息为File_size、Sha1或Check_sum。
本发明的有益效果:本发明一种基于AES算法的Android应用程序Native层壳加密方法,使用加密工具NLApkShellTools加密所有敏感功能函数,重命名和混淆关键逻辑Native层代码,能够保护Native代码,采用二进制流的方式加密资源文件和配置文件等文件,然后与解密脱壳NLDex一起打包,当App启动时,通过脱壳NLDex动态解密Apk程序源码和文件,返回Android系统加载运行。从而防止通过工具Apktool、Dex2jar、Jd-gui、DDMS、签名等反编译工具进行静态破解,窃取Apk安装包源码,保护应用在被非法二次打包、资源文件被修改后无法正常安装和运行,解决Apk安装包被逆向、被二次打包、初窃取、被篡改等严峻的安全问题。
附图说明
下面结合附图对本发明的具体实施方式做进一步的说明。
图1是本发明壳加密的流程图;
图2是本发明加壳后的Apk安装包结构图;
图3是程序运行后脱壳NLDex解密的流程图。
具体实施方式
如图1所示,为本发明的一种基于AES算法的Android应用程序Native层壳加密方法,包括以下步骤
(A)加密源Apk安装包:在Pc端使用Apk壳加密工具分析源Apk安装包并抽取所有Native层代码,并将Native层代码、资源文件和配置文件使用AES算法加密,然后存储在临时Dex文件;具体包括:根据密钥V使用AES算法加密Native层代码所包括的功能函数,重命名和混淆Native层代码的关键逻辑代码;对资源文件和配置文件分别分配唯一MD5标识符;然后再将处理后的功能函数、关键逻辑代码、资源文件和配置文件合并转换成二进制流,记录源Apk安装包的长度,使用AES算法进行二次加密操作,二次加密后的二进制流存储在临时Dex文件。
(B)合并文件:将加密之后的临时Dex文件和脱壳Dex文件进行合并,生成最终的Dex文件;其中,脱壳Dex是程序运行时用于解密源Apk安装包,即Android系统运行Apk时,默认先加载外层壳NLDex,先由它解壳,再返回给Android系统运行。
(C)累加长度:在最终Dex文件的末尾累加源Apk安装包的长度;
(D)修改文件头信息:修改最终Dex文件的文件头信息,比如File_size、Sha1或Check_sum,最终生成已加密的Apk安装包,如图2所示。
如图3所示,所述Android应用程序Native层壳加密方法还包括程序运行后脱壳Dex解密步骤:
(A1)加载脱壳Dex:程序启动后,Android系统会默认执行程序的onCreate方法,然后加载脱壳NLDex;
(B1)初始化头信息:脱壳Dex初始化头信息;比如File_size、Sha1或Check_sum等;
(C1)AES解密源Apk:从脱壳Dex中根据头信息找到源Apk,转换成二进制流,根据密钥V进行AES解密操作;根据MD5标识符还原所有的资源文件和配置文件,最后对于Native层代码进行二次AES解密;
(D1)返回源程序:返回解密后的程序,Android系统加载运行程序。
对比传统方法只是对应用程序关键代码进行混淆,或者对Apk包装包的Dex文件进行一些修改,增加了代码阅读难度,无法保证Apk安装包的完整性和安全性,而本发明一种基于AES算法的Android应用程序Native层壳加密方法,采用AES算法加密Native层代码、资源、配置等文件,运行再动态解密返回,有效地解决Apk安装包被逆向、被二次打包、初窃取、被篡改等严峻的安全问题,从而实现Android应用程序的所有者利益和用户信息的安全。
以上所述仅为本发明的优先实施方式,本发明并不限定于上述实施方式,只要以基本相同手段实现本发明目的的技术方案都属于本发明的保护范围之内。
Claims (5)
1.一种基于AES算法的Android应用程序Native层壳加密方法,其特征在于:包括以下步骤
(A)加密源Apk安装包:在Pc端使用Apk壳加密工具分析源Apk安装包并抽取所有Native层代码,并将Native层代码、资源文件和配置文件使用AES算法加密,然后存储在临时Dex文件;
(B)合并文件:将加密之后的临时Dex文件和脱壳Dex文件进行合并,生成最终的Dex文件;
(C)累加长度:在最终Dex文件的末尾累加源Apk安装包的长度;
(D)修改文件头信息:修改最终Dex文件的文件头信息,最终生成已加密的Apk安装包。
2.根据权利要求1所述的一种基于AES算法的Android应用程序Native层壳加密方法,其特征在于:所述步骤(A)根据密钥V使用AES算法加密Native层代码所包括的功能函数,重命名和混淆Native层代码的关键逻辑代码;对资源文件和配置文件分别分配唯一MD5标识符;然后再将处理后的功能函数、关键逻辑代码、资源文件和配置文件合并转换成二进制流,记录源Apk安装包的长度,使用AES算法进行二次加密操作,二次加密后的二进制流存储在临时Dex文件。
3.根据权利要求1所述的一种基于AES算法的Android应用程序Native层壳加密方法,其特征在于,所述步骤(B)的脱壳Dex是程序运行时用于解密源Apk安装包,即Android系统运行Apk时,默认先加载外层壳NLDex,先由它解壳,再返回给Android系统运行。
4.根据权利要求2所述的一种基于AES算法的Android应用程序Native层壳加密方法,其特征在于,还包括程序运行后脱壳Dex解密步骤:
(A1)加载脱壳Dex:程序启动后,Android系统会默认执行程序的onCreate方法,然后加载脱壳NLDex;
(B1)初始化头信息:脱壳Dex初始化头信息;
(C1)AES解密源Apk:从脱壳Dex中根据头信息找到源Apk,转换成二进制流,根据密钥V进行AES解密操作;根据MD5标识符还原所有的资源文件和配置文件,最后对于Native层代码进行二次AES解密;
(D1)返回源程序:返回解密后的程序,Android系统加载运行程序。
5.根据权利要求1所述的一种基于AES算法的Android应用程序Native层壳加密方法,其特征在于:所述文件头信息为File_size、Sha1或Check_sum。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810210444.6A CN108537010A (zh) | 2018-03-14 | 2018-03-14 | 一种基于AES算法的Android应用程序Native层壳加密方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810210444.6A CN108537010A (zh) | 2018-03-14 | 2018-03-14 | 一种基于AES算法的Android应用程序Native层壳加密方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108537010A true CN108537010A (zh) | 2018-09-14 |
Family
ID=63483840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810210444.6A Withdrawn CN108537010A (zh) | 2018-03-14 | 2018-03-14 | 一种基于AES算法的Android应用程序Native层壳加密方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108537010A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795358A (zh) * | 2020-01-06 | 2020-02-14 | 同盾控股有限公司 | 代码插桩检测方法、装置、设备及介质 |
CN112084469A (zh) * | 2020-08-06 | 2020-12-15 | 华帝股份有限公司 | 防止应用程序被逆向工程的加密方法 |
CN113220314A (zh) * | 2021-05-31 | 2021-08-06 | 北京奇艺世纪科技有限公司 | App资源加载及apk生成方法、装置、设备及介质 |
CN113656308A (zh) * | 2021-08-18 | 2021-11-16 | 福建卫联科技有限公司 | 一种计算机软件分析系统 |
-
2018
- 2018-03-14 CN CN201810210444.6A patent/CN108537010A/zh not_active Withdrawn
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795358A (zh) * | 2020-01-06 | 2020-02-14 | 同盾控股有限公司 | 代码插桩检测方法、装置、设备及介质 |
CN110795358B (zh) * | 2020-01-06 | 2020-04-07 | 同盾控股有限公司 | 代码插桩检测方法、装置、设备及介质 |
CN112084469A (zh) * | 2020-08-06 | 2020-12-15 | 华帝股份有限公司 | 防止应用程序被逆向工程的加密方法 |
CN113220314A (zh) * | 2021-05-31 | 2021-08-06 | 北京奇艺世纪科技有限公司 | App资源加载及apk生成方法、装置、设备及介质 |
CN113220314B (zh) * | 2021-05-31 | 2023-07-21 | 北京奇艺世纪科技有限公司 | App资源加载及apk生成方法、装置、设备及介质 |
CN113656308A (zh) * | 2021-08-18 | 2021-11-16 | 福建卫联科技有限公司 | 一种计算机软件分析系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI750223B (zh) | 區塊鏈加密射頻晶片存儲設計方法 | |
CN108537010A (zh) | 一种基于AES算法的Android应用程序Native层壳加密方法 | |
CN111709038B (zh) | 文件加密解密方法、分布式存储系统、设备及存储介质 | |
US20160117518A1 (en) | File Encryption/Decryption Device And File Encryption/Decryption Method | |
CN105683990B (zh) | 用于保护动态库的方法和装置 | |
CN106126981B (zh) | 基于虚拟函数表替换的软件安全防护方法 | |
US8811612B2 (en) | Using file metadata for data obfuscation | |
CN104298932A (zh) | 一种so文件的调用方法及装置 | |
CN103065082A (zh) | 基于Linux系统的软件安全防护方法 | |
CN105612527A (zh) | 为基于通用中间语言的程序提供安全性的方法 | |
JP2016503541A (ja) | コード難読化装置及びその方法 | |
CN101430747A (zh) | 基于可信嵌入式平台的移动设备及其安全存储方法 | |
CN104268444A (zh) | 一种云OS Java源代码保护方法 | |
CN104579689A (zh) | 一种软密钥系统及实现方法 | |
CN111159757A (zh) | 文件加密方法、解密方法及相应装置 | |
CN111191195A (zh) | 一种用于保护apk的方法和装置 | |
CN107609394A (zh) | Android安装包的防篡改方法、存储设备及装置 | |
CN108133147B (zh) | 可执行代码的保护方法、设备及可读存储介质 | |
CN112131595B (zh) | 一种SQLite数据库文件安全存取方法及装置 | |
KR20140004819A (ko) | 안드로이드 난독화 기법을 이용한 어플리케이션 위변조 탐지 방법 | |
CN109241707A (zh) | 应用程序的混淆方法、装置和服务器 | |
Park et al. | A methodology for the decryption of encrypted smartphone backup data on android platform: A case study on the latest samsung smartphone backup system | |
CN114745373A (zh) | 一种文件传输方法、装置、设备及存储介质 | |
CN107257282A (zh) | 一种基于rc4算法的代码全包加密方法 | |
US20170366514A1 (en) | Code obfuscation and associated objects |
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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20180914 |
|
WW01 | Invention patent application withdrawn after publication |