zoukankan      html  css  js  c++  java
  • 利用jclasslib修改java编译后的.class文件

    java编译后的.class文件,当然是可以反编译的,但主要是反编译后的java文件不能100%的完全正确,也不能保证能编译回去,所以直接修改.class文件比较靠谱。

    1.可以用jd-gui反编译,找到method

    2.用java bytecode (jclasslib) 查找要修改的变量地址

    3.使用一下代码修改:

    package com.zhahost;
    
    import java.io.*;
    
    import org.gjt.jclasslib.io.ClassFileWriter;
    import org.gjt.jclasslib.structures.CPInfo;
    import org.gjt.jclasslib.structures.ClassFile;
    import org.gjt.jclasslib.structures.constants.ConstantDoubleInfo;
    
    public class ModifyByteCode {
        public void Run() {
            try {
                String filePath = "C:\\ExcelExporter.class";
                FileInputStream fis = new FileInputStream(filePath);
    
                DataInput di = new DataInputStream(fis);
                ClassFile cf = new ClassFile();
                cf.read(di);
                CPInfo[] infos = cf.getConstantPool();
    
                int pos = 148;
                if (infos[pos] != null) {
                    ConstantDoubleInfo uInfo = (ConstantDoubleInfo) infos[pos];
                    uInfo.setDouble(1.0);
                    infos[pos] = uInfo;
                }
    
                cf.setConstantPool(infos);
    
                fis.close();
                File f = new File(filePath);
                ClassFileWriter.writeToFile(f, cf);
    
            } catch (Exception e) {
    
            }
        }
    }

    留着备用,一般人看不懂...

  • 相关阅读:
    SCCM 2007 部署软件更新
    WPF开发工具
    体验Windows Live Writer写Blog
    图像的灰度和黑白处理算法
    很有用的Sql总结转载
    WPF 体验导航窗口
    WPF 一周练
    WPF 图表
    也说Linq 分组
    WPF 体验对话框调用
  • 原文地址:https://www.cnblogs.com/zhahost/p/2644207.html
Copyright © 2011-2022 走看看