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

原创 2007年09月15日 12:25:00
信息来源: I.S.T.O信息技术团队(http://blog.csdn.net/I_S_T_O   官方论坛:http://bbs.isto.cn)

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应用就这样简单破解了!
具体类加载资料可以参阅
 

只用Android Studio完成应用类库编译及加载

转载请注明:http://blog.csdn.net/langyuewu/article/details/39474993        常常会有些开源类库,如PullToRefresh等...

只用Android Studio完成应用类库编译及加载

常常会有些开源类库,如PullTo

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

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

细说PHP类库自动加载

  • 2013年09月23日 13:25
  • 375KB
  • 下载

iOS UITableView下拉刷新上拉加载更多EGOTableViewPullRefresh类库使用初级剑侠篇(欢迎提建议和分享遇到的问题)

这篇文章说下:MJRefresh和  EGOTableViewPullRefresh 的使用方法最下面有原理说明,若有不对或者建议请评论指出,先谢谢了: 首先是英文原文和类库下载地址:https:/...

ListView的简单应用和滑动加载数据

  • 2015年09月10日 23:30
  • 5.22MB
  • 下载

iOS开发之SDWebImage(一个可管理远程图片加载的类库)的使用

SDWebImage托管在github上。https://github.com/rs/SDWebImage 这个类库提供一个UIImageView类别以支持加载来自网络的远程图片。具有缓存管理、...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA 应用简单破解---类库提前加载
举报原因:
原因补充:

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