lupangdelu
IT黄三爷
采纳率0%
2016-03-21 13:21 阅读 11.5k

直接修改class文件可以吗?

1

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • wojiushiwo945you 毕小宝 2016-03-21 14:11
      可以修改,前提是你需要完全掌握Java字节码文件的格式,按照规则来修改,否则Java虚拟机是无法识别你改过的class文件的。建议先研究下class文件吧,每一个字节都是有特定含义的。你这个修改可以对比修改前后class文件那些字节码不同,然后才知道改哪里,改的地方是什么含义。
    
    点赞 评论 复制链接分享
  • wojiushiwo945you 毕小宝 2016-03-21 14:13
      基于以上原因,我们还是使用Java编译器编译标准的类文件才行,改了源文件后再重新编译替换旧版本的类文件。
    
    点赞 评论 复制链接分享
  • Marksinoberg 泰 戈 尔 2016-03-22 02:22

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

    点赞 评论 复制链接分享
  • YtangH 一人一剑 仗剑走天涯 2016-03-22 11:29

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

    点赞 评论 复制链接分享

相关推荐