[发明专利]一种保护Java软件的方法及装置在审
申请号: | 201410167824.8 | 申请日: | 2014-04-24 |
公开(公告)号: | CN103971034A | 公开(公告)日: | 2014-08-06 |
发明(设计)人: | 姚祥健;陈瑞兵 | 申请(专利权)人: | 福建联迪商用设备有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 福州市仓山区景弘专利代理事务所(普通合伙) 35219 | 代理人: | 林祥翔;吕元辉 |
地址: | 350003 福建省福州市鼓楼*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 保护 java 软件 方法 装置 | ||
技术领域
本发明涉及软件保护技术领域,尤其涉及一种保护Java软件的方法及装置。
背景技术
Java是一种跨平台的、解释型语言。Java编译工具将Java源代码被编译成为Java字节码文件,由Java虚拟机负责对Java字节码文件进行解释执行。对于传统的C或C++之类的语言来说,要在Web上保护源代码是很容易的,只要不发布源代码就可以。遗憾的是,Java程序的源代码很容易被人破解。只要有一个反编译器,任何人都可以分析别人的代码,Java的灵活性使得源代码很容易被窃取。现有的商用软件在出售或试用时都会带有授权的License(许可)文件,License文件中包含了对软件使用范围的限制,如试用版的软件无法使用某些功能,完整版的软件的使用期限等。而由于Java源代码很容易被窃取,而后根据Java源代码即可修改License文件,并最终导致商用软件的开发者的劳动成果被剽窃或者商用软件被篡改,而随着Java语言的流行,Java的应用领域越来越广泛,对于Java软件的保护的需求也越来越迫切。
发明内容
本发明要解决的技术问题,在于提供一种保护Java软件的方法及装置,解决Java源代码容易被反编译而导致License文件可被非法篡改的问题。
本发明是这样实现的:
一种保护Java软件的方法,包括如下步骤:
调用第一外部程序对已加密的License文件进行License文件解密,将License文件解密后的数据写入到缓存中,所述的第一外部程序为第一已加密的Java程序或者为第一非Java程序。
进一步地,当所述的第一外部程序为第一已加密的Java程序时,则License文件解密的具体步骤为:调用自定义类加载器解密并加载已加密的第一class类,而后使用解密后的第一class类对已加密的License文件进行License文件解密。
进一步地,当所述的第一外部程序为第一非Java程序时,则License文件解密的具体步骤为:使用JNI接口调用第一非Java程序对已加密的License文件进行License文件解密。
进一步地,在License文件解密步骤之前还包括License文件合法性验证步骤:对License文件进行合法性验证,如果验证结果为合法,则继续进行License文件解密步骤,否则不进行License文件解密步骤。
进一步地,所述对License文件进行合法性验证具体为:调用第二外部程序对License文件进行合法性验证,所述的第二外部程序为第二已加密的Java程序或者为第二非Java程序。
进一步地,当所述的第二外部程序为第二已加密的Java程序时,则调用第二外部程序对License文件进行合法性验证的具体步骤为:调用自定义类加载器解密并加载已加密的第二class类,而后使用解密后的第二class类对License文件进行合法性验证。
进一步地,当所述的第二外部程序为第二非Java程序时,则调用第二外部程序对License文件进行合法性验证的具体步骤为:使用JNI接口调用第二非Java程序对License文件进行合法性验证。
进一步地,所述的第二非Java程序为C或C++程序。
进一步地,所述合法性验证的具体步骤为:使用公钥和数字签名进行合法性验证。
进一步地,所述的第一非Java程序为C或C++程序。
进一步地,读取缓存中的License文件解密后的数据,判断License文件解密后的数据是否合法,如果License文件解密后的数据是合法,则继续执行Java软件,否则停止执行Java软件。
以及本发明为了保护Java软件不被非法使用,还提供一种保护Java软件的装置,包括如下模块:
第一解密模块:用于调用第一外部程序对已加密的License文件进行License文件解密,得到License文件解密后数据;
缓存写入模块:用于将License文件解密后的数据写入到缓存中;
其中,所述的第一外部程序为第一已加密的Java程序或者为第一非Java程序。
进一步地,当所述的第一外部程序为第一已加密的Java程序时,则第一解密模块包括如下单元:
类加载单元:用于调用自定义类加载器解密并加载已加密的第一class类;
类解密单元:用于使用解密后的第一class类对已加密的License文件进行License文件解密。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于福建联迪商用设备有限公司,未经福建联迪商用设备有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410167824.8/2.html,转载请声明来源钻瓜专利网。