【问题标题】:Possible to decompile Java program可以反编译Java程序
【发布时间】:2012-09-17 21:23:20
【问题描述】:

我有一个其他人编写的 Java 程序,我想将它“反编译”到它的源代码中,以便我可以修改它的代码。我已经尝试这样做并反编译了一个 jar,但是当我尝试将 Java 文件重新编译到 jar 中时,我遇到了一堆依赖问题,因为我没有依赖的源文件(虽然我有一些但它没有'似乎没有帮助)。

是否有任何程序可以让我拖放 Java exe 或安装目录,我猜它会反编译所有内容,以便我可以修改它的一些源并重新编译它?我以前做过,但不记得我用的是什么应用程序。原始程序是用eclipse编写的。

【问题讨论】:

  • 如果你使用的是windows那么这是一个非常好的JAVA反编译器code.google.com/p/innlab/downloads/…
  • @vikiiii:是的,我用它来获取我想要更改的源代码。这不是问题。它正在尝试编译源代码,因为所有依赖项都散布在各处。
  • 要编译它并将 jar 文件添加到类路径中,请查看 this 如果您还没有,可以尝试反编译器 JD
  • 原应用开源吗?如果是,请查看在哪里可以找到原始源代码。否则,请确保根据您正在修改的软件的许可证允许您执行的操作。
  • 我很久以前问过同样的事情:stackoverflow.com/questions/4661951/…

标签: java eclipse decompiling


【解决方案1】:

您尝试重新编译的代码依赖于您没有的类。

不需要重新编译整个jar,只需要重新编译你改变的类。

如果这些类依赖于您没有的类,您可以为这些类创建存根,以便编译您更改的类。

【讨论】:

  • 有很多。对依赖项的依赖...使用来自 eclipse(ui 的东西)的东西,许多子目录散布开来。这一切都很难手工完成。如果我可以告诉 javac 在目录和 all 子目录中搜索 jar 和类文件,那么它应该很容易找到它们并进行编译。 (我已经编译了一些 java 文件,但其他仍然需要修复更多依赖项)
  • 您可以在类路径中添加directory-with-jars/*。如果你在某处有罐子,这是最好的。另外,如果您使用 IDE 创建存根,则不需要很长时间。
  • 我需要添加的罐子都在许多不同的子目录中。我必须添加大量路径才能使其正常工作。我正在慢慢降低依赖关系,但命令行变得庞大而笨拙。最好有某种方法来自动化它。我是从 cmd 行做的,这很烦人。我希望我可以删除根目录以用作基础,并为我构建依赖项列表并编译文件。
  • 你能运行原程序吗?然后进行编译,使用与运行相同的类路径。
  • 我能够让它工作。 JD-gui 也有一些错误,它无缘无故地重新定义了变量,并且在处理完这些变量之后,所需的依赖项比我想象的要少得多。现在似乎一切正常。
【解决方案2】:

我想建议使用 jd-gui.exe。可以很方便的反编译jar文件,内容看的一清二楚...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-31
    • 2012-04-12
    • 2016-10-29
    • 2011-03-07
    • 1970-01-01
    • 2021-11-08
    • 2015-12-31
    相关资源
    最近更新 更多