[发明专利]提高Java软件破解难度的方法及装置、验证方法及验证装置有效
申请号: | 201911423655.9 | 申请日: | 2019-12-31 |
公开(公告)号: | CN111143787B | 公开(公告)日: | 2022-02-18 |
发明(设计)人: | 乐以长;李薇薇 | 申请(专利权)人: | 方正国际软件(北京)有限公司 |
主分类号: | G06F21/12 | 分类号: | G06F21/12 |
代理公司: | 北京细软智谷知识产权代理有限责任公司 11471 | 代理人: | 谭承世 |
地址: | 100089 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 提高 java 软件 破解 难度 方法 装置 验证 | ||
本发明涉及一种提高Java软件破解难度的方法及装置、验证方法及验证装置,包括在Java软件的源代码中新增AOP切面类,得到Java软件新增后的源代码;对源代码进行编译并将编译结果打包成第一Jar文件;对第一Jar文件进行代码混淆并将混淆结果打包成第二Jar文件,获取第一摘要信息并将第一摘要信息硬编码到切面类中;再次对源代码进行编译并将编译结果打包成第三Jar文件;对第三Jar文件进行代码混淆并打包成最终发布的Jar文件。本申请可以通过编译器将防篡改模块的代码自动织入大量业务处理类的方法中,在Java软件多处识别软件发布后是否有人篡改软件版权保护模块,结合代码混淆技术,将大幅增大Java软件破解的工作量和破解难度,加大了Java软件的版权保护力度。
技术领域
本发明属于软件版权保护技术领域,具体涉及一种提高Java软件破解难度的方法及装置、验证方法及验证装置。
背景技术
Java程序编译后的二进类文件很容易被反编译获得源代码,通过源代码进行反向工程,或者在获得源代码后,对软件版权保护部分进行修改再进行编译,就能够对软件进行破解,这就对Java程序的软件版权保护提出挑战,迫切需要保护Java软件的更加有效的方法。
目前很多软件开发商提供的软件版权保护模块往往会依据计算机唯一的特征码信息如网卡号、硬盘号或者CPU的ID号等一项或多项信息得到计算机指纹信息,将软件许可和计算机硬件进行绑定。软件开发商也经常将授权许可信息保存在硬件加密狗中,程序在运行时读取加密狗的信息来判断软件是否被授权。
软件破解者通常通过对Java程序进行反编译,再编写一段代码伪造计算机指纹信息,或者编写一段绕过版权验证的代码,即可对Java软件进行破解。目前最简便实用的解决方法就是对Java程序进行代码混淆,代码混淆技术就是在不改变程序运行逻辑的情况下,使得混淆后的程序被反编译后程序可读性很差,难以再次进行修改,从而达到保护Java软件的目的。
在对Java软件进行破解时,破解者一般会从代码量小、逻辑简单的类入手;如果将业务处理代码和版权保护代码混在一起,混淆后再发布软件也很难被破解。但是为了便于维护以及业务处理模块开发人员和版权保护模块开发人员的工作分工,软件开发商会将业务处理代码和读取授权信息本身的代码尽量分离,减少耦合。由于这种业务处理代码和软件版权保护代码的分离,对混淆后的软件版权保护代码进行反编译然后进行篡改还是可能的。
针对上述问题,专利号为ZL201110322930.5,名称为《提高Java软件破解难度的方法及装置、版权验证方法》的发明专利中公开了一种通过在核心业务类提取软件版权保护模块的数字摘要信息并将其与开发阶段硬编码到核心业务类的软件版权保护模块的数字摘要信息进行比较,来识别软件是否被破解。
采用该发明所公开的方法选择代码量大、业务逻辑复杂的一个或多个核心业务类作为版权验证类,能够解决业务较为单一的Java软件的版权保护难题。但是对存在大量业务且业务相对独立的应用场景如现在流行的微服务架构,这种方法就有明显的缺陷。基于微服务架构的应用系统提供了大量的微服务,每一个微服务通过一个或多个Java类对外提供服务,每一个Java类本身就是一个业务处理类,一个系统存在少则几十个多则成百上千个业务处理类。采用该发明的方法将对大量的业务处理类的源代码进行手工修改,将第一摘要信息写入其中,将会把业务无关的防篡改验证代码写入业务处理类中,不利于业务处理模块开发人员和版权保护模块开发人员的工作分工,这种方式也会污染代码,造成处理业务逻辑的源代码可读性差,难以维护;并且这种方式工作量巨大、容易出现遗漏,在程序出现变化时,混淆后的软件版权保护模块的数字摘要信息可能会出现变化,此时就要重复这些枯燥又容易出错的工作。
发明内容
有鉴于此,本发明的目的在于克服现有技术的不足,提供一种提高Java软件破解难度的方法、装置及版权验证方法、装置,以解决现有技术中难以对存在大量业务且业务相对独立应用场景的软件版权进行保护和验证的问题。
为实现以上目的,本发明采用如下技术方案:一种提高Java软件破解难度的方法,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于方正国际软件(北京)有限公司,未经方正国际软件(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911423655.9/2.html,转载请声明来源钻瓜专利网。