为什么.Jar反编译结果在反编译器中有所不同?

时间:2017-02-15 06:13:18

标签: jar decompiling jd-gui

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

例如,Luyten的结果使命名空间更具体。

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

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

1 个答案:

答案 0 :(得分:1)

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

  • Luyten使用Procyon
  • JD-GUI使用JD-Core (无源可用)

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

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

  那个男人拿起一个苹果。

     该男子抓起一个苹果。

两者都有意义,但它们略有不同。有时人们可能比其他人更了解源材料的奇怪怪癖,从而产生比其他材料更准确的结果。

例如,JD-GUI can't decompile a method if the last instruction of a method is the last one in a try-catch block但是Procyon可以将它翻译成java就好了。