JAVA教程之专家和您一同谈谈java加壳的成绩
还得说上一点,就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工具的整合。 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
页:
[1]