jclasslib 修改常量,修改import等比较容易。
但是修改方法,我自己没有找到有好用的api,可能是自己没有找到
使用javaasist 或者 asm 都可以修改方法。
相对比较简单。
jclasslib 简单的例子
public static void main(String[] args) throws Exception {
String root = System.getProperty("user.dir");
File sourceFile = new File(root,"WelcomeBean.class");
FileInputStream fis = new FileInputStream(sourceFile);
DataInput di = new DataInputStream(fis);
ClassFile cf = new ClassFile();
cf.read(di);
CPInfo[] infos = cf.getConstantPool();
FieldInfo[] fArr = cf.getFields();
MethodInfo[] mArr = cf.getMethods();
AttributeInfo[] aArr = cf.getAttributes();
String superClassName = cf.getSuperClassName();
String myClassName = cf.getThisClassName();
System.out.println("superClassName:" + superClassName);
System.out.println("myClassName:" + myClassName);
System.out.println("ConstantPool size:" + infos.length);
System.out.println("FieldInfo size:" + fArr.length);
System.out.println("AttributeInfo size:" + aArr.length);
System.out.println("MethodInfo size:" + mArr.length);
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 == 59){
ConstantUtf8Info info = (ConstantUtf8Info)infos[i];
info.setString("444444444");
}
}
}
cf.setConstantPool(infos);
count = mArr.length;
for(int i=0;i<count;i++){
MethodInfo info = mArr[i];
String name = info.getName();
if(name.equals("isSuperMan")){
String msg = "return false;";
}
}
fis.close();
ClassFileWriter.writeToFile(sourceFile, cf);
}
分享到:
相关推荐
`jclasslib` 是一款强大的Java字节码查看和编辑工具,尤其适合Java开发者在处理已编译的`.class`文件时使用。它允许我们深入理解类文件的结构,甚至对字节码进行修改,这对于调试、优化、学习Java虚拟机(JVM)的...
### 借助jclasslib与javassist修改Java class字节码 #### 一、引言 在软件开发过程中,有时我们可能面临一种情况:即需要对已经编译好的`.class`文件进行修改,但手中并没有对应的源代码。这种情况下,我们可以...
java字节码查看器,jclasslib bytecode viewer可以对字节码文件进行修改和查看对应的变量
对字节码进行深入研究,通常会用到如jad、 jclasslib、IntelliJ IDEA等工具。它们可以帮助开发者查看类文件的结构,理解字节码指令的含义,甚至修改字节码以实现调试、优化或逆向工程的目的。 5. **字节码优化**:...
`jclasslib`是一款强大的字节码浏览器和编辑器,它允许开发者查看并修改`.class`文件的字节码。在本篇中,我们将深入探讨如何使用`jclasslib`来完成对`.class`文件的修改。 首先,让我们了解`jclasslib`的基本功能...
jclasslib是一款免费开源的java字节码查看工具,该软件不但可以查看java字节码,同时还包含一个类库允许开发者读取,修改,写入Java Class文件与字节码。简单的说:用户可以通过jclasslib修改jar包下面的类,是一个...
JClassLib不但是一个字节码阅读器而且还包含一个类库允许开发者读取,修改,写入Java Class文件与字节码。 按照步骤,找到安装好的JDK中的jre之后,点下一步,程序会自动帮你配置路径。 安装好之后,在C:\Program ...
jclasslib是一款免费开源的java字节码查看工具,该软件不但可以查看java字节码,同时还包含一个类库允许开发者读取,修改,写入Java Class文件与字节码。简单的说:用户可以通过jclasslib修改jar包下面的类,是一个...
这使得我们能够修改字节码,实现诸如动态代码增强、类文件转换等高级功能。 4. **教学与学习工具**: 对于初学者,jclasslib是学习Java字节码的理想工具。它将抽象的字节码指令与源代码对应起来,使得理论学习与...
5. 修改字节码:在某些场景下,开发者可以通过jclasslib修改字节码,实现动态增强或调试。 四、实战应用 1. 代码优化:通过查看字节码,开发者可以发现潜在的性能瓶颈,优化循环结构、减少冗余计算等。 2. 动态代理...
一种修改和分析java字节码结构和类文件的有效工具, 它是JBE-Java Bytecode Editor 0.1 升级版. 履历简介: 1.原始Jclasslib bytecode viewer 3.0字节码查看功能 2.继续维护升级为:JBE-Java Bytecode Editor 0.1字节...
此外,JClassLib还支持对字节码的修改,这意味着开发者可以对编译后的代码进行调整,这对于教学、研究或者处理特定的优化问题非常有价值。 字节码是Java虚拟机(JVM)执行的二进制代码,它是Java源代码经过编译后的...
`jclasslib`是一款强大的反编译器和字节码查看器,它允许开发者查看并修改JAR文件中的`.class`文件。这篇文章将深入探讨如何使用`jclasslib`来操作包含其他JAR的复杂项目。 首先,了解`jclasslib`的基本功能。它...
总结,JClassLib作为一款强大的Class文件分析和修改工具,不仅为Java开发者提供了深入理解字节码的途径,同时也为代码优化和问题调试提供了有力的支持。通过熟练掌握JClassLib,开发者可以在遇到困难时快速定位问题...
总之,JClassLib是一款强大的Java字节码分析工具,它为开发者提供了深入研究和修改字节码的能力,是进行Java字节码调试、逆向工程和学习的重要辅助工具。配合`jd_gui`,可以进一步提升开发者对Java程序底层运作的...
【JCLASSLIB】是一款强大的Java字节码反编译及分析工具,专为开发者设计,用于查看、修改和分析`.class`文件。它允许程序员深入理解Java字节码的内部结构,这对于调试、逆向工程、教学或者优化代码非常有用。...
jclasslib是一款强大的Java字节码查看器,它允许开发者直接查看并修改.class文件,从而深入了解Java虚拟机的工作原理。在本文中,我们将详细探讨jclasslib的使用方法以及其在Java反编译和修改中的应用。 首先,...
JClassLib是一款强大的Java字节码查看器,尤其适用于win64平台的开发者,它允许用户直接修改CLASS格式文件,并以直观的树形结构展示类的字节码内容,从而帮助开发者深入理解代码执行的本质。 JClassLib 5.5.1是该...
jclasslib是一款免费的、开源的、跨平台的Java字节码浏览器,它能够以直观的方式展示`.class`文件的内部结构,包括类信息、方法、变量、常量池等。在64位操作系统上,我们需要下载对应版本的jclasslib来确保正常运行...