我知道在反编译 jar 文件时,生成的 .java 文件包含语法错误是正常的,但我不确定原因,更糟糕的是我有时不确定如何修复这些语法错误。以int[] arrayOfInt = new int['€'];为例。Eclipse 抱怨'€'不属于。惊喜!我已经知道这一点,但为什么会发生这种情况。我怎样才能找出这个值应该是什么?
使用 JD-GUI 反编译时出现语法错误
逆向工程
爪哇
2021-06-23 15:48:18
3个回答
它发生的原因是因为 JD-Gui 没有正确编码 unicode。您可以看到引号内的内容是两个字节,并且似乎被解释为非标准的大 128 个字符。即 JD-Gui 发出 unicode,但字符集未正确声明,因此您的编辑器将其解释为 8 位字符集中的两个原始字节,而不是单个 unicode 字符。
一种解决方案是使用发出 unicode 转义而不是原始 unicode 字节序列的反编译器。这样,任何编辑器都可以正确查看它。我推荐 Procyon(无论如何它比 JD-Gui 好多了)。
你应该使用 Luyten。它和 JD-Gui 一样是一个 Java 反编译器,但它缺少 jd-gui 逻辑中的许多错误。
它是 Procyon 的前端。
PS:对不起,我知道我应该评论 Antimony 的回答,但我没有必要的观点来做那件事。
尝试查看字节码查看器 - https://github.com/Konloch/bytecode-viewer
它允许您从 3 种不同的 Java 反编译器中进行选择。它还可以显示您选择的类文件的字节码和十六进制代码。(还有更多,请查看)