學習中
需要反編譯Java的class文件
我的開發工具是windows xp+Eclipse
+MyEclipse
我找到了jad反編譯工具
在互聯網上找到了一些很有用的安裝步驟
下面記錄了我的安裝過程
一
下載
下載 jad 工具
在官方網站沒有下載到
在CSDN上可以下載
下載插件 net
sf
jadclipse_
jar
二
安裝
安裝jad工具
下載後解壓
然後將解壓後的jad
exe文件復制到%JAVA_HOME%\bin目錄下面(可以將jad
exe放到任意位置
只要記住其存放路徑就好
下面要用到)
安裝插件
Eclipse中的插件安裝可以參考
Eclipse使用技巧(三)Eclipse中插件的安裝
我用復制的方法
直接把net
sf
jadclipse_
jar拷貝到%ECLIPSE_HOME%\plugins目錄下
把使用link的方法拷貝到下面
建立D:\Myplugins\net
sf
jadclipse_
\eclipse\plugins的目錄結構
將jadclipse_
jar放到plugins目錄下面(注
其中D:\Myplugins為你自己定義的一個專門放置插件的目錄)
再在%ECLIPSE_HOME%\links目錄下面建立一個net
sf
jadclipse_
link文件(該文件名隨便取)
文件裡面內容為
path=D:/Myplugins/net
sf
jadclipse_
三
配置
啟動Eclipse
打開Window
>Preferences
>Java
>JadClipse
如果找到了JadClipse
即JadClipse插件被激活了
設置jad路徑
在Eclipse的Windows
> Perference
>General
>Editors
>File Associations中修改
*
class
默認關聯的編輯器為
JadClipse Class File Viewer
四
使用jad反編譯
在DOS窗口中
到class所在目錄
直接運行 >jad DB
class
將在該目錄中生成DB
jad文件
運行 >jad
sjava DB
class
將在該目錄中生成DB
java文件
在Eclipse 工作台使用
)把class目錄加入項目
(這一步許多文檔都沒有寫到
花了我很多時間)
)項目
〉屬性
〉java buildpath
〉add class folder (如 a)
〉OK
)a
〉import
〉General
>File system
>Browse
>OK
)雙擊class 文件
出現可愛的java文件
編譯成功
五
批量反編譯
以下部分轉載 菠蘿大象的文章
現在有人會說了
這樣一個一個的看太麻煩了
我需要一次把一個JAR包下的所有class文件反編譯成java源文件
這樣的想法是可行的
還是使用jad工具
批量反編譯
因為之前我們已經將jad加入到了%JAVA_HOME%\bin中
只要配置了環境變量
我們就可以在命令行中方便的使用
在這裡
大象還是以dom
j
jar為例來說明具體的操作步驟
解壓dom
j
jar和jaxen
beta
jar
為了方便
我將JAR包解壓放到F盤根目錄
在cmd中
進入到F盤根路徑下
輸入命令
jad
o
r
s java
d src org/**/*
class
我解釋一下這些參數的含義
o:覆蓋舊文件
而且不用提示確認
r:重新加載生成包結構
s:定義輸出文件的擴展名
jad為默認擴展名
我們反編譯後當然是要
java源文件了
d:輸出文件的目錄
src表示反編譯後的所有文件都放在src目錄下
創建Java項目
當Eclipse首次啟動時進入的是資源透視圖
在這個透視圖中可以管理項目
文件夾
文件和其它資源
按照Eclipse的說法
這些面板叫做視圖
一套完整的視圖叫做透視圖
在資源透視圖中
你可以使用左上方的視圖(導航視圖)導航和創建資源
在Eclipse中做事之前
如創建Java程序
需創建一個Java項目
創建Java項目的步驟如下
在導航視圖上點擊右鍵
在彈出的上下文菜單中選擇新建項目
在新建項目對話框中
Eclipse提供了項目選項
Java
插件開發等
因此你想要創建一個Java項目
在對話框左邊選擇Java;
在對話框右邊選擇Java項目
如果你還安裝了其它Java插件開發包
在這裡也會一起列出來(如EJB
Servlet等)
Eclipse默認安裝的JDT僅支持標准Java應用程序
因此你必須選擇Java項目選項
點擊下一步進入新建項目向導對話框
首先給項目命一個名字
因為是一個簡單的
Hello
world
例子
因此這裡我輸入
Hello
點擊下一步
設置構建Java項目的設置選項
對於這個項目你不需要做任何修改即可
點擊完成
Eclipse此時會提示你這種項目是和Java透視圖關聯的
並詢問你是否切換到Java透視圖
選擇是
創建Java類
當你創建好Java項目後就可以開始創建Java程序了
盡管不是非得這麼做
但這樣可以將你的Java類組織到包中
這是一次很好的實踐
通常使用域名做為包名
這樣可以減少名字沖突的可能性
如果你沒有注冊域名
也可以使用任何方便的
唯一的hoc名
我在這裡使用org
eclipseguide
項目名是hello
因此包的全名就是org
eclipseguide
hello
按照下列步驟創建Java程序
在項目上點擊右鍵
選擇New
Class彈出新建Java類向導
第一個字段區域
源文件夾
默認是項目的文件夾
保持默認值
在包字段區域輸入org
eclipseguide
hello;
在類名字段區域輸入HelloWorld;
在
Which Method Stubs Would You Like to Create?
區域下
選中public static void main(String[] args)
新建Java類的對話框如圖
所示
圖 使用新建Java類向導創建HelloWorld類
點擊完成新建java類向導將會為程序包創建一系列目錄HelloWorldjava源文件將會放在這個包名下面
自動創建的代碼包括一個main( )方法你可以向裡面添加任何功能如打印你的Hello world!為了使調試變得更有趣你需要添加一個循環打印的方法在Eclipse中修改自動生成的代碼如下
public class HelloWorld {
public static void main(String[] args) {say(Hello world!)}public static void say(String msg) {for (int i = ; i < ; i++) {Systemoutprintln(msg)}}}
運行Java程序
現在你已經可以運行這個Java程序了在運行Java程序時需要考慮多個事情包括Java運行環境是否需要命令行參數如果不知一個類有main( )函數究竟該使用哪一個在Eclipse中正確啟動一個Java程序的方法是從Eclipse菜單中選擇運行à運行此時會彈出一個對話框讓你配置啟動選項在運行一個Java程序前你需要創建一個啟動配置或從現有配置中選擇一個
對於大多數簡單的Java程序而言你不需要指定啟動配置因此你可以使用更簡單的方法啟動程序首先確保編輯器中HelloWorld源代碼是全部選中的然後
從Eclipse菜單中選擇運行à以…運行àJava應用程序
因為你已經對Java程序做出了修改Eclipse會提示你在運行Java程序前先保存一下點擊確定
任務視圖切換到控制台視圖顯示程序輸出如圖所示
圖 Eclipse控制台視圖顯示HelloWorld程序運行輸出
你可能疑惑為什麼沒有單獨的步驟將java文件編譯成class文件這是因為Eclipse JDT包含了一個增量的編譯器來評估你輸入的Java程序代碼它可以高亮顯示語法錯誤和不完整的引用和其它Eclipse友好的特性一樣如果你覺得這個功能對你沒用你完全可以關閉它如果編譯成功class文件會在保存源文件時同步保存
調試Java程序
在Eclipse中交互式運行代碼是其最強大的特性之一使用JDT調試器你可以逐行執行你的Java程序檢查程序不同位置變量的值這個過程在定位代碼中的問題時非常有用
為了准備調試你需要在代碼中設置一個斷點先以便讓調試器暫停執行允許你調試否則程序會從頭執行到尾你就沒有機會調試了為了設置一個斷點在編輯器左邊灰色邊緣雙擊這裡將say()函數位置設置為斷點此時將會顯示一個藍色的小點表示一個活動的斷點
在調試器下運行程序和運行它非常類似Eclipse提供了兩個選項選擇使用全方位服務運行à調試菜單使用一個快捷配置如果默認選項正確也可以選擇運行à以…調試àJava應用程序在這裡我們使用後者
確保編輯器中的HelloWorld代碼被全部選中了然後從主菜單中選擇運行à以…調試àJava應用程序Eclipse將會啟動程序切換到調試透視圖在斷點暫停執行如圖所示
圖 調試HelloWorld:在第一個斷點執行被暫停
調試透視圖包括多個新的視圖都是用於調試使用的首先在左上方是調試視圖(不要和調試透視圖混淆了)它顯示了所有調用堆和當前所有線程的狀態包括所有已經執行完畢的線程程序運行到斷點位置時狀態顯示為暫停
單步調試代碼
調試視圖的標題欄是一個讓你可以控制Java程序執行的工具欄前面幾個按鈕和電子設備如CD播放器的控制按鈕風格非常類似允許你暫停繼續和終止程序這些按鈕讓你可以一行一步地執行程序代碼鼠標移動到每個按鈕上時都會顯示按鈕提示信息如跟蹤單步返回等
如第二個按鈕跟蹤當前執行的程序代碼在編輯器中處於高亮狀態調用say()函數如果跟蹤的話就會進入這個函數內部點擊跟蹤後高亮的行是首先執行的行 for語句
一般情況下你只想跟蹤你自己寫的類對於標准類和第三方類通常沒有什麼問題是不需要跟蹤的這時候可以使用過濾後跟蹤功能即Step With Filters選擇WindowPreferencesJavaDebugStep過濾器然後選擇列出的包和類多花點時間設置過濾器可以有效減輕調試難度當你使用普通的跟蹤調試功能時經常會遇到許多未知錯誤這時使用過濾跟蹤就能很好解決這一問題
評估變量和表達式
調試視圖的右邊是一個標簽視窗包含視圖在這裡你可以檢查和修改變量和斷點選擇變量標簽頁這個視圖顯示了當前范圍的變量及其值在進入for循環之前這個視圖僅包括say()函數的msg參數及其值單機單步或跟蹤按鈕進入for循環變量視圖將會顯示循環標志i及其值
有時一個Java程序有許多變量但你僅對其中一個或幾個感興趣為了監視選擇的變量和表達式你可以將它們添加到表達式視圖中的監視列表中例如選擇一個變量i(在編輯器中雙擊它)點擊右鍵從彈出的右鍵菜單中選擇監視這個變量(及其值)就會顯示在表達式視圖中
監視變量的一個好處是你可以檢查對象和它們的值的詳細信息並且可以修改它們的值返回到變量視圖展開msg變量顯示它的屬性它是一個char數組展開msg字符串可以顯示它的值例如雙擊H會提示你輸入一個新值如J
在同一個標簽視窗中的是顯示視圖它允許你輸入任何允許的變量或包括這些變量的實例表達式選擇顯示視圖然後輸入
msgcharAt(i)
為了快速評估這個表達式你必須先選中它然後點擊第二個顯示視圖工具按鈕(顯示所選文本評估結果)它在顯示視圖中顯示結果通常最好點擊第一個工具按鈕(檢查所選文本評估結果)因為它添加表達式到表達式視圖中不管使用哪種方法當表達式中的變量發生變化時顯示的值都不回自動更新但在表達式視圖中你可以講表達式轉為監視表達式當你單步調試代碼時就會自動更新切換到表達式視圖注意檢查按鈕顯示下一個表達式點擊表達式然後從彈出的上下文菜單中選擇轉換成監視表達式下一個表達式圖標將會變成監視圖標
我們還是回到單步調試代碼中你前面在調用Systemoutprintln()時留下了游標如果你想查看Systemoutprintln()的代碼你可以點擊跟蹤否則就點擊單步執行Systemoutprintln()函數開始下一個for循環
在編輯器下方是連一個標簽視窗包括控制台視圖程序輸出就顯示在這裡如果你象前面說的那樣將H改為J了那這裡將會顯示Jello world!你也可以點擊單步執行直到循環終止如果你覺得這個過程太過冗長也可以點擊返回快速結束say()函數返回到main()函數或者點擊繼續按鈕讓Java程序運行到終點
小結
Eclipse最有用的特性之一就是它集成的調試器它可以交互式執行代碼通過設置斷點逐行執行代碼檢查變量和表達式的值等功能反應其強大的功能它是一款檢查和修復Java程序代碼問題的不可替代的工具
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28115.html