反編譯可以用java decompiler,有exe版和eclipse插件版,或者如果ide是idea的話,自帶反編譯功能
⑵ 如何快速反編譯JAVA的jar包或war包
有些時候我們面對一個class文件jar包或者war包,很想知道裡面有什麼參數,有什麼方法,但是又沒有文檔,又沒有源代碼,那怎麼辦呢。
沒關系,我們可以反編譯這些class文件或jar包或war包。
java的class文件存儲的是位元組碼,這些基本知識在此就不必啰嗦了。反正就是其存儲的信息足夠可以反編譯出來。
我們下載TTools中dist文件夾下的TdeCompile.jar可執行jar包,然後就可以開始反編譯工作了。使用方法很簡單,在命令行輸入命令即可,如下
[plain] view plain
java -jar TdeCompile.jar xxx.class
注意如果你不在TdeCompile的同目錄下,需要寫上TdeCompile.jar的路徑,其次跟一個參數xxx.class,xxx代表你所要反編譯的文件的文件名。輸出即是xxx.class.txt,它是反編譯過後的文件,txt文本格式,所在目錄通xxx.class。請確保你在xxx.class目錄下有寫許可權。
我們也可以直接操作一個jar包或war包。如:
[plain] view plain
java -jar TdeCompile.jar xxx.jar
程序可以自動識別是class文件還是jar或war包,如果是jar包或war包,則首先自動解壓縮,解壓縮的目錄為xxx.jar的同一個目錄,然後逐個反編譯class文件,在每個class文件的旁邊輸出一個xxx.class.txt文件。請確保你在jar包所在目錄有寫許可權。
TdeCompile的原理是利用了ASM去讀取每一個class文件的信息。
⑶ 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
⑷ java反編譯
如今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即可查看源碼
⑹ 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反編譯工具有哪些
1、 Java反編譯插件—Jadclipse
JadClipse是Jad的Eclipse插件,是一款非常實用而且方便地Java反編譯插件,我們只需將下載的插件包復制到eclipse的plugins目錄下,然後修改window -> Preferences -> Java -> JadClipse 下的Path to decompiler ,如:C:\pin\jadnt158\jad.exe,最後在Windows -> Perference -> General -> Editors -> File Associations中修改「*.class」默認關聯的編輯器為「JadClipse Class File Viewer」 即可。
2、 Java反編譯工具 —jad
jad是一款使用非常廣泛地Java反編譯工具,上面這款Jadclipse就是基於jad的反編譯插件,JAD 文件包含 MIDlet 套件的標題信息,例如開發應用程序的公司、應用程序名稱和大小。
3、 Java 反編譯器—JD-GUI
JD-GUI 是一個用 C++ 開發的 Java 反編譯工具,由 Pavel Kouznetsov開發,支持Windows、Linux和蘋果Mac Os三個平台。而且提供了Eclipse平台下的插件JD-Eclipse。JD-GUI不需要安裝,直接點擊運行,可以反編譯jar,class文件。
4、 Java反編譯器—jdec
jdec是一個Java反編譯器。它能夠把出現在一個.class文件中的位元組碼還原成Java源代碼,反編譯的結果幾乎與原始Java文件相同。它還自帶一個利用swing開發的用戶操作界面。
5、 uuDeJava
uuDeJava是Java Class文件的反編譯工具。反編譯的Java源程序被輸出到Class的相同目錄。內部使用jad.exe。反編譯Class文件時,可以直接點擊Class文件(關聯後),或者選中文件或目錄發送到uuDeJava的快捷方式。還可以拖動文件或目錄到uuDeJava的主窗口。
6、 Java 反向工程軟體—Minjava
Minjava 是一個 Java 反向工程軟體,可幫助理解已存在一些 Java 軟體的架構和行為。
7、 Java Decompiler
這款反編譯器叫 「Java Decompiler」, 由 Pavel Kouznetsov開發,目前最新版本為0.2.5. 它由 C++開發,並且官方可以下載 windows、linux和蘋果Mac Os三個平台的可執行程序。
參考資料:http://www.kiwisec.com/news/detail/592e90c09a3e7a3fddc62db7.shtml