通过JClassLib修改Class文件
来源:互联网 发布:gcc可用windows界面库 编辑:程序博客网 时间:2024/04/28 18:11
今天在网上看到通过jclasslib修改class文件的文章,记录一下。
原文地址:http://blog.csdn.net/hexin373/article/details/6669813
1)建一个测试的Class文件
public class JClassLibTestPrintString {public String getPrintMessage() {return "这是一个修改之前的数据";}public static void main(String[] args) {System.out.println(new JClassLibTestPrintString().getPrintMessage());}}显示输出结果如下
2)通过jclasslib查找Class定义的变量池位置
打开编译好的Class文件,选择Methods-->[1]getPrintMessage-->[0]Code
点红色圈的位置#2,会显示如下图位置
cp_inf #20 就是这个变量所在的位置,也可以继续点进去看看
3)通过程序改掉之前定义的变量内容
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 JClassLibModifyClassFile {public static void main(String[] args) throws Exception {String filePath = "E:\\applib\\example\\jclasslib\\JClassLibTestPrintString.class";FileInputStream fis = new FileInputStream(filePath);DataInput di = new DataInputStream(fis);ClassFile classFile = new ClassFile();classFile.read(di);CPInfo[] infos = classFile.getConstantPool();int count = infos.length;for (int i = 0; i < count; i++) {if (infos[i] != null && i == 20) {//找到第20个变量池ConstantUtf8Info uInfo = (ConstantUtf8Info)infos[i];uInfo.setBytes("这是通过jclasslib修改后的结果".getBytes());infos[i] = uInfo;}}classFile.setConstantPool(infos);fis.close();ClassFileWriter.writeToFile(new File(filePath), classFile);System.out.println("修改成功");}}执行上面的程序,如下
和之前的结果比,已经修改了JClassLibTestPrintString的输出结果。
0 0
- 通过JClassLib修改Class文件
- jclasslib修改class文件内容
- 如何利用JClassLib修改.class文件
- 直接修改class文件 工具:jclasslib
- 【修改jar】jclasslib修改jar包里面的class文件
- 利用jclasslib修改java编译后的.class文件
- 利用jclasslib修改java编译后的.class文件
- 利用jclasslib修改java编译后的.class文件
- 利用jclasslib修改java编译后的.class文件
- 直接修改别人jar包里面的class文件 工具:jclasslib
- 直接修改别人jar包里面的class文件 工具:jclasslib
- 直接修改别人jar包里面的class文件 工具:jclasslib
- 直接修改别人jar包里面的class文件 工具:jclasslib
- 直接修改别人jar包里面的class文件 工具:jclasslib
- 直接修改别人jar包里面的class文件 工具:jclasslib
- 直接修改别人jar包里面的class文件 工具:jclasslib
- 直接修改别人jar包里面的class文件 工具:jclasslib
- jclasslib
- FFFFFFFFFFFFFFFFFFFF
- android 获取wifi信息
- Git 常用命令
- HDU 1253(BFS)
- Spring Security教程(4)---- 数据库表结构的创建
- 通过JClassLib修改Class文件
- 点滴:Android 调试工具TraceView
- gdb调试时设置断点和观察点及其区别
- 横向滑动的 ListView
- 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
- 网页图表 开源工具Chart.js中关于Y轴数据从浮点数修改至整数展示的方法
- mp3gain 批量修改音量
- Android开发环境搭建全程演示(jdk+eclipse+android sdk)
- 阿里曾经收购过公司名单