使用 JD-GUI 反编译时出现语法错误

逆向工程 爪哇
2021-06-23 15:48:18

我知道在反编译 jar 文件时,生成的 .java 文件包含语法错误是正常的,但我不确定原因,更糟糕的是我有时不确定如何修复这些语法错误。int[] arrayOfInt = new int['€'];为例。Eclipse 抱怨'€'不属于。惊喜!我已经知道这一点,但为什么会发生这种情况。我怎样才能找出这个值应该是什么?

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 反编译器中进行选择。它还可以显示您选择的类文件的字节码和十六进制代码。(还有更多,请查看)