[go: up one dir, main page]

CN105787306A - 一种基于android系统的应用程序加固系统及方法 - Google Patents

一种基于android系统的应用程序加固系统及方法 Download PDF

Info

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
Application number
CN201610117811.9A
Other languages
English (en)
Inventor
陈勇
陈乃阔
吴登勇
陈亮甫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Chaoyue Numerical Control Electronics Co Ltd
Original Assignee
Shandong Chaoyue Numerical Control Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shandong Chaoyue Numerical Control Electronics Co Ltd filed Critical Shandong Chaoyue Numerical Control Electronics Co Ltd
Priority to CN201610117811.9A priority Critical patent/CN105787306A/zh
Publication of CN105787306A publication Critical patent/CN105787306A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/106Enforcing content protection by specific content processing
    • G06F21/1063Personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45529Embedded 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移动终端平台的日益发展,第三方应用程序大量涌现,对第三方应用的盗版和重打包现象日益严重。
由于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格式。
CN201610117811.9A 2016-03-03 2016-03-03 一种基于android系统的应用程序加固系统及方法 Pending CN105787306A (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109960509A (zh) * 2019-03-06 2019-07-02 江苏通付盾信息安全技术有限公司 应用加固的方法、装置、计算设备及计算机存储介质

Citations (3)

* Cited by examiner, † Cited by third party
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应用加固的方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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