1

我用两个反编译器JD-GUI和Luyten反编译了.jar文件,但结果不同。

例如,来自 Luyten 的结果具有更具体的命名空间。

源代码在某些行中也有所不同。

为什么两个反编译器以不同的方式反编译同一个 .jar 文件?

4

1 回答 1

1

您列出的反编译器使用不同的后端来处理 java 字节码的解析。

  • Luyten 使用Procyon
  • JD-GUI 使用 JD-Core (No source available)

您可以将反编译器想象成不同的学者将古代文本翻译成现代英语。学者“Luyten”“JD-GUI”转录的源材料是相同的,但每个学者转录文本的方式不同。两者都创造了通常相当清晰的现代英语,但每个都有自己的细微差别。

例如:如果古代原始资料说,"a man reached down and picked up an apple"学者们可能会说:

男人拿起一个苹果。

男人抓起一个苹果。

两者都理解了含义,但它们略有不同。有时,一个人可能比另一个人更了解源材料的一个奇怪的怪癖,因此会产生比另一个人更准确的结果。

例如,如果方法的最后一条指令是 try-catch 块中的最后一条,则 JD-GUI 无法反编译方法,但 Procyon 将能够将其翻译成 java 就可以了。

于 2017-02-26T01:08:37.950 回答