是否可以反编译Java应用程序并使用反编译代码对其进行调试?
我更感兴趣的是能够使用反编译代码进行调试,而不是反编译本身(这很简单)。
答案 0 :(得分:3)
答案 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)
如果应用程序反编译得很好并且没有删除调试信息,请确定。