一种APK应用加固的方法及系统技术方案

技术编号:10168257 阅读:309 留言:0更新日期:2014-07-02 10:43
本发明专利技术提供了一种APK应用加固的方法及系统,所述方法为,导入待加固文件源码或APK文件,并对待加固文件进行预处理,分析其语义,针对不同的对象采取不同的加密方式,将加密后的对象进行JVM类初始化处理,将加密后的对象以静态成员、静态代码块等方式提取到类初始化过程中,最后将加固结果导出。通过本发明专利技术的方法,能够对Android下的APK应用程序进行加固处理,使反编译结果中不会出现任何明文字符串和库函数的显示调用,并隐藏了核心代码功能,极大提增加了对APK文件逆向分析的难度,从而起到对开发者的应用代码的保护作用。

【技术实现步骤摘要】
【专利摘要】本专利技术提供了一种APK应用加固的方法及系统,所述方法为,导入待加固文件源码或APK文件,并对待加固文件进行预处理,分析其语义,针对不同的对象采取不同的加密方式,将加密后的对象进行JVM类初始化处理,将加密后的对象以静态成员、静态代码块等方式提取到类初始化过程中,最后将加固结果导出。通过本专利技术的方法,能够对Android下的APK应用程序进行加固处理,使反编译结果中不会出现任何明文字符串和库函数的显示调用,并隐藏了核心代码功能,极大提增加了对APK文件逆向分析的难度,从而起到对开发者的应用代码的保护作用。【专利说明】—种APK应用加固的方法及系统
本专利技术涉及移动终端应用安全领域,特别涉及一种APK应用加固的方法及系统。
技术介绍
随着Android移动终端平台的日益发展,第三方应用程序大量涌现,对第三方应用的盗版和重打包现象日益严重。由于Android下APK能够很容易的由dex2 jar和JD-GU1、JAD等反编译工具反编译为易于阅读的JAVA代码,从而代码中的明文字符串、库函数调用、核心功能函数等都一目了然,使得非法开发者对第三方应用程序的盗版或者核心功能的逆向工程变得更加容易。
技术实现思路
本专利技术提供了一种APK应用加固的方法及系统,解决了 APK代码易于被反编译显示的问题,能够使第三方应用程序加固,最大化保护APK应用程序的安全。一种APK应用加固的方法,包括: 向JVM中导入待加固的文件,所述文件为文件源码或打包的APK文件;基于源码的加固通常是导入类代码,通常为*.Java文件; 对待加固文件进行预处理,分析待加固文件代码的语义为字符串对象,或库函数调用,或核心功能代码块; 根据分析结果,对待加固文件加密: 如果为字符串对象,则根据用户自定义的加密方式加密; 如果为库函数调用,则加密被调用的类名、方法名、并进行反射调用; 如果为核心功能代码块,则加密并动态生成加密后的代码; JVM类初始化,对加密后的字符串对象、库函数调用及核心功能代码块以静态成员、静态代码块方式提取到类初始化过程中; 待加固文件的加固结果导出,分别导出加固后的源文件或APK文件。基于源码的导出结果为加固后的*.java源文件,基于打包APK的导出结果为加固后的APK文件。所述的方法中,所述用户自定义的加密方式为标准加密方式或已知的任一字符串加密方式。本专利技术还提供一种APK应用加固的系统,包括: 加载模块,用于向JVM中导入待加固的文件,所述文件为文件源码或打包的APK文件;分析模块,用于对待加固文件进行预处理,分析待加固文件代码的语义为字符串对象,或库函数调用,或核心功能代码块; 加固模块,用于根据分析结果,对待加固文件加密: 如果为字符串对象,则根据用户自定义的加密方式加密; 如果为库函数调用,则加密被调用的类名、方法名、并进行反射调用; 如果为核心功能代码块,则加密并动态生成加密后的代码; 初始化模块,用于JVM类初始化,对加密后的字符串对象、库函数调用及核心功能代码块以静态成员、静态代码块方式提取到类初始化过程中; 文件生成模块,用于待加固文件的加固结果导出,分别导出加固后的源文件或APK文件。所述的系统,所述用户自定义的加密方式为标准加密方式或已知的任一字符串加密方式。本专利技术方法及系统的优势在于,提供了一种APK应用的加固方案,利用JVM中类初始化的特性和JAVA反射机制,对代码中的字符串、库函数的调用以及部分代码块进行加固保护,并且提供基于源码的加固方式和基于打包APK的加固方式,极大降低了对加固后应用程序的逆向工程的可能性,从而达到最大化保护应用开发者版权的目的。本专利技术提供了一种APK应用加固的方法及系统,主要针对Android下APK应用的代码加固方案,并且提供了源码级和非源码级的两种加固方式。所述方法为,导入待加固文件源码或APK文件,并对待加固文件进行预处理,分析其语义,针对不同的对象采取不同的加密方式,将加密后的对象进行JVM类初始化处理,将加密后的对象以静态成员、静态代码块等方式提取到类初始化过程中,最后将加固结果导出。通过本专利技术的方法,能够对Android下的APK应用程序进行加固处理,使反编译结果中不会出现任何明文字符串和库函数的显示调用,并隐藏了核心代码功能,极大提增加了对APK文件逆向分析的难度,从而起到对开发者的应用代码的保护作用。【专利附图】【附图说明】为了更清楚地说明本专利技术或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术APK应用加固的方法流程图; 图2为本专利技术APK应用加固的系统结构示意图。【具体实施方式】为了使本
的人员更好地理解本专利技术实施例中的技术方案,并使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附图对本专利技术中技术方案作进一步详细的说明。本专利技术提供了一种APK应用加固的方法及系统,解决了 APK代码易于被反编译显示的问题,能够使第三方应用程序加固,最大化保护APK应用程序的安全。一种APK应用加固的方法,如图1所示,包括: 5101:向JVM中导入待加固的文件,所述文件为文件源码或打包的APK文件;基于源码的加固通常是导入类代码,通常为*.java文件; 5102:对待加固文件进行预处理,分析待加固文件代码的语义为字符串对象,或库函数调用,或核心功能代码块; 根据分析结果,对待加固文件加密:如果为字符串对象,则执行S103:根据用户自定义的加密方式加密;这里可以将加密方式统称为ENCRYPT,其对应的解密方法统称为DECRYPT,需要加密的字符串对象统称为STRING,加固后的形态为 ENCRYPT (STRING); 如果为库函数调用,则执行S104:加密被调用的类名、方法名、并进行反射调用;加固后的形态为:INVOKE(ENCRYPT(CLASSNAME), ENCRYPT(METHODNAME)); 如果为核心功能代码块,则执行S105:加密并动态生成加密后的代码;所述的加密方式可以为已知的任一一种代码块加密方式;加固后的形态为:NEW(ENCRYPT(CODE)); 5106:JVM类初始化,对加密后的字符串对象、库函数调用及核心功能代码块以静态成员、静态代码块方式提取到类初始化过程中; 5107:待加固文件的加固结果导出,分别导出加固后的源文件或APK文件。基于源码的导出结果为加固后的*.java源文件,基于打包的APK的导出结果为加固后的APK文件。所述的方法中,所述用户自定义的加密方式为标准加密方式或已知的任一字符串加密方式。为更明确本专利技术的实施方式,对APK文件加固方式举例如下: 对导入的待加固文件预 处理后,分析得到类A下的字符串信息“aaa”,并且存在一个调用了类B的c方法。并且指定生成一对加密解密函数:encrypt和decrypt。对字符串信息进行加密后,“aaa”被encrypt ( “aaa”)生成加密后的结果“xxx”。对库函数调用信息进行加密,类名本文档来自技高网
...

【技术保护点】
一种APK应用加固的方法,其特征在于,包括:向JVM中导入待加固的文件,所述文件为文件源码或打包的APK文件;对待加固文件进行预处理,分析待加固文件代码的语义为字符串对象,或库函数调用,或核心功能代码块;根据分析结果,对待加固文件加密:如果为字符串对象,则根据用户自定义的加密方式加密;如果为库函数调用,则加密被调用的类名、方法名、并进行反射调用;如果为核心功能代码块,则加密并动态生成加密后的代码;JVM类初始化,对加密后的字符串对象、库函数调用及核心功能代码块以静态成员、静态代码块方式提取到类初始化过程中;待加固文件的加固结果导出,分别导出加固后的源文件或APK文件。

【技术特征摘要】

【专利技术属性】
技术研发人员:潘博文乔伟肖新光
申请(专利权)人:武汉安天信息技术有限责任公司
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1