直接修改class文件 工具:jclasslib

本文介绍了一种通过Java代码直接修改Class文件中特定字符串的方法。使用ClassFileEditor定位到需要修改的行号,并通过编写main方法实现对指定常量池索引处的UTF-8信息进行替换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);     
   }   
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值