快捷搜索:

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利用就这样简单破解了!

您可能还会对下面的文章感兴趣: