利用jclasslib修改java编译后的.class文件

来源:互联网 发布:库存数据分析方法 编辑:程序博客网 时间:2024/04/28 17:36

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) {        }    }}
原创粉丝点击