我用两个反编译器JD-GUI和Luyten反编译了.jar文件,但结果不同。
例如,来自 Luyten 的结果具有更具体的命名空间。
源代码在某些行中也有所不同。
为什么两个反编译器以不同的方式反编译同一个 .jar 文件?
我用两个反编译器JD-GUI和Luyten反编译了.jar文件,但结果不同。
例如,来自 Luyten 的结果具有更具体的命名空间。
源代码在某些行中也有所不同。
为什么两个反编译器以不同的方式反编译同一个 .jar 文件?
您列出的反编译器使用不同的后端来处理 java 字节码的解析。
您可以将反编译器想象成不同的学者将古代文本翻译成现代英语。学者“Luyten”和“JD-GUI”转录的源材料是相同的,但每个学者转录文本的方式不同。两者都创造了通常相当清晰的现代英语,但每个都有自己的细微差别。
例如:如果古代原始资料说,"a man reached down and picked up an apple"
学者们可能会说:
男人拿起一个苹果。
男人抓起一个苹果。
两者都理解了含义,但它们略有不同。有时,一个人可能比另一个人更了解源材料的一个奇怪的怪癖,因此会产生比另一个人更准确的结果。
例如,如果方法的最后一条指令是 try-catch 块中的最后一条,则 JD-GUI 无法反编译方法,但 Procyon 将能够将其翻译成 java 就可以了。