Java应用软件的保护方法和装置制造方法及图纸

技术编号:13031802 阅读:90 留言:0更新日期:2016-03-17 03:15
本发明专利技术提供一种Java应用软件的保护方法和装置,通过获取Java应用软件的压缩包,上述压缩包中包含至少一个类文件,根据至少一个类文件中的指令的访问权限,对至少一个类文件中的函数进行合并处理,从而,将多个函数的指令合并到同一函数中,产生强混淆的效果,同时减少了总函数数量,增加了通过反编译和通过逆向工程获得应用软件完整的远程代码的难度,从而实现保护Java应用软件。

【技术实现步骤摘要】

本专利技术涉及计算机技术,尤其涉及一种Java应用软件的保护方法和装置
技术介绍
Java通过虚拟机方式运行,具有编程时无需考虑内存管理等优点,因此,被广泛应 用于编写各种应用软件。 通常情况下,如图1所示,图1为Java应用软件的应用场景示意图,采用Java编 写的应用软件源程序代码经过Java编译器编译后,生成Java字节码(.class文件),Java 字节码独立于计算机硬件及操作系统,在运行时由Java虚拟机的Java解释器负责解释并 通过即时编译器生成机器代码而执行。然而,由于Java字节码中包含大量的调试信息,例 如:源文件名、行号、字段名、方法名、参数名和变量名等,这些调试信息很容易被反编译和 通过逆向工程获得应用软件完整的源程序代码,现有技术中通过用无意义的字符序列来替 换调试信息中的所有名字,增加对字节码进行反编译和通过逆向工程获得应用软件完整的 源程序代码的难度。 然而,采用现有技术的方法,虽然用无意义字符序列来替换调试信息中的所有名 字可以增加逆向难度,但是对于专业的逆向分析人员来说仍然很容易获得Java应用软件 完整的源程序代码,无法保护Java应用软件。
技术实现思路
本专利技术提供一种Java应用软件的保护方法和装置,以保护Java应用软件。 本专利技术第一方面提供一种Java应用软件的保护方法,包括: 获取Java应用软件的压缩包,所述压缩包中包含至少一个类文件; 获取所述至少一个类文件中能够进行合并的函数; 将所述能够进行合并的函数进行函数合并处理。 进一步地,所述获取所述至少一个类文件中能够进行合并的函数,包括: 根据所述至少一个类文件的访问权限、继承树、所述至少一个类文件的函数的访 问权限和所述函数的指令的访问权限,获取能够进行合并的函数。 进一步地,所述将所述能够进行合并的函数进行函数合并处理,包括: 将所述能够进行合并的函数的实例方法转为能够进行合并的函数的静态方法; 根据所述能够进行合并的函数的静态方法的栈区重新构造一个合并栈区; 根据所述能够进行合并的函数的静态方法生成一个选择运行函数的指令,所述指 令用于选择运行的函数; 修改所述能够进行合并的函数的静态方法中的指令的访问权限; 根据所述合并栈区、所述选择运行函数的指令、所述能够进行合并的函数的静态 方法中的指令的访问权限和所述能够进行合并的函数的静态方法的指令,生成一个合并函 数; 将调用所述能够进行合并的函数的代码修改为调用所述合并函数。 进一步地,所述将所述能够进行合并的函数的实例方法转为静态方法,包括: 根据所述能够进行合并的函数所在类重新构造参数列表; 根据所述重新构造的参数列表生成所述能够进行合并的函数的静态方法。 进一步地,所述将所述能够进行合并的函数进行函数合并处理,包括: 将所述能够进行合并的函数的实例方法转为能够进行合并的函数的静态方法; 将所述能够进行合并的函数的静态方法中的内联函数插入到所述能够进行合并 的函数中的静态方法中的调用所述内联函数的位置; 将调用所述能够进行合并的函数的代码修改为调用所述合并函数。 本专利技术第二方面提供一种Java应用软件的保护装置,包括: 第一获取模块,用于获取Java应用软件的压缩包,所述压缩包中包含至少一个类 文件; 第二获取模块,用于获取所述至少一个类文件中能够进行合并的函数; 处理模块,用于将所述能够进行合并的函数进行函数合并处理。 进一步地,所述第二获取模块具体用于根据所述至少一个类文件的访问权限、继 承树、所述至少一个类文件的函数的访问权限和所述函数的指令的访问权限,获取能够进 行合并的函数。 进一步地,所述处理模块具体用于将所述能够进行合并的函数的实例方法转为能 够进行合并的函数的静态方法;根据所述能够进行合并的函数的静态方法的栈区重新构造 一个合并栈区;根据所述能够进行合并的函数的静态方法生成一个选择运行函数的指令, 所述指令用于选择运行的函数;修改所述能够进行合并的函数的静态方法中的指令的访问 权限;根据所述合并栈区、所述选择运行函数的指令、所述能够进行合并的函数的静态方法 中的指令的访问权限和所述能够进行合并的函数的静态方法的指令,生成一个合并函数; 将调用所述能够进行合并的函数的代码修改为调用所述合并函数。 进一步地,所所述处理模块具体用于根据所述能够进行合并的函数所在类重新构 造参数列表;根据所述重新构造的参数列表生成所述能够进行合并的函数的静态方法。 进一步地,所述处理模块具体用于将所述能够进行合并的函数的实例方法转为能 够进行合并的函数的静态方法;将所述能够进行合并的函数的静态方法中的内联函数插入 到所述能够进行合并的函数中的静态方法中的调用所述内联函数的位置;将调用所述能够 进行合并的函数的代码修改为调用所述合并函数。 本专利技术提供的Java应用软件的保护方法和装置,通过获取Java应用软件的压缩 包,上述压缩包中包含至少一个类文件,根据至少一个类文件中的指令的访问权限,对至少 一个类文件中的函数进行合并处理,从而,将多个函数的指令合并到同一函数中,产生强混 淆的效果,同时减少了总函数数量,增加了通过反编译和通过逆向工程获得应用软件完整 的远程代码的难度,从而实现保护Java应用软件。【附图说明】 为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可 以根据这些附图获得其他的附图。 图1为Java应用软件的应用场景示意图; 图2为本专利技术Java应用软件的保护方法实施例一的流程示意图; 图3为本专利技术Java应用软件的保护装置实施例一的结构示意图; 图4为本专利技术Java应用软件的保护装置实施例二的结构示意图。【具体实施方式】 下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于 本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本专利技术保护的范围。 一个Java应用软件通常包含至少一个类文件,上述至少一个类文件一般压缩成 一个压缩文件(例如:"jar"包),每一个类文件中包含至少当前第1页1 2 3 本文档来自技高网...

【技术保护点】
一种Java应用软件的保护方法,其特征在于,包括:获取Java应用软件的压缩包,所述压缩包中包含至少一个类文件;获取所述至少一个类文件中能够进行合并的函数;将所述能够进行合并的函数进行函数合并处理。

【技术特征摘要】

【专利技术属性】
技术研发人员:谢志海戴云峰郭德安
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东;44

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

1