直接修改class文件可以吗? 1C

java项目找不到源代码了,但有部署后的class文件。现在只需要简单修改一个数字,如下面的代码:
if(a.equals("13"))
{
System.out.println("xxxxxxx");
}
现在只需要把13改成14,我试了反编译再修改再编译,但是跑不起来。我用编辑器直接打开class文件,找到13这个字符串,改成14,保存,替换掉原来的class文件,还是不行,请问大神,这个问题怎么解决?什么原因?

4个回答

  可以修改,前提是你需要完全掌握Java字节码文件的格式,按照规则来修改,否则Java虚拟机是无法识别你改过的class文件的。建议先研究下class文件吧,每一个字节都是有特定含义的。你这个修改可以对比修改前后class文件那些字节码不同,然后才知道改哪里,改的地方是什么含义。
wojiushiwo945you
毕小宝 你这个源代码13改为14,但是对应的字节码可不是这么简单的修改啊,你要知道这个源代码对应的字节码的位置。你可以对比下源代码编译后的类文件,区别在哪里!
4 年多之前 回复
lupangdelu
IT黄三爷 我只是把数字13改成了14,其他都没变,怎么也不可以?
4 年多之前 回复

肯定是可以修改的,但是class是字节码,如果你要进行修改的话,必须要知道源代码编译过之后的字节码内容。希望对你有用哈图片说明

  基于以上原因,我们还是使用Java编译器编译标准的类文件才行,改了源文件后再重新编译替换旧版本的类文件。

改是可以的,但是你必须知道要改的源码编译后的字节码是哪些

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问