2012-11-08 236 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