[发明专利]一种用于Java软件防盗版的加密编译和运行方法在审
申请号: | 202110750549.2 | 申请日: | 2021-07-02 |
公开(公告)号: | CN113641965A | 公开(公告)日: | 2021-11-12 |
发明(设计)人: | 穆爽;徐欣;张权 | 申请(专利权)人: | 杭州电子科技大学 |
主分类号: | G06F21/14 | 分类号: | G06F21/14;G06F21/60 |
代理公司: | 杭州君度专利代理事务所(特殊普通合伙) 33240 | 代理人: | 陈炜 |
地址: | 310018 浙*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 用于 java 软件 盗版 加密 编译 运行 方法 | ||
本发明公开了一种用于Java软件防盗版的加密编译和运行方法。因此针对Java开发的软件产品的保护需求尤为迫切。本发明包括生产者加密方法和运行前动态解密方法两个部分。本发明将解密方法写在外部dll文件中,可以将代码的安全级别提升至二进制。并利用白盒密码加密的方式避免第三方绕开dll文件记载的解密方法进行直接破解。此外,本发明仅将解密表提供给使用者,而不向使用者提供密钥和加密表由厂商持有,并以此对关键的字节码文件进行加密。从而在保证java文件使用效果的同时,有效避免密钥外泄导致的风险。
技术领域
本发明属于信息安全领域,具体是软件版权保护领域,涉及一种防止源代码反编译的方法,具体是一种通过结合白盒密码和JVMTI(Java虚拟机接口工具)对关键字节码文件进行安全加密,并在运行前解密的方法。能够有效地防止软件源代码被逆向分析。
背景技术
近年来,软件技术发展的速度越来越快,各种各样不同功能的软件进入市场。要设计开发一个软件通常需要花费大量的时间与金钱。然而,许多不法分子对软件进行逆向分析、非法破解,不仅对软件著作权人造成了极大的损失,而且会阻碍软件产业的健康发展。Java是一种跨平台运行的语言,与C++编译得到的二进制文件不同,其编译成的字节码文件具有标准化、直接可读等特点,目前存在许多Java工程逆向工具,不需要掌握深入的专业知识,就可以轻易地将Java工程反编译为源码。
因此针对Java开发的软件产品的保护需求尤为迫切。目前主流的Java代码保护方法包括:代码混淆、自定义类加载器、本地化技术、软件哨兵、加壳等。代码混淆方法都有规律可循,有经验的攻击者可反过来使用混淆器,对混淆的方法进行解混淆。自定义类加载器方法虽然可以保护关键代码,但是类加载器的加载方法还是会暴露在源码中。利用本地化技术和加壳方法可以将代码提升到二进制安全级别,但会使Java丧失跨平台优点,导致交互性变差。软件哨兵可以有效对抗动态分析,但反编译得到源码后仍可逐一关闭哨兵。
所以在不改变Java程序可移植性的同时,进一步增强程序的抗反编译能力,才能更好地解决软件盗版问题。
发明内容
本发明的目的就是提供一种可移植性强、安全性高的源代码保护方法。该方法采用JVMTI技术,在字节码被JVM加载前动态解密,并使用白盒密码作为加解密方案。能够有效地防止软件源代码被逆向分析。
一种用于Java软件防盗版的加密编译和运行方法,包括生产者加密方法和运行前动态解密方法两个部分。
所述的生产者加密方法的具体步骤如下:
(1).指定密钥并生成加解密表
对软件中需要加密的Java文件指定对应的密钥。利用白盒密码算法生成密钥对应的加密表和解密表。
(2).筛选出待加密的类名或包名
在Java文件中筛选出需要加密的字节码文件,并利用加密表对筛选出的字节码文件进行白盒密码加密,生成加密文件。
(3).软件交付
将解密方法定义在dll文件中,将解密表和dll文件一起交付给用户。用户能够利用解密表和dll文件来对加密文件进行解密和运行。
所述的运行前动态解密方法具体是:
(1).加载JVMTI以及dll文件中的解密方法。
(2).在Java文件中筛选出加密文件,并利用解密表和dll文件中的解密方法对加密文件进行解密,还原出初始状态的字节码文件。
(3).将解密得到的字节码文件在JVM中进行加载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州电子科技大学,未经杭州电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110750549.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种外置声卡
- 下一篇:一种纳米纤维素气凝胶、其制备方法及在卷烟中的用途