是否可以反编译和调试Java应用程序?

时间:2013-10-03 08:56:19

标签: java eclipse

是否可以反编译Java应用程序并使用反编译代码对其进行调试?

我更感兴趣的是能够使用反编译代码进行调试,而不是反编译本身(这很简单)。

4 个答案:

答案 0 :(得分:3)

是的{@ 3}}可以免费下载java反编译器

其他链接click link1

答案 1 :(得分:2)

是的,互联网上有java反编译器,包括付费和非付费。我目前正在使用一个名为“DJ java decompiler'”,它提供免费试用版,只是google it。

您可以希望您尝试反编译并从类文件中理解的jar不是obfuscated

答案 2 :(得分:2)

确实有可能,正如许多其他人已经指出的那样。

如果你想反编译一个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。相信我,确实通过源行对齐来调试反编译代码。

答案 3 :(得分:0)

如果应用程序反编译得很好并且没有删除调试信息,请确定。