赛迪网 > IT技术 Java > 头条列表
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

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

发布时间:2007.09.14 06:20     来源:赛迪网    作者: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垃圾收集算法 (09-13) · 基于Java的界面布局 DSL 的设计与实现 (09-12)
· Java编译器对于String常量表达式的优化 (09-12) · 安全技巧 通过命令限制上网用户的权限 (09-12)
· 理解Java应用服务器中的七种武器 (09-12) · Jboss中如何在不同应用间共享类和资源 (09-11)
· 解决在J2ME平台上的手机游戏移植的问题 (09-11) · 技巧:IP地址短缺成问题 路由器NAT来处理 (09-11)
· 在Java中利用JCOM实现仿Excel编程详解 (09-10) · Java性能调优工具“JRMC”的介绍 (09-10)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 中小企业发展缓慢 电子商务存在的问题多
· 马云追加20亿投资淘宝 图谋电子商务霸主
· 国产ITIL运维先行者 四大厂商角力BI市场
· 企业信息安全解决方案 方正电子公文系统
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统