JAVA应用简单破解--类库提前加载
【打印文章】
来源:赛迪网 作者:dxaw
在JAVA运行的时加载jar包类库 要是有相同的包路径,相同的类名字出现,那么JVM是否 会报告错误呢?
当然不会! JVM只会加载最早的出现的CLASS
首先JVM会加载 自己默认的包 然后加载 EXT目录下面的所有JAR 再到 classpath
那么 现在有2个 JAR 分别是 kj021320.jar summer.jar 里面都有包路径cn.isto
同样有 类Jcrack.class 那么 JVM就会看哪个 类先加载到VM中就用哪个!后面读进来的 如果路径名字一样 就会丢弃!
想到以上加载方式大家会想象到什么呢?
我们首先设计一个类
//这个是专门破解的类
package cn.isto;
public class Jcrack{
public Jcrack(){}
boolean getLogin(String pwd){
return true;
}
}
里面只有一个方法判断 登陆是否成功 直接返回一个true
把这个类打包为 kj021320.jar
下面我们再来写2个类
//这个是真正运行时候判断登陆的类
package cn.isto;
public class Jcrack {
public Jcrack() {
}
boolean getLogin(String pwd){
return "KJ021320".equals(pwd);
}
}
//调用登陆验证的类
package cn.isto;
public class JMain {
public JMain() {
}
public static void main(String[] args){
System.out.println(new Jcrack().getLogin("Summer"));
}
}
很明显我们把上面2个类编译OK后 直接运行! 不用看控制台都会打印false
然而我们再把上面kj021320.jar加载回来再运行 JMain类
系统就会显示true 简单说因为 JVM把正常用户的Jcrack类抛弃了!而加载了我们自己修改的Jcrack类!
JAVA应用就这样简单破解了!
在JAVA运行的时加载jar包类库 要是有相同的包路径,相同的类名字出现,那么JVM是否 会报告错误呢?
当然不会! JVM只会加载最早的出现的CLASS
首先JVM会加载 自己默认的包 然后加载 EXT目录下面的所有JAR 再到 classpath
那么 现在有2个 JAR 分别是 kj021320.jar summer.jar 里面都有包路径cn.isto
同样有 类Jcrack.class 那么 JVM就会看哪个 类先加载到VM中就用哪个!后面读进来的 如果路径名字一样 就会丢弃!
想到以上加载方式大家会想象到什么呢?
我们首先设计一个类
//这个是专门破解的类
package cn.isto;
public class Jcrack{
public Jcrack(){}
boolean getLogin(String pwd){
return true;
}
}
里面只有一个方法判断 登陆是否成功 直接返回一个true
把这个类打包为 kj021320.jar
下面我们再来写2个类
//这个是真正运行时候判断登陆的类
package cn.isto;
public class Jcrack {
public Jcrack() {
}
boolean getLogin(String pwd){
return "KJ021320".equals(pwd);
}
}
//调用登陆验证的类
package cn.isto;
public class JMain {
public JMain() {
}
public static void main(String[] args){
System.out.println(new Jcrack().getLogin("Summer"));
}
}
很明显我们把上面2个类编译OK后 直接运行! 不用看控制台都会打印false
然而我们再把上面kj021320.jar加载回来再运行 JMain类
系统就会显示true 简单说因为 JVM把正常用户的Jcrack类抛弃了!而加载了我们自己修改的Jcrack类!
JAVA应用就这样简单破解了!
本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。( Pfan.cn )
【编程爱好者论坛】