java反編譯配置-九游会j9娱乐平台
如今java語言在全世界范圍正如火如荼般的流行,它廣范地應用在internet的資料庫、多媒體、cgi、及動態網頁的製作方面。1999年在美國對java程序員的需求量首次超過c !
作者因最近分析一些java程序,對java的反編譯進行了一番了解,下面將我所了解的情況作以下介紹,希望對java愛好者有所幫助。
java是採用一種稱做「位元組編碼」的程序結構,分為小程序(嵌入到html文件中)和應用程序(直接在命令狀態下執行)兩種類型。無論哪種結構,一旦用javac 命令編譯後,均變成後綴為class的同名可執行文件。這種文件是不可閱讀的代碼。
經查閱了sun公司的jdk(jdk1.1.3)文檔資料後,我找到了一個據稱是可反編譯java的javap文件(exe),這個文件位於\jdk\bin\ 下面,經按說明使用後,感到失望,原來這個「反編譯」僅可反編譯出java程序的數據區(定義)、若干方法和類的引用等。
這里我用了一個簡單例子來說明問題。
java的源程序hello_java.java如下:
import java.applet.*;
import java.awt.*;
public class hello_java extends applet
{
public void paint(graphics g)
{
g.drawstring("hello java!\n",20,20);
}
}
經用反編譯命令:javap -c -package -public -private hello_java hello.java
得到的反編譯結果(hello.java)如下:(有關javap命令的選擇參數請見其使用說明,這里-c表示選擇了反編譯)
compiled from hello_java.java
public synchronized class hello_java extends java.applet.applet
/* acc_super bit set */
{
public void paint(java.awt.graphics);
public hello_java();
method void paint(java.awt.graphics)
0 aload_1
1 ldc #1
3 bipush 20
5 bipush 20
7 invokevirtual #6
10 return
method hello_java()
0 aload_0
1 invokespecial #5 ()v>
4 return
}
ⅱ 什麼是java代碼的編譯與反編譯
java代碼的編譯與反編譯
2017-02-21hollis數盟
一、什麼是編譯
1、利用編譯程序從源語言編寫的源程序產生目標程序的過程。
2、用編譯程序產生目標程序的動作。編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。
二、什麼是反編譯
計算機軟體反向工程(reverseengineering)也稱為計算機軟體還原工程,是指通過對他人軟體的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,某些特定情況下可能推導出源代碼。反編譯作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。
三、java類的編譯與反編譯
我們在最初學習java的時候,會接觸到兩個命令:javac和java,那個時候我們就知道,javac是用來編譯java類的,就是將我們寫好的helloworld.java文件編譯成helloworld.class文件。
class文件打破了c或者c 等語言所遵循的傳統,使用這些傳統語言寫的程序通常首先被編譯,然後被連接成單獨的、專門支持特定硬體平台和操作系統的二進制文件。通常情況下,一個平台上的二進制可執行文件不能在其他平台上工作。而javaclass文件是可以運行在任何支持java虛擬機的硬體平台和操作系統上的二進制文件。
那麼反編譯呢,就是通過helloworld.class文件得到java文件(或者說是程序員能看懂的java文件)
四、什麼時候會用到反編譯
1、我們只有一個類的class文件,但是我們又看不懂java的class文件,那麼我們可以把它反編譯成我們可以看得懂的文件。
2、學習java過程中,jdk的每個版本都會加入越來越多的語法糖,有些時候我們想知道java一些實現細節,我們可以藉助反編譯。
五、反編譯工具
1、javap
2、jad:官網(牆裂推薦)
客戶端:
可以在官網下載可執行文件,找到對應的操作系統的對應版本,然後進行安裝使用。
因為我使用的是linux操作系統,所以我下載的是linux版本的工具,這個工具下載好之後會有一個執行文件,只要在執行文件所在目錄執行./jadhelloworld.class就會在當前目錄下生成helloworld.jad文件,該文件里就是我們很熟悉的java代碼
eclipse插件:
下載地址在官網下載插件的jar包,然後將jar包放到eclipse的plugins目錄下『在打開eclipse,eclipse->window->preferences->java,此時你會發現會比原來多了一個jadclipse的選項,單擊,在pathtodecompiler中輸入你剛才放置jad.exe的位置,也可以制定臨時文件的目錄。當然在jadclipse下還有一些子選項,如debug,directives等,按照默認配置即可。基本配置完畢後,我們可以查看一下class文件的默認打開方式,eclipse->window->preferences->general->editors->fileassociations我們可以看到class文件的打開方式有兩個,jadclipse和eclipse自帶的classfileviewer,而jadclipse是默認的。全部配置完成,下面我們可以查看源碼了,選擇需要查看的類,按f3即可查看源碼
ⅲ 怎麼把class文件反編譯成java文件
java中使用eclipse提供的插件對class進行反編譯成java文件,如下步驟:
1、安裝jadclipse插件
使用jadclipse插件一定要注意eclipse版本。jadclipse_3.2.4,它對應的是eclipse3.2版,jadclipse_3.3.0可以用於eclipse3.3m6以上版。大家千萬不要把jadclipse_3.3.0放到eclipse3.2中,也不要把jadclipse_3.2.4放到eclipse3.3中,將jadclipse插件(版本自己選擇)直接到eclipse目錄中的plugins文件夾下,然後打開eclipse,選擇"窗口"-"首選項"-"常規"-"編輯器"-"文件關聯",點擊文件關聯中的*.class,下面就會看到"jadclipse class file viewer",選中它,點擊預設值,點擊ok,將它設置為默認的類查看器。如圖:
ⅳ 幾種java反編譯軟體的安裝以及使用總結
下面是在網上找的幾種反編譯軟體的安裝以及使用:
一、jd-jui
官網下載鏈接:http://jd.benow.ca/
下載之後解壓,
點擊「jd-gui.exe」運行:
直接將".jar"文件拖入進去即可查看里邊的「.class」文件,如上圖所示。
二:luyten
官網下載鏈接:https://github.com/deathmarine/luyten/releases/tag/v0.5.3
點擊「luyten-0.5.3.exe」下載,下載之後點擊運行,運行後的界面如圖所示,同樣也是講「.jar」文件拖入進入即可。
三、在eclipse中安裝反編譯工具
准備工作:
「jad.exe」下載:https://varaneckas.com/jad/
「net.sf.jadclipse_3.3.0.jar」下載:https://sourceforge.net/projects/jadclipse/files/
jad.exe」下載:
「net.sf.jadclipse_3.3.0.jar」下載:
然後將「net.sf.jadclipse_3.3.0.jar」拷貝到eclipse的plugins目錄下,再刪除eclipse的configuration目錄下「org.eclipse.update」文件,這一步很重要!
重啟eclipse,點擊window->preference->java,你會發現里邊多了一個插件「jadclipse」,
選中這個插件,將下圖中紅圈圈的地方的地址填寫為你 「jad.exe」文件的地址
還沒有配置完,先不要close,
點擊general->editors->file associations 後,進入下邊的界面
設置.class 文件默認打開方式:
設置.class without source文件的默認打開方式,
需要注意的是,「jadclipse class file viewer」這個一開始是沒有的,需用添加,如下圖所示:
接下來在eclipse中查看反編譯後的代碼:(這種方法可能不合適,但是能夠查看)
新建一個ejb project,右鍵「import」,選中"ejb jar file",導入你的jar包,finish
在項目下找你要查看的反編譯的文件即可,如果你遇到了下邊的這種情況
關閉這個文件後再次打開,就可以查看了(我的是這樣,所以我感覺這個方法不太好,但別的方法又不知道怎麼查看):
有錯誤或者有更好的方法,希望大家在下邊留言指出
ⅳ jd-gui反編譯java文件怎麼操作
這期教程是為各位講解在jd-gui反編譯java文件的詳細步驟旅猜,感興趣的拆轎型就趕緊去下文學習下吧,相信你們會喜歡。
網路搜索,下載並安裝jd-gui工具。
運行jd-gui.exe,進入主界面。
點擊菜單欄「file」下的子菜單「openfile」,在彈出框中選擇.class文件。也可以拖動.class文件進入jd-gui中。
選擇的.class文件以及整個目錄結構下的文件都會反編譯成java文件。
點擊「file」下的「savesource」,保存當前選擇的單個文帆配件。
點擊「file」下的「saveallsources」,保存所有的文件成zip文件。
解壓zip文件,所有的java文件就生成了。
ⅵ 如何將java中的.class文件反編譯
安裝java jdk後
看安裝目錄里有沒有jad.exe,沒有要下載,一般都有的
配置java環境變數
開始-運行-cmd-回車-進入命令行窗口:
cd 空格 class文件所在路徑:
按下面的命令進行反編譯:
例如:[2] jad -sjava example.class 回車
在目錄里可以看到example.java源文件
[1] 反編譯一個class文件:jad example.class,會生成example.jad,用文本編輯器打開就是java源代碼
[2] 指定生成源代碼的後綴名:jad -sjava example.class,生成example.java
[3] 改變生成的源代碼的名稱,可以先使用-p將反編譯後的源代碼輸出到控制台窗口,然後使用重定向,輸出到文件:jad -p example.class > myexample.java
[4] 把源代碼文件輸出到指定的目錄:jad -dnewdir -sjava example.class,在newdir目錄下生成example.java
[5] 把packages目錄下的class文件全部反編譯:jad -sjava packages/*.class
[6] 把packages目錄以及子目錄下的文件全部反編譯:jad -sjava packages/**/*.class,不過你仍然會發現所有的源代碼文件被放到了同一個文件中,沒有按照class文件的包路徑建立起路徑
[7] 把packages目錄以及子目錄下的文件全部反編譯並建立和java包一致的文件夾路徑,可以使用-r命令:jad -r -sjava packages/**/*.class
[8] 當重復使用命令反編譯時,jad會提示「whether you want to overwrite it or not」,使用-o可以強制覆蓋舊文件
[9] 還有其他的參數可以設置生成的源代碼的格式,可以輸入jad命令查看幫助,這里有個人做了簡單的翻譯:jad命令總結
[10] 當然,你會發現有些源文件頭部有些注釋信息,不用找了,jad沒有參數可以去掉它,用別的辦法吧。
ⅶ java 如何反編譯的自己的程序(rcp程序)
反編譯的工具有好多, 在眾多的java反編譯工具中,有幾種非常著名的工具使用了相同的核心引擎——jad,其中主要包括:front end plus、mdejava、decafe pro、cavaj java decompiler、dj java decompiler、nmi』s java class viewer和國產的java源代碼反編譯專家。
jad是java的反編譯工具,是命令行執行,反編譯出來的源文件可讀性較高。可惜用起來不太方便。還好
找到eclipse下的插件,叫jadclipse,安裝好之後,只要雙擊.class文件,就能直接看源文件,包括jar
包中的class文件,也可以直接反編譯。
1.下載jad1.5.8e
下載後解壓。解壓縮後將jad.exe拷貝到jre的bin目錄下,如d:\java\jre1.5\bin
2.下載net.sf.jadclipse_3.2.4.jar
3.安裝插件,有如下兩種方法
a.將net.sf.jadclipse_3.2.4.jar復制到d:\leaf\eclipse\plugins目錄下。
b.在d:\leaf下建立ecliplseplungin\jadclipse\eclipse\plugins目錄,將net.sf.jadclipse_3.2.4.jar放到該目錄。在d:\leaf\eclipse\links下建jadclipse.link,內容為path=d\:\\leaf\\ecliplseplungin\\jadclipse
3.啟動eclipse後,在windows(窗口)-->perference(首選項)-->java下面應該會多出一個jadclipse目錄,相關的設置可以在此修改配置jadclipse:設置path to decompiler為jad.exe的全路徑,如:d:\java\jre1.5\bin\jad.exe,在directory for temporary files中指定臨時文件的路徑,如:c:\java\temp
4、在eclipse的windows-->perference-->general->editors->file associations中修改「*.class」默認關聯的編輯器為「jadclipse class file viewer」
5、安裝完成,雙擊class文件,eclipse將自動反編譯了。
6、把*.java 和*.class文件放在同一文件夾下,在反編譯時它回自動去尋找*.java的文件。
反編譯工具jad簡單用法
以下假設jad.exe在c:\java目錄下
一、基本用法
usage: jad [option(s)]
直接輸入類文件名,且支持通配符,如下所示。
c:\java\>jad example1.class
c:\java\>jad *.class
結果是將example1.class反編譯為example1.jad。將example1.jad改為example1.java即得源
文件。
二、option -o
不提示,覆蓋源文件
三、option -s
c:\java\>jad -sjava example1.class
反編譯結果以.java為擴展名。
四、option -p
將反編譯結果輸出到屏幕
c:\java\>jad -p example1.class
將反編譯結果重定向到文件
c:\java\>jad -p example1.class>example1.java
五、option -d
指定反編譯的輸出文件目錄
c:\java\>jad -o -dtest -sjava *.class