【技术实现步骤摘要】
提高Java软件破解难度的方法及装置、验证方法及验证装置
本专利技术属于软件版权保护
,具体涉及一种提高Java软件破解难度的方法及装置、验证方法及验证装置。
技术介绍
Java程序编译后的二进类文件很容易被反编译获得源代码,通过源代码进行反向工程,或者在获得源代码后,对软件版权保护部分进行修改再进行编译,就能够对软件进行破解,这就对Java程序的软件版权保护提出挑战,迫切需要保护Java软件的更加有效的方法。目前很多软件开发商提供的软件版权保护模块往往会依据计算机唯一的特征码信息如网卡号、硬盘号或者CPU的ID号等一项或多项信息得到计算机指纹信息,将软件许可和计算机硬件进行绑定。软件开发商也经常将授权许可信息保存在硬件加密狗中,程序在运行时读取加密狗的信息来判断软件是否被授权。软件破解者通常通过对Java程序进行反编译,再编写一段代码伪造计算机指纹信息,或者编写一段绕过版权验证的代码,即可对Java软件进行破解。目前最简便实用的解决方法就是对Java程序进行代码混淆,代码混淆技术就是在不改变程序运行逻辑的情况下,使得混淆后的程序被反编译后程序可读性很差,难以再次进行修改,从而达到保护Java软件的目的。在对Java软件进行破解时,破解者一般会从代码量小、逻辑简单的类入手;如果将业务处理代码和版权保护代码混在一起,混淆后再发布软件也很难被破解。但是为了便于维护以及业务处理模块开发人员和版权保护模块开发人员的工作分工,软件开发商会将业务处理代码和读取授权信息本身的代码尽量分离,减少耦合。由 ...
【技术保护点】
1.一种提高Java软件破解难度的方法,其特征在于,包括:/n在Java软件的源代码中新增AOP切面类,得到Java软件的新增AOP切面类后的源代码,所述新增AOP切面类后的源代码包括:业务处理类的代码、软件版权保护代码以及所述AOP切面类的代码,所述AOP切面类用于指定切点并提供软件防篡改验证处理代码,所述切点为执行防篡改验证操作的位置;/n编译所述Java软件的新增AOP切面类后的源代码并将编译结果打包成第一Jar文件;/n采用预设的Jar文件的代码混淆选项对所述第一Jar文件的非程序入口类及非程序入口方法进行代码混淆并将混淆结果打包成第二Jar文件;/n根据预设的提取对象,提取所述第二Jar文件中的第一摘要信息,所述预设的提取对象为软件版权保护模块涉及的Java类和/或非Java程序,所述第一摘要信息为混淆过的Java类和/或非Java程序的数字摘要信息;/n将所述第一摘要信息作为常量信息硬编码到所述AOP切面类中,得到修改后的Java软件的源代码;/n编译所述修改后的Java软件的源代码,并将编译结果打包成第三Jar文件;/n采用所述预设的Jar文件的代码混淆选项对所述第三Ja ...
【技术特征摘要】
1.一种提高Java软件破解难度的方法,其特征在于,包括:
在Java软件的源代码中新增AOP切面类,得到Java软件的新增AOP切面类后的源代码,所述新增AOP切面类后的源代码包括:业务处理类的代码、软件版权保护代码以及所述AOP切面类的代码,所述AOP切面类用于指定切点并提供软件防篡改验证处理代码,所述切点为执行防篡改验证操作的位置;
编译所述Java软件的新增AOP切面类后的源代码并将编译结果打包成第一Jar文件;
采用预设的Jar文件的代码混淆选项对所述第一Jar文件的非程序入口类及非程序入口方法进行代码混淆并将混淆结果打包成第二Jar文件;
根据预设的提取对象,提取所述第二Jar文件中的第一摘要信息,所述预设的提取对象为软件版权保护模块涉及的Java类和/或非Java程序,所述第一摘要信息为混淆过的Java类和/或非Java程序的数字摘要信息;
将所述第一摘要信息作为常量信息硬编码到所述AOP切面类中,得到修改后的Java软件的源代码;
编译所述修改后的Java软件的源代码,并将编译结果打包成第三Jar文件;
采用所述预设的Jar文件的代码混淆选项对所述第三Jar文件的非程序入口类及非程序入口方法进行代码混淆并打包成第四Jar文件,将所述第四Jar文件作为最终发布的Jar文件;
其中,所述Jar文件的代码混淆选项包括Jar文件中的程序入口类及程序入口方法。
2.根据权利要求1所述的方法,其特征在于,所述AOP切面类,包括:
一个或多个切面,所述切面由切点和通知组成;
其中,所述切点根据预设的规则选自业务处理类的方法;所述通知在编译时被织入所述业务处理类的切点位置,用于执行软件防篡改验证操作。
3.根据权利要求2所述的方法,其特征在于,
根据预设的规则选择所述切点,所述规则基于Java类的包名、类的修饰符、类方法的修饰符、类方法的形式参数、类方法的返回值类型选择所述业务处理类的方法。
4.根据权利要求1所述的方法,其特征在于,
所述编译Java软件的源代码,和/或,所述编译所述修改后的Java软件的源代码,采用预设的编译器进行编译,所述预设的编译器支持织入,以将AOP切面类中和切点匹配的通知代码编译进目标二进制类中,所述目标二进制类物理上包含所述AOP切面类的通知代码。
5.根据权利要求4所述的方法,其特征在于,
所述目标二进制类是将源代码转换为二进制的目标代码。
6.根据权利要求1所述的方法,其特征在于,还包括:
设置所述AOP切面类,具体包括:
定义所述AOP切面类的切点和通知;
所述AOP切面类在业务处理类的方法之前执行所述软件防篡改验证。
7.一种提高Java软件破解难...
【专利技术属性】
技术研发人员:乐以长,李薇薇,
申请(专利权)人:方正国际软件北京有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。