首页 > 编程知识 正文

如何修改java的class文件,idea反编译class文件

时间:2023-05-03 13:27:49 阅读:41785 作者:3959

在某些情况下,因为没有代码环境,所以在部署代码时必须修改Java编译后的class文件的内容。 (小部分修改)。

jclasslib显示class文件的内容

在的常量池中找到了要修改的代码。 请记住数组的下标

代码修改

使用UpdateClass修改中的class文件地址(25行,数组下标) 43行,要修改的内容(46行) )

添加代码

打包广告;

importorg.gjt.jclasslib.io.class filewriter;

importorg.gjt.jclasslib.structures.class file;

importorg.gjt.jclasslib.structures.constant;

importorg.gjt.jclasslib.structures.constants.constant utf8 info;

import java.io.DataInput;

import java.io.DataInputStream;

import java.io.File;

import java.io.FileInputStream;

//*

* @ClassName UpdateClasses

* @更改描述3360 class文件的内容

* @Author Lgd

* @Date 2020/9/25

* @版本v 1.0

*/

公共类更新类{

publicstaticvoidmain (字符串[ ] args ) throws Exception { )。

//class文件地址

string file path=' d :loginsuccesslistener.class ';

fileinputstreamfis=new file inputstream (文件路径);

datainputdi=new data inputstream (fis );

ClassFile cf=new ClassFile (;

cf.read(di;

constant [ ] infos=cf.getconstantpool (;

int count=infos.length;

for(intI=0; I计数; I ) {

if(infos[I]!=空) {

系统. out.print (I;

system.out.print('=';

系统. out.print (infos [ I ].get verbose ();

system.out.print('=';

system.out.println (infos [ I ].get verbose (!='? infos[i].getConstantType () : ' );

//包含要替换的字符串的数组的下标在jclasslib中查看

//https://github.com/Ingo Kegel/jclasslib/releases

if(I==186 ) {

常数utf8 info uinfo=(常数utf8 info ) infos[i];

//替换后的字符串

uInfo.setString ('我是最后的要字符串');

infos[i]=uInfo;

}

}

}

cf.setconstantpool(infos );

fis.close (;

filef=new file (文件路径;

classfilewriter.writetofile(f,cf;

}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。