zoukankan      html  css  js  c++  java
  • 使用jd-gui+javassist修改已编译好的class文件

    1.原因:因为公司代码管理不当导致源码丢失,只好已编译好的class文件进行修改

    2.首先先在myeclipse中新建java项目并导入javassist

    3.将需要修改的文件放到指定文件夹下

    4..在项目中添加以下代码

    package dtj;
    
    import javassist.ClassPool;
    import javassist.CtClass;
    import javassist.CtMethod;
    import javassist.NotFoundException;
    
    public class MyTest {
    
    ///////入口启动函数
    
           public static void main(String[] args) throws Exception {
    
           //这个是得到反编译的池
    
          ClassPool pool = ClassPool.getDefault();
          
          pool.insertClassPath("E:/dtj") ;
          
        //取得需要反编译修改的文件,注意是完整路径
    
          CtClass cc1 = pool.get("SmsSender");
    
          try {
              
              
              cc1.setName("CTCC_SmsSender");
              //取得需要修改的方法
    
             // CtMethod method = cc1.getDeclaredMethod("a");
    
             //插入修改项,我们让他直接返回(注意:根据方法的具体返回值返回,因为这个方法返回值是void,所以直接return;)
    
             // method.insertBefore("{if(true) return ;}");
    
              //写入保存
    
              cc1.writeFile();
    
          } catch (NotFoundException e) {
    
              e.printStackTrace();
    
         }
    
    } 
    }

     注:jd-gui和javassist的下载地址

    http://download.csdn.net/detail/createnum/9454787

  • 相关阅读:
    区块链|学习笔记(三)
    左神算法之获取栈中最小值
    23种设计模式之适配器模式
    二叉树序列化和反序列化
    归并排序
    通过集合构建RDD或者DataFrame
    内核源码分析——shuffle
    问题
    函数参数
    问题记录
  • 原文地址:https://www.cnblogs.com/dtj007/p/5251226.html
Copyright © 2011-2022 走看看