反編譯工具jad使用方法

無心間搜索到了這麼一個好東東,不敢獨享,特分享給你們。
我這裏用的是最新版Jad v1.5.8g,能夠到"官方"網站上去下載, http://www.kpdus.com/jad.html或者華軍軟件裏也有,但版本可能不是最新的。下好之後解壓就能夠用了,軟件就只有一個exe文件和一個幫助文件,爲了方便使用,我直接將exe文件放到JDK的bin目錄裏了:)
 
下面先來看看從網上搜集來的介紹:在衆多的JAVA反編譯工具中,有幾種很是著名的工具使用了相同的核心引擎——JAD,其中主要包括:Front End Plus、mDeJava、Decafe Pro、Cavaj Java Decompiler、DJ Java Decompiler、NMI’s Java Class Viewer和國產的JAVA源代碼反編譯專家。
 
JAD自己是一個命令行工具,沒有圖形界面,上述的這些工具大可能是在JAD內核的基礎之上加了一個圖形界面而已。這麼多種產品的共同選擇,足可證實JAD在JAVA反編譯領域中的尊貴地位。
 
JAD是使用Microsoft Visual C++開發的,運行速度很是快,能夠處理很複雜的JAVA編譯文件。衆多的參數使JAD能夠靈活應付多種加密手段,令反編譯的代碼更加優化和易讀。因爲JAD參數太多,不必一一解釋,其中有幾個最經常使用的以下:

-d <dir> - 用於指定輸出文件的目錄

-s <ext> - 輸出文件擴展名(默認爲: .jad),一般都會把輸出文件擴展名直接指定爲.java,以方便修改的從新編譯。

-8 - 將Unicode字符轉換爲ANSI字符串,若是輸出字符串是中文的話必定要加上這個參數才能正確顯示。

最經常使用的反編譯指令以下所示:

Jad -d c:\test -s .java -8 HelloWorld.class
 
執行效果以下:
java反編譯工具jad使用方法(原創)
這將當前目錄下的HelloWorld.class反編譯爲HelloWorld.java並保存在c:\test目錄裏,其中的提示輸出爲中文,而不是Unicode代碼。
 
附件:對下載後的說明文檔的簡單翻譯,但願對你有所幫助(mathsfan修改於2006.10.29,翻譯的很差請見諒)
0、1略去
二、怎樣使用JAD
反編譯一個簡單的java class文件'example1.class'用以下命令:
 
jad example1.class
 
這個命令將在當前目錄下建立一個'example1.jad'文件,假如當前目錄下存在這個文件,則JAD會提示你覆蓋它與否。
選項 -o 容許覆蓋時沒有任何提示。
選項 -s <ext>容許改變輸出文件的後綴名:
 
jad -sjava example1.class
 
這個命令將要建立'example1.java'文件。在一塊兒使用-o 和 -sjava選項時請當心,由於JAD會附帶的重寫你的源文件。
JAD使用JAVA class的名字做爲輸出文件的名字。例如,假如 class 文件 'example1.class' 包含 JAVA class 'test1' 那麼 JAD 將會建立文件 'test1.jad' 而不是 'example1.jad' 。假如你想具體指明你的輸出文件的名字使用輸出重命名:
 

jad -p example1.class > myexm1.java html

 

選項 –d容許你具體指明另外的輸出文件目錄,無論這個目錄是新建的、默認的或者當前目錄。例如: java

 

jad -o -dtest -sjava *.class 工具

(或者 jad -o -d test -s java *.class, 這個有一樣的效果) 優化

 

這個命令將在當前目錄下反編譯全部的.class文件並在'test'文件夾下創建全部擴展名爲.java的輸出文件。 網站

假如你想反編譯整個目錄樹下的JAVA classes,使用以下命令: 加密

 

jad -o -r -sjava -dsrc tree/**/*.class url

 

這個命令將反編譯當前目錄樹裏全部的.class文件而且在當前目錄下創建src文件夾後根據包的名字來輸出文件。例如,假若有一個文件'tree/a/b/c.class'在包'a.b'下包含了class 'c',那麼輸出文件的名字爲'src/a/b/c.java' spa

 

在先前的命令上將通配符那裏註釋掉。則它是用JAD來處理而不是command殼,因此在UNIX上的最後一次參數將會被單獨引用。 命令行

 

jad -o -r -sjava -dsrc 'tree/**/*.class' 翻譯

 

你想檢查編譯後的文件的正確性或者出於好奇的狀況下,這裏有一個選項 –a 將會告訴JAD給輸出的JAVA虛擬字節碼註解。

相關文章
相關標籤/搜索