2012-11-08 161 views
1

是否可以在另一个程序中反编译java .class文件? 我知道诸如CAVAJ和DJ Java Decompiler之类的工具。 为什么?:我正在修改程序中的类文件并将其转储到相同的文件中。然后我想解析修改过的类文件的源文件。 在此先感谢。反编译java类文件

+0

为什么会想要做这样的事情? –

+1

您可能能够执行运行反编译器工具(我使用JD-GUI)的过程,然后编辑代码并重新编译?我认为它是“Runtime.exec()”? –

+0

@SnakeEye我正在检查类文件。仪表完成后,我想在同一个程序中解析仪表文件(我将通过反编译类文件获取)。 – Daanish

回答

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,所以我不确定它在哪里。

我希望这有助于!

+0

谢谢你的回答。问题是我可以找到的所有反编译器都是基于GUI的。 – Daanish

1

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

+0

你是对的..我可以修改字节码。然后我想反编译修改过的字节码来做其他操作。 – Daanish