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,稍微增加了一些工作量。
分享到:
相关推荐
如何有效防止Java程序源码被人偷窥.doc
Java源码保护技术 - 如何有效防止 Java 程序源码被人偷窥? Java 程序的源代码很容易被别人偷看,只要有一个反编译器,任何人都可以分 析别人的代码。
USB摄像头偷窥终结者(防止别人偷窥你)
U盘偷窥者主程序+隐藏代码,学习之用!可以借鉴探讨
在网络安全越来越被重视的今天,如何保证摄像头不被偷窥?借助这个小工具可以帮我们给摄像头加把锁,这个软件可以给你的摄像头加上密码,不输入密码谁也无法启动摄像头,可以有效防止那些利用摄像头来偷窥的软件。这...
偷窥者远程控制软件的VC源代码,正确无误的源代码,现供大家免积分下载。
害怕视频被偷偷打开,于是只好拿一张纸贴上摄像头,防止被偷窥? 那就赶快使用360视频防窥贴吧,您可以使用一张图片来替换您的视频画面,达到视频隐身/防窥的效果。 想不想让对方看到趣味的图片呢?比如洗澡中?...
偷窥各种桌面程序SPwdSpyDemo_Src
易语言密码文本偷窥器源码,密码文本偷窥器,WindowFromPoint,SendMessage,SendMessage1,PostMessage
鼠标键盘记录偷窥器鼠标键盘记录偷窥器鼠标键盘记录偷窥器鼠标键盘记录偷窥器鼠标键盘记录偷窥器鼠标键盘记录偷窥器鼠标键盘记录偷窥器
CSS3可爱偷窥小狗动画代码,偷看的小狗动画代码。
人类最厉害的莫过于缜密的大脑,而现在,有研究表明,这一人类最后的堡垒或将被攻破。 研究人员已经开发出第一种非侵入性的方法来确定内在言语(inner speech)的要点,为不能说话的人提供了一个可能的沟通渠道。 ...
安装完Mysql后,使用VS打开源码开开眼,我嘞个去,这代码和想象中怎么差别这么大呢?
本人亲自开发的,好用,谢谢本人亲自开发的,好用,谢谢
Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能: 认证 - 用户身份识别,常被称为用户“登录”; 授权 - 访问控制; 密码加密 - 保护或隐藏数据防止被偷窥; 会话管理 - ...
电脑开机输入一大串密码嫌麻烦?担心输入密码被有心之人偷窥?担心密码被熊孩子偷偷记住?只需这个软件,和密码说再见!电脑也能实现指纹解锁!(可以实现任何带指纹安卓手机瞬间解锁电脑!解锁只需1秒!)
jfinal培训+shiro介绍 ...密码加密 - 保护或隐藏数据防止被偷窥; 会话管理 - 每用户相关的时间敏感的状态。 对于任何一个应用程序,Shiro都可以提供全面的安全管理服务。并且相对于其他安全框架,Shiro要简单的多
这是一个不可多得的工具,它不仅能偷窥各种桌面程序的密码框,还能窥到IE页面中的密码框,这个程序就是本文要介绍的——SuperPasswordSpy++。 关键字:hook,ie,com,钩子,安全上下文