【发布时间】:2017-07-03 16:10:25
【问题描述】:
我用两个反编译器JD-GUI和Luyten反编译了.jar文件,但是结果不一样。
例如,来自 Luyten 的结果具有更具体的命名空间。
源代码在某些行中也有所不同。
为什么两个反编译器对同一个 .jar 文件进行不同的反编译?
【问题讨论】:
-
因为有多个可能的 Java 源代码可以产生相同的字节码。
-
产生完全相同字节码的"java源代码"之间的唯一区别是基于语法。 rick 正在查看的字节码已经被编译。反编译器以不同的方式处理翻译。例如,如果您要将 JD-GUI、CFR、Procyon 和 Fernflower 的输出复制粘贴到 java 文件中并编译它,它们将不会生成完全相同的字节码。当然它会发挥相同的作用(不包括边缘情况),但这不是重点。关键是任何两个反编译器将字节码翻译回java的过程都是不同的。
标签: jar decompiling jd-gui