最近接了幾個奇怪的案子,清一色的就是沒有原始碼,看來這是台灣軟體界的抬頭了!畢竟在這十幾年的資訊生涯裡每個專案的原始碼都是在合約中寫明的是屬於甲方的,不過我想專案吧,開發出來的東西我想歸屬於客戶也沒甚麼關係,要改也要有個功力好的人才有辦法做reengineering。
不過接了這些案子但是又需要測試的時候只好進行decompiler了,在java domain有個很棒的好處就是open source的精神,全世界的設計師開發出很多很好用的tool可以快速地達到這點。
Java Decompiler 工具
下面幾個是比較受歡迎的Decompiler tool:
- JD
- JAD
試用後發現JD的正確性比較高,不過下面還是針對這兩個Decompiler的安裝與使用方式做一個介紹。
Eclipse plugin installation
我的方式是直接使用eclipse,比較方便也比較快速,我的eclipse version 為 indigo 3.7.1 mac 64x。
兩種Tool在eclipse上的安裝方式都是:
Help -> Install New Software > Add : 然後輸入名字與網址後點選Add。
JD for Eclipse
Name: jd-decompiler
Location: http://java.decompiler.free.fr/jd-eclipse/update
JAD for Eclipse
Name: J2D
Location: http://jadclipse.sf.net/update
Plugin setting
安裝好後必須設定關聯檔案,如此我們可以在IDE裡頭開啟class檔案時直接呼叫Decompiler看到原始碼,設定方式如下。
設定檔案關聯性,將class檔案關聯到decompiler tool。
Open Eclipse > Preferences > General > Editors > File Associations
在右側的 [File types] 中選擇*.class,在下面的[Associated editors] 選擇Add然後:
- 如果是想要使用JAD則選擇[Decompiled Class File Viewer]
- 如果是想要使用JD的話則選擇[Class File Editor]
Open Eclipse > Preferences > Java > Decompilers
在[Decompiler]右側可以選擇所要使用的Decompiler Tool,
若勾選[Use Eclipse code formmatter (reformats decompiler output.]的話則在decompiler之後會進行原始碼的格式化。
如果使用的是JAD的話需要額外的設定。
Open JAD 右側的
[Path to decompiler] 必須設定jad指令檔的完整路徑
[Directory for temporary files] 若有預設值則不需修改,若無的話你則需要設定一個目錄作暫存用
到此為止設定完成後便可以在eclipse快速度進行decompiler的動作,對於JAD來說有其他的相關設定在[Debug] [Directives] [Formatting] [Misc]中。