求助反编译.class 文件遇到困难(红包感谢)

245 天前
 fu4k
最近有点闲,捣腾起一个比较老的 jsp 项目,其中部分逻辑是编译成了 class 文件,供 jsp 导入引用,现在遇到的问题是:

1.我试图反编译.class 为.java ,修改其中部分逻辑并重新编译成新的.class ,流程是顺畅的,但是

2.我用 jd-gui 和 luyten 都尝试过,两者反编译的出来的结果不太一致,但大体的逻辑框架,比如类函数名等一样

3.我拿重新编译后的.class 供 jsp 调用,但是会报错 500 ,.class 文件中有日志输出逻辑用的 log4j ,但是查看日志,没有输出信息

所以我猜测肯定是反编译有问题,但不太清楚问题出在哪里,有没有大佬相助,帮忙一看,红包感谢

classes 文件: https://github.com/7x0/classes/blob/main/classes.zip
1533 次点击
所在节点    问与答
15 条回复
Nooooobycat
245 天前
直接拖到 Intellij IDEA 里就能自动反编译

![]( https://s3.bmp.ovh/imgs/2023/09/07/0c61736c1b040edd.png)
fu4k
245 天前
@Nooooobycat 感谢回复,反编译毕竟是一个逆的过程,用我提到的两个工具也能反编译出类似的代码,但是不完全一致,而且修改逻辑重新编译后,是无法使用的,特来求经验
fu4k
245 天前
我不确定是工具的准确度问题,还是什么细节问题😭
kokutou
245 天前
是用运行环境版本一样的 jdk 编译的吗
xomix
245 天前
我这里说一下我之前做的方案,看完代码后 jsp 页面去写一些东西。不要添加或者重新编译 class 文件。反正我当初就是这样折腾的。
fu4k
245 天前
@kokutou 不是,运行环境 jdk1.6 编译环境 1.8 ,这个我再试一下

@xomix 重写就是会比较麻烦😄 逻辑特复杂
iX8NEGGn
244 天前
看了一下,你提供的字节码文件的 major version 是 49 ( 0x31 ),也就是 Java 1.5 ,如果你的反编译软件在 1.8 下工作,反编译并修改后重新生成的字节码文件的 major version 会变成 52 ( 0x34 )。

你可以用十六进制编辑器确认下生成的字节码文件的第 7 和第 8 字节是不是 0x00 0x34 ,是的话,那肯定不能在 Java 1.6 下运行,Java 1.6 支持的最大 major version 版本是 50 ( 0x32 ),有一定概率可以直接把 0x00 0x34 修改成 0x00 0x31 后就能运行。
fu4k
244 天前
@iX8NEGGn 感谢大佬,我研究下,有效回来送红包🧧
fu4k
244 天前
@iX8NEGGn 确实 jdk 版本问题,已解决,感谢大佬,方便留个收款码?
@kokutou 感谢🙏
iX8NEGGn
244 天前
@fu4k 感谢,感谢,不知道将收款码发到哪,只能将微信付款码放到阿里云盘了: https://www.aliyundrive.com/s/Hwt9zW8zkea
iX8NEGGn
244 天前
已收到 ❤
hefish
244 天前
直接改感觉对源系统有破坏啊。
我更喜欢做成 agent ,在启动 tomcat 的时候加载。。把源来的类和方法替换掉, 这样就不会破坏原来的系统了。
fu4k
244 天前
@hefish 学习了👍
findlisa
244 天前
@Nooooobycat 这 idea 主题怎么弄的,还是哪个版本自带的
chengxy
244 天前
@findlisa #14 新版默认

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/971879

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX