【问题标题】:Decompile java class file反编译java类文件
【发布时间】:2012-11-08 04:46:23
【问题描述】:

是否可以在另一个程序中反编译 java .class 文件? 我知道像 CAVAJ 和 DJ Java Decompiler 这样的工具。 为什么?:我正在修改程序中的一个类文件并将其转储到同一个文件中。然后我想解析修改后的类文件的源文件。 提前致谢。

【问题讨论】:

  • 为什么要做这样的事情?
  • 你也许可以执行运行反编译工具的过程(我使用JD-GUI)然后编辑代码并重新编译?我认为是“Runtime.exec()”?
  • @SnakeEye 我正在检测类文件。在检测它之后,我想在同一个程序中解析检测文件(我将通过反编译类文件获得)。
  • 感谢@Bucco 的回答。如果您能详细说明我如何在Runtime.exec() 中使用GUI 反编译器,我将不胜感激。

标签: java class decompiling decompiler


【解决方案1】:

这是一个可能的答案(这是我用来编译源文件的)

private int runProcess(String command) throws Exception
{
    Process pro = Runtime.getRuntime().exec(command);
    System.out.println(command);
    printLines("", pro.getInputStream());
    printLines("",pro.getErrorStream());
    pro.waitFor();
    return(pro.exitValue());
}

然后你可以使用类似的东西:

int exitValue = runProcess(your command here);

我猜JD-GUI 不行;你需要一个命令行 java 反编译器。

这些链接可能有帮助:
Batch decompiling of Java files with JD-GUI
http://en.wikipedia.org/wiki/JAD_%28JAva_Decompiler%29
http://viralpatel.net/blogs/decompile-class-file-java-decompiler-class-java-class/

最后一个链接是 JAD 的下载链接,这是一个适用于 windows 计算机的命令行工具。

根据操作系统,命令可能会有所不同,但如果将 jad 移动到 cmd 类路径,它可能只是“jad classname.class”。我有 mac os x,所以我不确定它在哪里。

我希望这会有所帮助!

【讨论】:

  • 感谢您的回答。问题是我能找到的所有反编译器都是基于 GUI 的。
【解决方案2】:

如果您希望在运行时修改类,则可能不需要反编译该类。您可以操纵字节码。看看http://cglib.sourceforge.net/,也许对你有帮助

【讨论】:

  • 你是对的..我可以修改字节码。然后我想反编译修改后的字节码来做一些其他的操作。
【解决方案3】:

Java IDE 可以很好地反编译类文件。以 IntelliJ 为例,甚至社区版。它无法更新(只读模式)但我希望它可以帮助

【讨论】:

    猜你喜欢
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 2020-08-22
    相关资源
    最近更新 更多