jclasslib Java字节码查看器 修改工具

原创 2016年12月03日 01:20:51

jclasslib Java字节码查看器 修改工具  作用查看字节码,修改代码,自己发挥把。

Test.java 测试类

public class Test {
	public void test1() {
		{
			long a = 0;
		}

		long b = 0;
	}

	public void test2() {
		long a = 0;
		long b = 10;//  想要动态修改的值
		System.out.println(b);
		String s="h哈哈";
		System.out.println(s);
	}
	public static void main(String[] args) {
		new Test().test2();
	}
}


jclasslib 工具界面 一点就会。



JCclassLib .java  字节码修改类


package com.ai.java;
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.ConstantLongInfo;
public class JCclassLib {
	public static void main(String[] args) throws Exception {
		String filePath = "D:\\tmpworkspace\\Test\\bin\\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.print(i);
				System.out.print(" = ");
				System.out.print(infos[i].getVerbose());
				System.out.print(" = ");
				System.out.println(infos[i].getTagVerbose());
				if (i == 18) {//此处的18  是通过jclasslib或者上面的代码打印结果找到的行数,然后修改这个位置的值为111
					ConstantLongInfo uInfo = (ConstantLongInfo) infos[i];
					uInfo.setLong(111l);
					infos[i] = uInfo;
				}
			}
		}
		cf.setConstantPool(infos);
		fis.close();
		File f = new File(filePath);
		ClassFileWriter.writeToFile(f, cf);
	}
}

另外 :Javassist 这个也好使。

版权声明:

Java字节码深入解析 || 使用Intellij idea如何快速查看Java类字节码

Java字节码深入解析 一:Java字节代码的组织形式   类文件{   OxCAFEBABE,小版本号,大版本号,常量池大小,常量池数组,访问控制标记,当前类信息,父类信息,实现的接口个数,...

学会阅读Java字节码

1.Class文件基础 (1)文件格式 Class文件的结构不像XML等描述语言那样松散自由。由于它没有任何分隔符号, 所以,以上数据项无论是顺序还是数量都是被严...
  • dc_726
  • dc_726
  • 2012年09月04日 22:23
  • 44624

Intellij idea快速查看Java类字节码

原文地址,点击打开链接 最近在研究JVM类加载、JVM字节码相关的东西,需要经常查看字节码。之前都是用一些外部工具例如bytecoder、JD或者直接cmd使用javap的方式查看字...

面试题总结 —— JAVA高级工程师

面试题总结——JAVA高级工程师 近期考虑换工作的问题,于是投简历面试,面试5家公司的高级Java工程师,有4家给了我offer,想着总结一下面试经验,方便最近正在寻求机会的你们 一、无笔试题 ...

Atitit.java 虚拟机的构成 与指令分类 与 指令集合 以及字节码查看工具javjap

Atitit.java 虚拟机的构成 与指令分类 与 指令集合 以及字节码查看工具javjap     1.1. 虚拟机的构成 java虚拟机--处理器、堆栈、寄存器、指令系统。 1 1.2....
  • attilax
  • attilax
  • 2016年02月08日 21:59
  • 359

字节码查看器.rar

  • 2013年07月22日 09:29
  • 689KB
  • 下载

java字节码查看工具

  • 2017年08月23日 15:37
  • 3.06MB
  • 下载

【JAVA】javap——字节码格式查看工具

D:\workspace\luna_sr2_ws00\demo\bin\cn\wxy\demo>javap -verbose Test ╛»╕µ: ╢■╜°╓╞╬─╝■Test░ⁿ║¼cn.wxy.d...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jclasslib Java字节码查看器 修改工具
举报原因:
原因补充:

(最多只允许输入30个字)