如何在IDEA中jclasslib对class文件进行修改-创新互联

这篇文章给大家介绍如何在IDEA中jclasslib对class文件进行修改,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

创新互联公司是一家专注于成都网站制作、成都网站设计与策划设计,岫岩网站建设哪家好?创新互联公司做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:岫岩等地区。岫岩做网站价格咨询:028-86922220

idea安装jclasslib-bytecode-viewer插件

file–>settings–>plugis ,搜索安装jclasslib-bytecode-viewer,重启idea。

如何在IDEA中jclasslib对class文件进行修改

准备好class文件

把要修改的class文件用idea打开。

使用jclasslib

view–>show bytecode with jclasslib.
常量池,使用过滤器过滤文本。找到对应的指向数字。


如何在IDEA中jclasslib对class文件进行修改


如何在IDEA中jclasslib对class文件进行修改


如何在IDEA中jclasslib对class文件进行修改

使用下列代码更改内容。

package com.yys.screendisplay.controller;

import java.io.*;

import com.sun.org.apache.bcel.internal.classfile.ConstantString;
import org.gjt.jclasslib.io.ClassFileWriter;
import org.gjt.jclasslib.structures.ClassFile;
import org.gjt.jclasslib.structures.Constant;
import org.gjt.jclasslib.structures.constants.ConstantDoubleInfo;
import org.gjt.jclasslib.structures.constants.ConstantUtf8Info;
import org.gjt.jclasslib.structures.constants.ConstantStringInfo;
public class Test {
 public static void main(String[] args) throws Exception {

  String filePath = "C:\\Users\\HMS\\Desktop\\AppService.class";
  FileInputStream fis = new FileInputStream(filePath);

  DataInput di = new DataInputStream(fis);
  ClassFile cf = new ClassFile();
  cf.read(di);
  Constant[] infos = cf.getConstantPool();

  int count = infos.length;
  for (int i = 0; i < count; i++) {
   if (infos[i] != null) {
    if(i==1813){
     System.out.print(i);
     System.out.print(" = ");
     System.out.print(infos[i].getVerbose());
     System.out.print(" = ");
     System.out.println(infos[i]);
     System.out.println(infos[i].getClass().getSimpleName());
     ConstantUtf8Info uInfo = (ConstantUtf8Info)infos[i];//根据对应的类型转换
     uInfo.setString("");
     infos[i]=uInfo;
    }
   }
  }
  cf.setConstantPool(infos);
  fis.close();
  File f = new File(filePath);
  ClassFileWriter.writeToFile(f, cf);
 }
}

其他

对应的jar包可以在idea安装的插件里面找。


如何在IDEA中jclasslib对class文件进行修改

报java.lang.ClassNotFoundException: kotlin.jvm.internal.Reflection,加上


 com.fasterxml.jackson.module
  jackson-module-kotlin
 2.9.4.1

关于如何在IDEA中jclasslib对class文件进行修改就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


分享名称:如何在IDEA中jclasslib对class文件进行修改-创新互联
文章转载:http://scyanting.com/article/dhpcij.html