Java Decompiler項(xiàng)目”旨在開發(fā)工具,以便反編譯和分析Java 5“字節(jié)代碼”及更高版本。JD-Core是從一個或多個“.class”文件重建Java源代碼的庫。JD-Core可用于恢復(fù)丟失的源代碼并探索Java運(yùn)行時庫的源。支持Java 5的新功能,例如注釋,泛型或類型“枚舉”。JD-GUI和JD-Eclipse包括JD-Core庫。JD-GUI是一個獨(dú)立的圖形實(shí)用程序,顯示“.class”文件的Java源代碼。您可以使用JD-GUI瀏覽重建的源代碼,以便立即訪問方法和字段。JD-Eclipse是Eclipse平臺的插件。它允許您在調(diào)試過程中顯示所有Java源代碼,即使您沒有全部Java源代碼。JD-IntelliJ是一個用于...的IntilliJ IDE的插件。JD-Core,JD-GUI和JD-Eclipse是根據(jù)GPLv3許可證發(fā)布的開源項(xiàng)目。
成都創(chuàng)新互聯(lián)專注于新鄉(xiāng)縣企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計,購物商城網(wǎng)站建設(shè)。新鄉(xiāng)縣網(wǎng)站建設(shè)公司,為新鄉(xiāng)縣等地區(qū)提供建站服務(wù)。全流程定制制作,專業(yè)設(shè)計,全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
下面是在網(wǎng)上找的幾種反編譯軟件的安裝以及使用:
一、JD-JUI
官網(wǎng)下載鏈接:
下載之后解壓,
點(diǎn)擊“jd-gui.exe”運(yùn)行:
直接將".jar"文件拖入進(jìn)去即可查看里邊的“.class”文件,如上圖所示。
二:Luyten
官網(wǎng)下載鏈接:
點(diǎn)擊“l(fā)uyten-0.5.3.exe”下載,下載之后點(diǎn)擊運(yùn)行,運(yùn)行后的界面如圖所示,同樣也是講“.jar”文件拖入進(jìn)入即可。
三、在eclipse中安裝反編譯工具
準(zhǔn)備工作:
“jad.exe”下載:
“net.sf.jadclipse_3.3.0.jar”下載:
jad.exe”下載:
“net.sf.jadclipse_3.3.0.jar”下載:
然后將“net.sf.jadclipse_3.3.0.jar”拷貝到eclipse的plugins目錄下,再刪除eclipse的configuration目錄下“org.eclipse.update”文件,這一步很重要!
重啟eclipse,點(diǎn)擊window-Preference-Java,你會發(fā)現(xiàn)里邊多了一個插件“JadClipse”,
選中這個插件,將下圖中紅圈圈的地方的地址填寫為你 “jad.exe”文件的地址
還沒有配置完,先不要close,
點(diǎn)擊General-Editors-File Associations 后,進(jìn)入下邊的界面
設(shè)置.class 文件默認(rèn)打開方式:
設(shè)置.class without source文件的默認(rèn)打開方式,
需要注意的是,“JadClipse Class File Viewer”這個一開始是沒有的,需用添加,如下圖所示:
接下來在eclipse中查看反編譯后的代碼:(這種方法可能不合適,但是能夠查看)
新建一個EJB project,右鍵“import”,選中"EJB JAR file",導(dǎo)入你的jar包,F(xiàn)inish
在項(xiàng)目下找你要查看的反編譯的文件即可,如果你遇到了下邊的這種情況
關(guān)閉這個文件后再次打開,就可以查看了(我的是這樣,所以我感覺這個方法不太好,但別的方法又不知道怎么查看):
有錯誤或者有更好的方法,希望大家在下邊留言指出
應(yīng)該是在Eclipse安裝Java反編譯工具吧,過程很簡單:
1、下載jad.exe以及jadclipse_xxx.jar。(注意xxx表示版本,最好先看看你的Eclipse版本,然后網(wǎng)站搜索對應(yīng)jar包以及jad.exe版本)
2、把jadclipse_xxx.jar放在Eclipse根目錄plugins文件夾里、把jad.exe放在jdk根目錄bin文件夾里。
3、設(shè)置參數(shù)(Eclipse):Window-Preferences-Java-JadClipse--Path to decompiler,指向jad.exe的目錄。
4、配置*.class文件關(guān)聯(lián)(Eclipse):Windows--Perference--General--Editors--File Associations中修改“*.class”默認(rèn)關(guān)聯(lián)的編輯器為“JadClipse Class File Viewer”。
由于JAVA語言安全性高、代碼優(yōu)化、跨平臺等特性,從1995年5月由SUN公司發(fā)布后,迅速取代了很多傳統(tǒng)高級語言,占據(jù)了企業(yè)級網(wǎng)絡(luò)應(yīng)用開發(fā)等諸多領(lǐng)域的霸主地位。
不過,JAVA最突出的跨平臺優(yōu)勢使得它不能被編譯成本地代碼,而要以中間代碼的形式運(yùn)行在虛擬機(jī)環(huán)境中,這使得JAVA的反編譯要比別的高級語言容易實(shí)現(xiàn),并且反編譯的代碼經(jīng)過優(yōu)化后幾乎可以與源代碼相媲美。
為了更好地保護(hù)知識產(chǎn)權(quán),避免本公司的智力成果輕易被人竊取,開發(fā)者有必要對反編譯工具深入了解,以便有針對性地采取保護(hù)措施。
目前,比較流行的JAVA反編譯工具有近30種,其中有三款堪稱精品:
一、 應(yīng)用廣泛的JAD
在眾多的JAVA反編譯工具中,有幾種非常著名的工具使用了相同的核心引擎——JAD,其中主要包括:Front End Plus、mDeJava、Decafe Pro、Cavaj Java Decompiler、DJ Java Decompiler、NMI’s Java Class Viewer和國產(chǎn)的JAVA源代碼反編譯專家。
JAD本身是一個命令行工具,沒有圖形界面,上述的這些工具大多是在JAD內(nèi)核的基礎(chǔ)之上加了一個圖形界面而已。這么多種產(chǎn)品的共同選擇,足可證明JAD在JAVA反編譯領(lǐng)域中的尊貴地位。
JAD是使用Microsoft Visual C++開發(fā)的,運(yùn)行速度非???,可以處理很復(fù)雜的JAVA編譯文件。眾多的參數(shù)使JAD可以靈活應(yīng)付多種加密手段,令反編譯的代碼更加優(yōu)化和易讀。由于JAD參數(shù)太多,沒必要一一解釋,其中有幾個最常用的如下(以JAD 1.5.8f版本為例):
-d
- 用于指定輸出文件的目錄
-s - 輸出文件擴(kuò)展名(默認(rèn)為: .jad),通常都會把輸出文件擴(kuò)展名直接指定為.java,以方便修改的重新編譯。
-8 - 將Unicode字符轉(zhuǎn)換為ANSI字符串,如果輸出字符串是中文的話一定要加上這個參數(shù)才能正確顯示。
最常用的反編譯指令如下所示:
Jad –d c:\javasource –s .java -8 javatest.class
這條指令將當(dāng)前目錄下的javatest.class反編譯為javatest.java并保存在c:\javasource目錄里,其中的提示輸出為中文,而不是Unicode代碼。
二、 源碼開放的JODE
JODE是全球最大的開源項(xiàng)目網(wǎng)站Sourceforge點(diǎn)虐 的成員,在所有的JAVA反編譯器中,JODE的反編譯效果是最好的,尤其是對付一些常見的加密手段,例如混淆技術(shù)等,更是出類拔粹。
JODE本身也是純JAVA開發(fā)的,最近越來越多的JAVA反編譯軟件也選擇JODE來做它們的核心引擎,例如JCavaj Java Decompiler、BTJ (Back To Java)、jEdit’s JavaInsight plugin等。
JODE是一個可運(yùn)行的JAR文件,在windows環(huán)境下雙擊即可運(yùn)行。
需要特別說明的是,JODE不是通過常規(guī)的Open-File的方式來加載JAVA編譯后的類文件(*.class)或是類包(*.jar)的, 而是通過在Options菜單中的Set Classpath來實(shí)現(xiàn)的,單獨(dú)的類文件可以將它的上一級目錄作為Classpath輸入,然后再選擇Reload Classpath即可。
新加入的類包或是類的名字會在左側(cè)窗口出現(xiàn),雙擊類包名可以展開目錄樹結(jié)構(gòu),雙擊需要反編譯的類名則在右上角的窗口中直接顯示反編譯后的源代碼。
三、 獨(dú)樹一幟的DAVA
DAVA不是一個獨(dú)立的JAVA反編譯器,而是JAVA代碼優(yōu)化工具Soot的一部分。Soot和JODE一樣是純JAVA開發(fā)的,也是一個獨(dú)立的JAR包,但卻不能通過雙擊直接運(yùn)行,而是象JAD一樣在命令行狀態(tài)運(yùn)行。
Soot對環(huán)境變量的配置要求非常嚴(yán)格,通常情況下要對CLASSPATH做如下設(shè)置:
Set CLASSPATH=%CLASSPATH%;c:\sootdir\sootclasses-2.1.0.jar;.;
其中的c:\sootdir\是下載的soot類包放置的路徑,CLASSPATH末尾的.;代表了當(dāng)前目錄,如果不加上這個的話Soot經(jīng)常會報一個找不到類的錯誤。
DAVA是作為Soot的一個參數(shù)使用的,通常的用法如下:
Java soot.Main –f dava –d c:\javasource javatest
注意最后的類名不用帶.class后綴,因?yàn)樗J(rèn)是處理class文件,這個操作與前述的JAD的參數(shù)效果相同。
DAVA采取了流程優(yōu)化的方式進(jìn)行反編譯,與傳統(tǒng)反編譯思路不盡相同,但卻對改變流程類的加密方法有獨(dú)特的反編譯效果。
上述的三種工具各有千秋,但效果都非常不錯。經(jīng)測試,它們基本上都可以把JDK自帶的一些例程完全反編譯,然后不加任何修改可再編譯成功,并能正常運(yùn)行!
網(wǎng)頁名稱:java反編譯代碼工具 java 反編譯工具
網(wǎng)頁URL:http://www.rwnh.cn/article4/ddiodie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、定制開發(fā)、網(wǎng)站設(shè)計公司、移動網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、網(wǎng)頁設(shè)計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)