直接修改class文件 工具:jclasslib

来源:互联网 发布:iphone的照片传到mac 编辑:程序博客网 时间:2024/04/29 00:12

1、用class file editor打开要修改的class,找到要修改的行号(如果597行)

2、编写main方法来修改

package test;import java.io.DataInput;import java.io.DataInputStream;import java.io.File;import java.io.FileInputStream;import org.gjt.jclasslib.io.ClassFileWriter;     import org.gjt.jclasslib.structures.CPInfo;     import org.gjt.jclasslib.structures.ClassFile;     import org.gjt.jclasslib.structures.constants.ConstantUtf8Info;  public class Test {public static void main(String[] args) throws Exception {    String filePath = "E:\\jxt\\JXTAPIForYKT.class";   //class所在路径         FileInputStream fis = new FileInputStream(filePath);                        DataInput di = new DataInputStream(fis);            ClassFile cf = new ClassFile();            cf.read(di);            CPInfo[] infos = cf.getConstantPool();                        int count = infos.length;         for (int i = 0; i < count; i++) {                if (infos[i] != null) {                    System.out.print(i);                    System.out.print(" = ");                    System.out.print(infos[i].getVerbose());                    System.out.print(" = ");                    System.out.println(infos[i].getTagVerbose());                    if(i == <strong><span style="color:#FF0000;">597</span></strong>){                        ConstantUtf8Info uInfo = (ConstantUtf8Info)infos[i];                        uInfo.setBytes("to_id".getBytes());                        infos[i]=uInfo;                    }                }            }            cf.setConstantPool(infos);            fis.close();            File f = new File(filePath);            ClassFileWriter.writeToFile(f, cf);        }   }


0 0