|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
还得说上一点,就java本质而言,是面相对象的,但是你有没有发现,java也不全是,比如说基本类型,int,那他就是整型而不是对象,转换类型是还得借助包装类。成绩 在C天下,对代码举行加密,次要经由过程加壳的体例。所谓加壳,就是先将程序代码加密,然后用特定的程序加载器,将代码解密后加载进内存,如许能够在避免代码的反编译,固然,有加壳工具,也有解壳工具,固然不克不及100%避免crack,但仍旧给代码增添一层无力的回护。
但是在Java天下,回护代码是件很坚苦的事变,由于class文件十分标准,极易反编译,且反编译后的代码明晰可读。罕见的回护举措是利用搅浑器,打乱class和function和变量的名字,能够搅扰反编译后的代码的可读性。固然复杂进步了代码的平安性,但还仅仅相称于未加壳的C程序。
java能够加壳吗?之前我以为这是不成能的,由于静态加载代码如许的内存级其余操纵,java没法做到,除非利用JNI(JavaNativeInterface),挪用本人编写的C代码,在C代码中完成静态加载java代码。可是,C怎样加载java代码呢?这必要对JVM相称的懂得。以是事先的我以为这是不成能的。
但是,比来打仗的一些常识告知我――java也能够加壳!!
1.URLClassLoader。用URLClassLoader能够在java程序的运转时代,再将文件夹大概jar到场到classpath中,这个特征现实上就是静态加载。既然能够静态加载class的文件夹大概jar,为什么不成以加载加密后的classes呢,将classes用本人的体例加密,在URLClassLoader挪用时,利用本人的体例解密。不就是到达了加壳的目标了吗?不外解密的代码放在那边是个成绩,就是说解壳器的代码表露在外,仍是很伤害的。
2.javassist。这其实是一个十分奇妙的新手艺,我是在进修Tapestry5时第一次碰到这个包的,他能够静态创立java字节码,乃至能够修正你已写好的函数,好比你的getter和setter,只是复杂的读取和赋值,你能够在Runtime用他修正你的getter和setter,让你的getter和setter每次挪用时都能够触发某些代码。借助这项奇妙的手艺,必定能够完成更壮大的静态加载,加壳也就有了大概。
让我有些不爽的是,javassist又是小日本创立的项目。
http://www.open-open.com/open54954.htm
Javassist是一个开源的剖析、编纂和创立Java字节码的类库。是由东京手艺学院的数学和盘算机迷信系的ShigeruChiba所创立的。它已到场了开放源代码JBoss使用服务器项目,经由过程利用Javassist对字节码操纵为JBoss完成静态AOP框架。
最后就是我对java的几点希望:首先是IDE工具,有人说java已经很好了,有jbuilder,eclipse,netBeans等等,但是我认为如果java想超越.net,那么他首先要解决的就是IDE工具的整合。 |
|