V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
fu4k
V2EX  ›  问与答

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

  •  
  •   fu4k · 2023-09-07 23:44:08 +08:00 · 1686 次点击
    这是一个创建于 445 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近有点闲,捣腾起一个比较老的 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
    15 条回复    2023-09-09 10:48:35 +08:00
    Nooooobycat
        1
    Nooooobycat  
       2023-09-07 23:47:36 +08:00
    直接拖到 Intellij IDEA 里就能自动反编译

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

    @xomix 重写就是会比较麻烦😄 逻辑特复杂
    iX8NEGGn
        7
    iX8NEGGn  
       2023-09-08 18:56:43 +08:00
    看了一下,你提供的字节码文件的 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
        8
    fu4k  
    OP
       2023-09-08 19:06:13 +08:00 via iPhone
    @iX8NEGGn 感谢大佬,我研究下,有效回来送红包🧧
    fu4k
        9
    fu4k  
    OP
       2023-09-08 21:16:09 +08:00
    @iX8NEGGn 确实 jdk 版本问题,已解决,感谢大佬,方便留个收款码?
    @kokutou 感谢🙏
    iX8NEGGn
        10
    iX8NEGGn  
       2023-09-08 21:47:13 +08:00   ❤️ 1
    @fu4k 感谢,感谢,不知道将收款码发到哪,只能将微信付款码放到阿里云盘了: https://www.aliyundrive.com/s/Hwt9zW8zkea
    iX8NEGGn
        11
    iX8NEGGn  
       2023-09-08 22:02:58 +08:00
    已收到 ❤
    hefish
        12
    hefish  
       2023-09-08 22:28:38 +08:00
    直接改感觉对源系统有破坏啊。
    我更喜欢做成 agent ,在启动 tomcat 的时候加载。。把源来的类和方法替换掉, 这样就不会破坏原来的系统了。
    fu4k
        13
    fu4k  
    OP
       2023-09-08 22:37:44 +08:00
    @hefish 学习了👍
    findlisa
        14
    findlisa  
       2023-09-09 01:52:27 +08:00
    @Nooooobycat 这 idea 主题怎么弄的,还是哪个版本自带的
    chengxy
        15
    chengxy  
       2023-09-09 10:48:35 +08:00
    @findlisa #14 新版默认
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3527 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 04:43 · PVG 12:43 · LAX 20:43 · JFK 23:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.