CN105787306A - 一种基于android系统的应用程序加固系统及方法 - Google Patents
一种基于android系统的应用程序加固系统及方法 Download PDFInfo
- Publication number
- CN105787306A CN105787306A CN201610117811.9A CN201610117811A CN105787306A CN 105787306 A CN105787306 A CN 105787306A CN 201610117811 A CN201610117811 A CN 201610117811A CN 105787306 A CN105787306 A CN 105787306A
- Authority
- CN
- China
- Prior art keywords
- reinforcing
- file
- code
- reinforced
- module
- 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
- 230000003014 reinforcing effect Effects 0.000 title claims abstract description 60
- 238000000034 method Methods 0.000 title claims abstract description 23
- 230000003068 static effect Effects 0.000 claims abstract description 14
- 230000009897 systematic effect Effects 0.000 claims description 12
- 230000002787 reinforcement Effects 0.000 claims description 8
- 230000008676 import Effects 0.000 claims description 5
- 238000007596 consolidation process Methods 0.000 claims description 3
- 238000009795 derivation Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 3
- 230000000694 effects Effects 0.000 abstract 1
- 238000007781 pre-processing Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000001681 protective effect Effects 0.000 description 1
- 230000011514 reflex Effects 0.000 description 1
- 238000005728 strengthening Methods 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/106—Enforcing content protection by specific content processing
- G06F21/1063—Personalisation
-
- 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
- G06F9/44526—Plug-ins; Add-ons
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45529—Embedded in an application, e.g. JavaScript in a Web browser
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
本发明涉及移动终端安全应用技术领域,特别涉及一种基于ANDROID系统的应用程序加固系统及方法。本发明的技术方案,导入待加固文件源码或者APK文件,并对待加固文件进行预处理,分析其语义;针对不同的对象采取不同的加固方式,将加固后的对象进行JVM类初始化处理;将加固后的对象以静态成员、静态代码块等方式提取到类初始化过程中,最后将加固结果导出。通过本发明,能够对Android系统下的应用程序进行加固处理,使得反编译的结果中不会出现任何字符串、库函数的显示调用以及核心代码块,极大的增加了对APK文件逆向分析的难度,从而起到了对开发者的应用代码的保护作用。
Description
技术领域
本发明涉及移动终端安全应用技术领域,特别涉及一种基于ANDROID系统的应用程序加固系统及方法。
背景技术
随着Android移动终端平台的日益发展,第三方应用程序大量涌现,对第三方应用的盗版和重打包现象日益严重。
由于Android系统下APK能够很容易的被dex2jar、JD-GUI、JAD等反编译工具反编译为易于阅读的JAVA代码,从而使得源码中的明文字符串、库函数调用、核心功能函数等都一目了然,使得非法开发者对第三方应用程序的盗版或者核心功能的逆向工程变得更加的容易。
发明内容
为了解决现有技术的问题,本发明提供了一种基于ANDROID系统的应用程序加固系统及方法,其解决了APK代码易于被反编译显示的问题,能够使第三方应用程序加固,最大化保护APK应用程序的安全。
本发明所采用的技术方案如下:
一种基于ANDROID系统的应用程序加固系统,包括加载模块、分析模块、加固模块、初始化模块以及文件生成模块,其中,所述的加载模块:用于向Java虚拟机中导入带加固的文件,所述文件为文件源码或者已打包好的APK程序;所述的分析模块:用于对待加固文件进行预处理,分析待加固文件代码的语义类型,是字符串对象、库函数调用或者核心代码块;所述的加固模块:用于分析结果,对待加固的文件进行加固操作;所述的初始化模块:用于对加固后的字符串对象、库函数调用或核心代码块以静态成员、静态代码块方式提取到类初始化过程中;所述的文件生成模块:用于导出加固结果。
一种基于ANDROID系统的应用程序加固方法,包括以下步骤:
A、向Java虚拟机中导入待加固的文件;
B、对待加固的文件进行预处理,分析所述文件代码的语义,是字符串对象、库函数调用或者核心代码块;根据分析的结果进行对应的加固操作:
B1、对于字符串对象:根据用户自定义的加固方式进行加固;
B2、对于函数调用:对被调用的类名、方法名进行加固,并进行反射调用;
B3、对于核心功能代码块:加固并动态生成加固后的代码,所述的加固方式可以为任一一种已知的加固方式;
C、Java虚拟机初始化,对加固后的字符串对象、库函数调用或核心代码块以静态成员、静态代码块方式提取到类初始化过程中;
D、导出加固结果:根据导入的类型,分别导出对应的加固结果,源文件或者APK。
本发明主要针对Android系统下APK应用程序代码加固方案,并且提供了源码级和非源码级的两种加固方式。
具体为:导入待加固文件源码或者APK文件,并对待加固文件进行预处理,分析其语义;针对不同的对象采取不同的加固方式,将加固后的对象进行JVM类初始化处理;将加固后的对象以静态成员、静态代码块等方式提取到类初始化过程中,最后将加固结果导出。
通过本发明,能够对Android系统下的应用程序进行加固处理,使得反编译的结果中不会出现任何字符串、库函数的显示调用以及核心代码块,极大的增加了对APK文件逆向分析的难度,从而起到了对开发者的应用代码的保护作用。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的一种基于ANDROID系统的应用程序加固系统的系统模块构成图;
图2为本发明的一种基于ANDROID系统的应用程序加固方法的方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
如图1所示,本发明的功能模块图包括:加载模块、分析模块、加固模块、初始化模块以及文件生成模块。
如图2所示,该方法的流程主要如下:
1、向JVM中导入待加固的文件。所述文件为文件源码或者是已经打包好了的APK文件,基于源码的加固通常是导入类代码,一般是*.java格式;
2、对待加固的文件进行预处理,分析所述文件代码的语义,是字符串对象、库函数调用或者核心代码块。根据分析的结果进行对应的加固操作:
a.对于字符串对象:根据用户自定义的加固方式进行加固;
b.对于函数调用:对被调用的类名、方法名进行加固,并进行反射调用;
c.对于核心功能代码块:加固并动态生成加固后的代码,所述的加固方式可以为任一一种已知的加固方式。
3、JVM初始化,对加固后的字符串对象、库函数调用及核心代码块以静态成员、静态代码块方式提取到类初始化过程中;
4、导出加固结果,根据导入的类型,分别导出对于的加固结果,源文件或者APK。
所述方法中,所述用户自定义的加固方式为标准加固方式或者已知的任一字符串加固方式。
本实施例的一种基于Android系统应用程序加固方法,利用JVM中类初始化的特性和JAVA反射机制,对代码中的字符串、库函数的调用以及部分核心代码块进行加固保护,并且提供了基于源码的加固方式和基于打包APK的加固方式,极大的降低了对加固后应用程序的逆向工程的可能性,从而达到最大化保护应用开发者版权的目的。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种基于ANDROID系统的应用程序加固系统,包括加载模块、分析模块、加固模块、初始化模块以及文件生成模块,其中,所述的加载模块:用于向Java虚拟机中导入带加固的文件,所述文件为文件源码或者已打包好的APK程序;所述的分析模块:用于对待加固文件进行预处理,分析待加固文件代码的语义类型,是字符串对象、库函数调用或者核心代码块;所述的加固模块:用于分析结果,对待加固的文件进行加固操作;所述的初始化模块:用于对加固后的字符串对象、库函数调用或核心代码块以静态成员、静态代码块方式提取到类初始化过程中;所述的文件生成模块:用于导出加固结果。
2.一种基于ANDROID系统的应用程序加固方法,包括以下步骤:
A、向Java虚拟机中导入待加固的文件;
B、对待加固的文件进行预处理,分析所述文件代码的语义,是字符串对象、库函数调用或者核心代码块;根据分析的结果进行对应的加固操作:
B1、对于字符串对象:根据用户自定义的加固方式进行加固;
B2、对于函数调用:对被调用的类名、方法名进行加固,并进行反射调用;
B3、对于核心功能代码块:加固并动态生成加固后的代码,所述的加固方式可以为任一一种已知的加固方式;
C、Java虚拟机初始化,对加固后的字符串对象、库函数调用或核心代码块以静态成员、静态代码块方式提取到类初始化过程中;
D、导出加固结果:根据导入的类型,分别导出对应的加固结果,源文件或者APK。
3.根据权利要求2所述的一种基于ANDROID系统的应用程序加固方法,其特征在于,所述方法中,用户自定义的加固方式为标准加固方式或者已知的任一字符串加固方式。
4.根据权利要求2所述的一种基于ANDROID系统的应用程序加固方法,其特征在于,所述步骤A中,所述的文件为文件源码或者是已经打包好了的APK文件,基于源码的加固通常是导入类代码。
5.根据权利要求4所述的一种基于ANDROID系统的应用程序加固方法,其特征在于,所述导入类代码采用*.java格式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610117811.9A CN105787306A (zh) | 2016-03-03 | 2016-03-03 | 一种基于android系统的应用程序加固系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610117811.9A CN105787306A (zh) | 2016-03-03 | 2016-03-03 | 一种基于android系统的应用程序加固系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105787306A true CN105787306A (zh) | 2016-07-20 |
Family
ID=56387713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610117811.9A Pending CN105787306A (zh) | 2016-03-03 | 2016-03-03 | 一种基于android系统的应用程序加固系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105787306A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109960509A (zh) * | 2019-03-06 | 2019-07-02 | 江苏通付盾信息安全技术有限公司 | 应用加固的方法、装置、计算设备及计算机存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070256055A1 (en) * | 2004-11-19 | 2007-11-01 | Adrian Herscu | Method for building component-software for execution in a standards-compliant programming environment |
CN102725730A (zh) * | 2009-12-18 | 2012-10-10 | 赛丹思科大学 | 用于静态键入的基于类的面向对象的软件的非阻挡动态更新的方法、计算机程序产品和系统 |
CN103902858A (zh) * | 2013-12-25 | 2014-07-02 | 武汉安天信息技术有限责任公司 | 一种apk应用加固的方法及系统 |
-
2016
- 2016-03-03 CN CN201610117811.9A patent/CN105787306A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070256055A1 (en) * | 2004-11-19 | 2007-11-01 | Adrian Herscu | Method for building component-software for execution in a standards-compliant programming environment |
CN102725730A (zh) * | 2009-12-18 | 2012-10-10 | 赛丹思科大学 | 用于静态键入的基于类的面向对象的软件的非阻挡动态更新的方法、计算机程序产品和系统 |
CN103902858A (zh) * | 2013-12-25 | 2014-07-02 | 武汉安天信息技术有限责任公司 | 一种apk应用加固的方法及系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109960509A (zh) * | 2019-03-06 | 2019-07-02 | 江苏通付盾信息安全技术有限公司 | 应用加固的方法、装置、计算设备及计算机存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lu et al. | DeepAutoD: Research on distributed machine learning oriented scalable mobile communication security unpacking system | |
Kim et al. | ScanDal: Static analyzer for detecting privacy leaks in android applications | |
CN106326694A (zh) | 一种基于C源代码的混淆的Android应用加固方法 | |
CN104573427B (zh) | 一种可执行应用的混淆方法和装置 | |
CN107729725A (zh) | 一种基于虚拟机指令修改的Android应用加固系统及方法 | |
CN105068932B (zh) | 一种Android应用程序加壳的检测方法 | |
CN102945203B (zh) | 一种用于移动互联网应用的代码安全测试方法 | |
US20090138863A1 (en) | Method And Apparatus For Protecting .NET Programs | |
CN103902858A (zh) | 一种apk应用加固的方法及系统 | |
WO2016078130A1 (zh) | 一种防逆向apk文件的动态加载方法 | |
KR101234591B1 (ko) | Jni를 이용한 안드로이드 난독화 방법 | |
US20100058301A1 (en) | System and method for branch extraction obfuscation | |
CN104298534B (zh) | 基于Lua语言的编程方法和装置 | |
EP3062256B1 (en) | Flexible instructions sets for obfuscated virtual machines | |
CN106156623A (zh) | 基于意图的sqlia防御方法 | |
CN106897587A (zh) | 加固应用、加载加固应用的方法和装置 | |
CN105718765A (zh) | 一种利用有限自动机实现代码混淆的方法 | |
Gadelha et al. | Smt-based refutation of spurious bug reports in the clang static analyzer | |
CN113591040B (zh) | 加密方法及其装置、解密方法及其装置、电子设备和介质 | |
CN114329535A (zh) | 文件加密方法、装置、电子设备和计算机可读介质 | |
CN107391973A (zh) | 一种函数保护方法及装置 | |
CN113282294A (zh) | 基于安卓平台Java字符串混淆的方法和装置 | |
CN105279091B (zh) | 一种基于动态污点分析的按需跟踪方法及装置 | |
CN107239698A (zh) | 一种基于信号处理机制的反调试方法和装置 | |
KR101557455B1 (ko) | 응용 프로그램 코드 분석 장치 및 그것을 이용한 코드 분석 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160720 |