一种基于Java的软件安全性加强的方法

文档序号:6600988阅读:122来源:国知局
专利名称:一种基于Java的软件安全性加强的方法
技术领域
本发明涉及java进行软件开发领域,具体涉及一种通用的、灵活的、高可扩展的 模块化的代码加密方法。
背景技术
当前,世界大多数的软件开发公司都在使用java进行软件开发,据51Cto网络统 计,世界前20名的软件公司,大都使用了 java进行软件开发,java语言开发范围涉及广。 利用java语言开发的系统涉及范围更是囊括了财务软件,ERP软件,物流软件等信息管理 系统,这些都是各软件开发公司花费大量的人力、物力、财力开发的软件,甚至是公司的唯 一盈利模式,但是当java开发的软件经过传统的部署模式进行部署以后,根据java的开源 性质,java软件的运行机制已经被很多顶尖高手熟悉,他们开发出了可以反编译java生成 的class文件,使得软件对于有java知识的人暴露无遗,也使得软件公司的心血很快被模 仿,造成软件公司开发的产品迅速在市场被各公司模仿。为了解决java开发的软件被反编译,我们提出一种java新的部署模式,即部署的 java软件的class文件利用我们的方法加密,进行代码加密,从而达到防止被反编译。

发明内容
本发明的目的是提供一种基于Java的软件安全性加强的方法。本发明的目的是按以下方式实现的,使用代码保护方法对java生成的class代码 进行加密,对Class文件进行加密处理,使得处理后的代码与处理前代码完成相同的功能, 但是加密的代码很难被反编译,即反编译后得出的代码是非常难懂、晦涩的加密后文件,因 此反编译人员很难得出程序的真正语义,这样即保证java开发软件的跨平台特性,又防止 开发的软件被别人反编译后轻易获取,达到了保护软件的目的,该方法包括对class文件 的加密过程和class文件在被jvm加载时执行前的解密过程,步骤如下1)在程序代码完成后,对生产的class文件进行加密,并保存加密算法,以在jvm 执行时得到解密方法;2) Jvm执行时通过load Class进行class文件加载,在加载过程中,首先得到文件 的加密算法,根据对应的解密算法对文件进行解密,然后转交jvm执行。根据我们内部定义的加密方法,首先对生成的class文件进行加密,然后打包,客 户安装部署后,暴露给客户的是加密后的class文件,反编译人员无法通过反编译得到正 确的代码,保证了源代码安全。程序被安装、部署以后,在执行过程中,首先通过jvm调用我们重载过的 IoadClass类,对加密的class文件进行加载,并根据对应的加密算法对class文件进行解 密,然后把主动权交与jvm对class文件执行,实现程序的正常引导和使用。本发明的Java生成的class文件的加密方法使用后的优异效果是,我们可以利用 当前比较流行的对称加、解密算法进行。对生成的class代码进行加密,在执行时进行解密,从而达到保护代码的目的。


附图1为传统的java执行过程示意图;附图2为经过保护的java执行过程示意图;附图3为传统的class文件被反编译示意图;附图4为加密后的class文件被编译过程示意图。
具体实施例方式参照说明书附图对本发明的作以下详细地说明。参考附图1,传统的java文件执行过程传统的部署,我们生成的class文件打成jar包,进行程序发布,当安装了 java虚 拟机以后,jvm根据程序的配置进行jar的加载,读取到其中的class文件进行执行。此处 class文件可被反编译参考附图2,保护的java执行过程根据我们内部定义的加密方法,首先对生成的class文件进行加密,然后打包,客 户安装部署后,暴露给客户的是加密后的class文件,反编译人员无法通过反编译得到正 确的代码,保证了源代码安全。程序被安装、部署以后,在执行过程中,首先通过jvm调用我们重载过的 IoadClass类,对加密的class文件进行加载,并根据对应的加密算法对class文件进行解 密,然后把主动权交与jvm对class文件执行,实现程序的正常引导和使用。Java运行时装 入字节码的机制隐含地意味着可以对字节码进行修改。JVM每次装入类文件时都需要一个 称为ClassLoader的对象,这个对象负责把新的类装入正在运行的JVM。JVM给ClassLoader 一个包含了待装入类(比如java. lang. Object)名字的字符串,然后由ClassLoader负责 找到类文件,装入原始数据,并把它转换成一个Class对象。我们可以通过定制ClassLoader,在类文件执行之前修改它。在这里,它的用途是 在类文件装入之时进行解密,因此可以看成是一种即时解密器。由于解密后的字节码文件 永远不会保存到文件系统,所以窃密者很难得到解密后的代码。Java在一定程度上简化了定制ClassLoader的构建。在Java中,IoadClass的缺 省实现负责处理所有必需的步骤,但为了顾及各种定制的类装入过程,它还调用一个新的 findClass方法。这为我们编写定制的ClassLoader提供了一条捷径,减少了麻烦只需覆 盖findClass,而不是覆盖loadClass。这种方法避免了重复所有装入器必需执行的公共步 骤,因为这一切由IoadClass负责。不过,本发明的定制ClassLoader并不使用这种方法。原因很简单。如果由默认的ClassLoader先寻找经过加密的类文件,它可以找到;但由于类文件已经加密,所以它不 会认可这个类文件,装入过程将失败。因此,我们必须自己实现loadClassJnAT class文 件的加、解密机制,即保证了程序运行安全,又保证了代码安全。
权利要求
一种基于Java的软件安全性加强的方法,其特征在于,使用代码保护方法对java生成的class代码进行加密,对Class文件进行加密处理,使得处理后的代码与处理前代码完成相同的功能,但是加密的代码很难被反编译,即反编译后得出的代码是非常难懂、晦涩的加密后文件,因此反编译人员很难得出程序的真正语义,这样即保证java开发软件的跨平台特性,又防止开发的软件被别人反编译后轻易获取,达到了保护软件的目的,该方法包括对class文件的加密过程和class文件在被jvm加载时执行前的解密过程,步骤如下1)在程序代码完成后,对生产的class文件进行加密,并保存加密算法,以在jvm执行时得到解密方法;2)Jvm执行时通过load Class进行class文件加载,在加载过程中,首先得到文件的加密算法,根据对应的解密算法对文件进行解密,然后转交jvm执行。
全文摘要
本发明提供一种基于Java的软件安全性加强的方法是根据我们内部定义的加密方法,首先对生成的class文件进行加密,然后打包,客户安装部署后,暴露给客户的是加密后的class文件,反编译人员无法通过反编译得到正确的代码,保证了源代码安全。程序被安装、部署以后,在执行过程中,首先通过jvm调用我们重载过的loadClass类,对加密的class文件进行加载,并根据对应的加密算法对class文件进行解密,然后把主动权交与jvm对class文件执行,实现程序的正常引导和使用。
文档编号G06F21/24GK101814124SQ20101015056
公开日2010年8月25日 申请日期2010年4月20日 优先权日2010年4月20日
发明者曹其顺 申请人:浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1