是否可以反编译 Java 应用程序并使用反编译的代码对其进行调试?
我对使用反编译代码进行调试的能力更感兴趣,而不是反编译本身(这很简单)。
Yes there are java decompilers available on internet, both paid and unpaid. I am currently using one called 'DJ java decompiler', which provides a free trial version, just google it.
You can hope that the jar you are trying to decompile and make some sense out of the class files, is not obfuscated.
正如许多其他人已经指出的那样,这确实是可能的。
如果您只想反编译一个 JAR 并通过直接运行它们(即使用它们作为源)来调试反编译的类,那么有很多反编译器可以很好地为您服务。
如果您计划调试应用程序中使用的 JAR,请在选择反编译器时注意正确的源代码行号对齐功能。以this question为例。你可以得到这样的反编译代码:
Line X /* Line Y */ int x = y
Line Y (anything can be here, it could even not exist)
X 和 Y 的值完全不同。这意味着反编译的 .java 文件中的 X 行对应于已编译代码的 Y 行。调试 jar 时,您必须在源文件的 Y 行放置一个断点以停止。调试起来可能很烦人。有一些反编译器可以将源文件中的反编译代码与行号对齐。
Line X /* Line X */ int x = y
我在 Eclipse 上成功使用了JD-Eclipse Realign。相信我,使用源代码行对齐来调试反编译代码确实会有所作为。
If the application decompiles nicely and hasn't been stripped of debug info, sure.