直接修改字节码中的常量池
来源:互联网 发布:wind资讯经济数据终端 编辑:程序博客网 时间:2024/06/05 19:02
这个类用于修改java中class字节码中的常量池。需要jclasslib.jar
可以使用jd-gui和字节码查看器确定要修改的内容
http://www.ej-technologies.com/download/jclasslib/files.html
参考
http://wenku.baidu.com/view/2aeb2abec77da26925c5b02b.html
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="d:/myFolder/com/example/test.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.println(i+" = "+infos[i].getVerbose()+" = "+infos[i].getTagVerbose()); if(i == 1){ ConstantUtf8Info uInfo=(ConstantUtf8Info)infos[i]; uInfo.setString(" oh my lady gaga "); } } } cf.setConstantPool(infos); fis.close(); File f=new File(filePath+"c"); ClassFileWriter.writeToFile(f, cf); } }
- 直接修改字节码中的常量池
- map/multimap中的key值因常量性不能被直接修改
- C语言中的常量修改
- 从字节码理解String与字符串常量池
- java字节码修改
- java字节码修改
- sgzj中修改中的常量 以及技巧
- Java 中的常量池
- XP优化中的直接注册表修改
- java中的字节码
- 3.9 直接常量
- 【ThinkingInJava】2、直接常量
- JVM中的常量池解析
- Java中的字符串常量池
- JAVA中的String常量池
- Java中的字符串常量池
- Java中的字符串常量池
- 浅谈java中的常量池
- Jquery实用小案例,适合初学者练习使用
- 趋势科技移动客户端病毒报告
- 开源jeecms,jeebbs学习笔记4——从jo_user表看持久层设计
- IT 技术网站集锦 (排名不分先后)
- VFP中,如何把指定目录信息(包括子目录)存入TXT文本文件!(已解决,代码实例)
- 直接修改字节码中的常量池
- java秒表/计时器实现
- poj1422 Air Raid
- Asp.net 中 GridView 在 RowDataBound事件中获取 某列值 的方法
- 玩转Spring事务(一)
- ViewGroup
- WTL双缓冲类CDoubleBufferImpl的缺陷
- 简易贪吃蛇(JAVA版)源代码
- java 字符串转json对象 js json 转 java对象