Home | Favorite | Sitemap | search
  • 成功栏目导航
  • 成功教育学
  • 成功创业者
  • 成功投资者
  • 成功管理学
  • 成功心理学
  • 领袖栏目导航
  • CEO
  • CFO
  • CIO
  • CTO
  • CKO
  • CHO
  • CMO
  • CNO
  • CQO
  • CBO
  • CCO
  • CVO
  您现在的位置: 成功领袖网 >> 首席技术官CTO >> 成长手册 >> 文章正文
如何有效防止Java程序源码被人偷窥?

  Java程序的源代码很容易被别人偷看,只要有一个反编译器,任何人都可以分析别人的代码。本文讨论如何在不修改原有程序的情况下,通过加密技术保护源代码。

  一、为什么要加密?

  对于传统的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,稍微增加了一些工作量。

  二、定制类装入器

  每一个运行着的JVM已

[1] [2] 下一页

  • 上一篇文章: JAVA程序员应该了解的10个JSP标签库
  • 下一篇文章: 没有了
  • 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】
    【网友评论】
    千奇百怪的提示信息 一起来开…
    探访盖茨基金会总部
    阿里巴巴卫哲:并非传奇
    十种点击率最高的博客
    • 【郑重声明】
    • 免责声明:成功领袖网登载此文出于传递信息之目的,绝不意味着成功领袖网赞同其观点或证实其描述。以上内容仅供网友学 习与交流,无意侵犯版权。如有侵犯您的利益,请告知。我们将尽快删除。
    基本信息
    • 作者:佚名
    • 来源:不详
    • 阅读:
    • 时间:2007-7-30

    相关信息
    • 模仿的十年,看中国IT企业如何优秀
      如何才能正确地激励程序员
      案例学习:如何让你的SQL运行得更快
      你应当如何学习C++以及编程
      Oracle数据复制技术有效解决数据冗余
      如何保证Linux操作系统下的密码安全
      看微软内部如何对Vista测试
      模仿的十年,看中国IT企业如何优秀
      网站如何建设才能出效益
      教你三点如何判断ERP软件是否合用?

    点击排行
    • 普通文章 阿里巴巴卫哲:并非传奇
      普通文章 男性经理人的财富品位
      普通文章 总监日记:从技术高手到CTO的跨…
      普通文章 联想总监如何走出“联想”(三…
      普通文章 联想总监如何走出“联想”(一…
      普通文章 陈超仁说自己的CTO成长史
      普通文章 阿里进行组织调整 分拆成BC两大…
      普通文章 谁才是最伟大的慈善家
      普通文章 加菲猫的叫声会把网络语言扶正…
      普通文章 十种点击率最高的博客
      普通文章 让“疯子”来得更多一些吧
      普通文章 赚钱能力测试:测试你的赚钱能…
    评论排行
    • 推荐文章 揭秘网语出生,破译网言密电码
      推荐文章 男人上网都干些什么?
      推荐文章 新世界集团高层称软件董事长涉…
    关于我们 | 联系方式 | 合作伙伴 | 友情链接 | 站点地图 | 网站大事记 | 留言反馈 | 老网站
    为了使本网站能够得到更好的浏览效果,请您使用IE6.0或以上版本浏览 (For better browsing effect,Recommend to use IE6.0 or above)
    版权所有 成功领袖网 www.21cbpc.com 最佳分辨率 1024×768 E-mail:21cbpc@gmail.com 灵意设计全程网络策划 备案序号:粤ICP备05135149号