将类文件转换为Java文件

时间:2012-07-20 06:54:20

标签: java reverse-engineering war decompiling .class-file

我有一个War文件(一个Java应用程序),包含64个类文件以及image / CSS / JS文件。我已经失去了这个战争档案的来源。现在我想在代码中做一些更改。我正在寻找社区关于以下问题的一些专家建议。

  1. 有没有最好的方法将.class文件转换为.java文件而不会丢失任何代码段?
  2. 此任务有哪些工具?
  3. 将.class文件转换为.java文件以重新创建war文件有哪些挑战/缺点?

3 个答案:

答案 0 :(得分:3)

  1. 转换为Java字节码几乎是完全可逆的。正如@StephenC所说,在重新生成的源代码中,你将丢失注释,局部变量的名称等。它可能不会立即编译,但你应该能够再次编译,稍作修改。

  2. 您需要Java Decompiler才能执行此操作。试试JD-GUIDJ Java Decompiler

  3. 如果您对来源进行了模糊处理,您恢复的来源将不难理解和逆向工程。否则,只需稍加修补,你就应该能够找回你的来源。

答案 1 :(得分:3)

如果您不想花费可怕的时间来理解反编译的字节码,请开始使用版本控制系统和远程存储库来处理两个以上类别的任何项目。

特别是,您可以将Git与GitHub一起使用,免费托管开源,如果您想保护您的代码,您可以获得便宜的商业订阅。

这时候,请使用JD反编译器来帮助自己:

  1. 使用java反编译器反编译字节码。
  2. 从反编译的java类中创建一个git存储库
  3. 不断将其与远程存储库同步

答案 2 :(得分:0)

@DarkXphenomenor提到的JD非常好。甚至还有一个Eclipse插件。

一般来说,缺点是:

  • 你失去了所有评论。
  • 根据类文件中的调试信息,您将丢失行号。
  • 您可能会丢失局部变量的名称。
  • 有时生成的Java代码可能无法编译。使用comples结构,反编译器可能会失败。想到了内在的课程。不过,它很容易用手固定。