JAVA 应用简单破解---类库提前加载

原创 2007年09月11日 19:24:00

 

 

信息来源: I.S.T.O信息技术团队(http://blog.csdn.net/I_S_T_O

author: Summer and kj021320
Team : I.S.T.O

在我接触JDK3的时候已经发现有类/包加载的问题,只是当时候没注意!还多得Summer提醒。
在JAVA运行的时加载jar包类库 要是有相同的包路径,相同的类名字出现
那么JVM是否 会报告错误呢?
当然不会! JVM只会加载最早的出现的CLASS
首先JVM会加载 自己默认的包  然后加载 EXT目录下面的所有JAR  再到 classpath
那么 现在有2个 JAR 分别是  kj021320.jar  summer.jar  里面都有包路径cn.isto 
同样有 类Jcrack.class 那么 JVM就会看哪个 类先加载到VM中就用哪个!后面读进来的 如果路径名字一样 就会丢弃!
想到以上加载方式大家会想象到什么呢?

OK 那么我们首先设计一个类
//这个是专门破解的类
package cn.isto;
public class Jcrack{
 public Jcrack(){}
 boolean getLogin(String pwd){
  return true;
 }
}

里面只有一个方法判断 登陆是否成功 直接返回一个true
OK把这个类打包为 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应用就这样简单破解了!
具体类加载资料可以参阅
http://blog.csdn.net/I_S_T_O/archive/2007/09/11/1780969.aspx

 

类加载器深入理解

Java类加载器深入理解,包括类加载器的命名空间、类加载器的双亲委派模型的实现原理、Tomcat类加载器体系结构...
  • sunxianghuang
  • sunxianghuang
  • 2016年08月11日 23:21
  • 3232

TomCat类加载器结构

一个功能健全的类加载器,都要解决以下几个问题: (1)部署在同一服务器上的两个web应用程序所使用的java类库可以实现相互隔离。这是最基本的需求,两个不同的应用程序可能会依赖同一个第三方类库的不同...
  • u011393781
  • u011393781
  • 2016年10月21日 16:23
  • 581

Android对第三方类库运行时加载

首先,把需要运行时加载的类库,放到项目的其他目录,如新建一个thirdlibs的目录。然后用dx命令,对下面的类库进行压缩,做成dex文件。 dx --dex --output=../assets/ ...
  • dzg1977
  • dzg1977
  • 2014年12月02日 20:39
  • 2689

Android动态加载学习总结(一):类加载器

参考资料: 《深入理解Java虚拟机》 -周志明 Android中的动态加载机制本篇不深入涉及Java类加载器,如果想更深入了解,可以看一下这篇博客http://blog.csdn.net/zh...
  • gaozhan_csdn
  • gaozhan_csdn
  • 2016年08月01日 15:15
  • 3930

java类加载器及常用java应用服务器类加载机制简介

以下内容出自一个同事的整理资料。   一。java类加载器机制简介   这个由Bootstrap Loader -> ExtClassLoader -> AppClassLoader,就是...
  • huangyuanmu
  • huangyuanmu
  • 2013年11月18日 13:23
  • 783

java类的加载过程和类加载器的分析

我们知道,我们写的java代码保存的格式是 .java, java文件被编译后会转换为字节码,字节码可以在任何平台通过java虚拟机来运行,这也是java能够跨平台的原因。 那JVM是如何来让我们...
  • world6
  • world6
  • 2016年07月27日 08:41
  • 1471

Java高新技术第一篇:类加载器详解

首先来了解一下字节码和class文件的区别: 我们知道,新建一个java对象的时候,JVM要将这个对象对应的字节码加载到内存中,这个字节码的原始信息存放在classpath(就是我们新建Java工程...
  • jiangwei0910410003
  • jiangwei0910410003
  • 2014年01月01日 14:45
  • 24715

从经典面试题看java中类的加载机制

1.概述 类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行,对理解java虚拟机的连接模型和java语言的动态性都有很大帮助。 ...
  • qq_16216221
  • qq_16216221
  • 2017年05月11日 09:23
  • 2247

ECharts初识与Echarts-java类库应用

ECharts,缩写来自Enterprise Charts,商业级数据图表,来自百度的一款开源、功能强大的数据可视化产品,从官网的example中可以看到能够实现目前见到的各种图形报表,并且带有详细的...
  • akkzhjj
  • akkzhjj
  • 2015年05月31日 20:40
  • 6152

[疯狂Java]JDBC:加载数据库驱动、连接数据库

1. 加载数据库驱动:     1) 由于Java是一个纯面向对象语言,任何事物在其中都必须抽象成类或者类对象,数据库也不例外,JDBC同样也把数据库抽象成面向对象的结构;     2) JDBC将整...
  • Lirx_Tech
  • Lirx_Tech
  • 2016年04月11日 16:05
  • 3789
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA 应用简单破解---类库提前加载
举报原因:
原因补充:

(最多只允许输入30个字)