当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:14:00  来源:本站整理

利用加密技术保护Java源代码[Java编程]

赞助商链接



  本文“利用加密技术保护Java源代码[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

Java程序的源代码很简单被别人偷看.只要有一个反编译器,任何人都可以解析别人的代码.本文谈论如安在不改正原有程序的情形下,通过加密技术保护源代码.

1、为什么要加密?

关于传统的C或C++之类的语言来说,要在Web上保护源代码是很简单的,只要不公布它便可以.遗憾的是,Java程序的源代码很简单被别人偷看.只要有一个反编译器,任何人都可以解析别人的代码.Java的机动性使得源代码很简单被盗取,但与此同时,它也使通过加密保护代码变得相对简单,我们唯一需求理解的就是Java的ClassLoader对象.当然,在加密历程中,有关Java Cryptography Extension(JCE)的知识也是必不可少的.

有几种技术可以“模糊”Java类文件,使得反编译器处理类文件的效果大打折扣.但是,改正反编译器使之可以处理这些经过模糊处理的类文件并非什么难事,所以不能简单地依靠模糊技术来保证源代码的安全.

我们可以用风行的加密工具加密利用,比方PGP(Pretty Good Privacy)或GPG(GNU Privacy Guard).这时,终究用户在运行利用之前必须先举行解密.但解密之后,终究用户就有了一份不加密的类文件,这和事前不举行加密没有什么差别.

Java运行时装入字节码的机制隐含地意味着可以对字节码举行改正.JVM每次装入类文件时都需求一个称为ClassLoader的对象,这个对象负责把新的类装入正在运行的JVM.JVM给ClassLoader一个包含了待装入类(比方java.lang.Object)名字的字符串,然后由ClassLoader负责找到类文件,装入原始数据,并把它转换成一个Class对象.

我们可以通过定制ClassLoader,在类文件履行之前改正它.这种技术的利用非常遍及??在这里,它的用处是在类文件装入之时举行解密,因此可以当作是一种当即解密器.由于解密后的字节码文件永久不会保存到文件系统,所以保密者很可贵到解密后的代码.

由于把原始字节码转换成Class对象的历程完好由系统负责,所以成立定制ClassLoader对象其实并不艰难,只需先得到原始数据,接着便可以举行包含解密在内的任何转换.

Java 2在一定程度上简化了定制ClassLoader的构建.在Java 2中,loadClass的缺省实现仍旧负责处理全部必须的步骤,但为了顾及各种定制的类装入历程,它还调用一个新的findClass办法.

这为我们编写定制的ClassLoader供应了一条捷径,削减了麻烦:只需覆盖findClass,而不是覆盖loadClass.这种办法避免了反复全部装入器必须履行的大众步骤,因为这一切由loadClass负责.

不过,本文的定制ClassLoader并不利用这种办法.缘由很简单.假如由默许的ClassLoader先探求经过加密的类文件,它可以找到;但由于类文件已经加密,所以它不会承认这个类文件,装入历程将失利.因此,我们必须自己实现loadClass,略微增添了一些工作量.

2、定制类装入器

每一个运行着的JVM已经拥有一个ClassLoader.这个默许的ClassLoader按照CLASSPATH环境变量的值,在本地文件系统中探求符合的字节码文件.

利用定制ClassLoader要求对这个历程有较为深化的熟习.我们首先必须成立一个定制ClassLoader类的实例,然后显式地要求它装入别的一个类.这就强迫JVM把该类以及全部它所需求的类关联到定制的ClassLoader.Listing 1显示了若何用定制ClassLoader装入类文件.

【Listing 1:操纵定制的ClassLoader装入类文件】

// 首先成立一个ClassLoader对象
ClassLoader myClassLoader = new myClassLoader();
// 操纵定制ClassLoader对象装入类文件
// 并把它转换成Class对象
Class myClass = myClassLoader.loadClass( "mypackage.MyClass" );
// 最后,成立该类的一个实例
Object newInstance = myClass.newInstance();
// 注意,MyClass所需求的全部其他类,都将通过
// 定制的ClassLoader自动装入


  以上是“利用加密技术保护Java源代码[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 利用加密技术保护Java源代码
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .