免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

JAVA反編譯工具精選

 duduwolf 2006-09-07
目前,比較流行的JAVA反編譯工具有近30種,其中有三款堪稱精品:

一、 應(yīng)用廣泛的JAD

在眾多的JAVA反編譯工具中,有幾種非常著名的工具使用了相同的核心引擎——JAD,其中主要包括:Front End Plus、mDeJava、Decafe Pro、Cavaj Java Decompiler、DJ Java Decompiler、NMI’s Java Class Viewer和國(guó)產(chǎn)的JAVA源代碼反編譯專家。

JAD本身是一個(gè)命令行工具,沒(méi)有圖形界面,上述的這些工具大多是在JAD內(nèi)核的基礎(chǔ)之上加了一個(gè)圖形界面而已。這么多種產(chǎn)品的共同選擇,足可證明JAD在JAVA反編譯領(lǐng)域中的尊貴地位。

筆者用來(lái)測(cè)試的JAD版本是1.5.8f,其運(yùn)行界面如下圖:
http://www.blogchina.com/resource/upload/pic/2006/03/17/264618335.1001.0161.jpg
JAD是使用Microsoft Visual C++開(kāi)發(fā)的,運(yùn)行速度非???,可以處理很復(fù)雜的JAVA編譯文件。眾多的參數(shù)使JAD可以靈活應(yīng)付多種加密手段,令反編譯的代碼更加優(yōu)化和易讀。由于JAD參數(shù)太多,沒(méi)必要一一解釋,其中有幾個(gè)最常用的如下:

-d <dir> - 用于指定輸出文件的目錄

-s <ext> - 輸出文件擴(kuò)展名(默認(rèn)為: .jad),通常都會(huì)把輸出文件擴(kuò)展名直接指定為.java,以方便修改的重新編譯。

-8 - 將Unicode字符轉(zhuǎn)換為ANSI字符串,如果輸出字符串是中文的話一定要加上這個(gè)參數(shù)才能正確顯示。

最常用的反編譯指令如下所示:

Jad –d c:\javasource –s .java -8 javatest.class

這條指令將當(dāng)前目錄下的javatest.class反編譯為javatest.java并保存在c:\javasource目錄里,其中的提示輸出為中文,而不是Unicode代碼。

二、 源碼開(kāi)放的JODE

JODE是全球最大的開(kāi)源項(xiàng)目網(wǎng)站Sourceforge.net的成員,不要以為源碼開(kāi)放就小瞧它,在所有的JAVA反編譯器中,JODE的反編譯效果是最好的,尤其是對(duì)付一些常見(jiàn)的加密手段,例如混淆技術(shù)等,更是出類拔粹。

JODE本身也是純JAVA開(kāi)發(fā)的,最近越來(lái)越多的JAVA反編譯軟件也選擇JODE來(lái)做它們的核心引擎,例如JCavaj Java Decompiler、BTJ (Back To Java)、jEdit‘s JavaInsight plugin等。

JODE是一個(gè)可運(yùn)行的JAR文件,在windows環(huán)境下雙擊即可運(yùn)行,其運(yùn)行界面如下:

http://www.blogchina.com/resource/upload/pic/2006/03/17/264618335.1002.0373.jpg
需要特別說(shuō)明的是,JODE不是通過(guò)常規(guī)的Open->File的方式來(lái)加載JAVA編譯后的類文件(*.class)或是類包(*.jar)的,而是通過(guò)在Options菜單中的Set Classpath來(lái)實(shí)現(xiàn)的,單獨(dú)的類文件可以將它的上一級(jí)目錄作為Classpath輸入,然后再選擇Reload Classpath即可:
http://www.blogchina.com/resource/upload/pic/2006/03/17/264618335.1003.07741.jpg
http://www.blogchina.com/resource/u....1004.08813.jpg

新加入的類包或是類的名字會(huì)在左側(cè)窗口出現(xiàn),雙擊類包名可以展開(kāi)目錄樹(shù)結(jié)構(gòu),雙擊需要反編譯的類名則在右上角的窗口中直接顯示反編譯后的源代碼。

三、 獨(dú)樹(shù)一幟的DAVA

DAVA不是一個(gè)獨(dú)立的JAVA反編譯器,而是JAVA代碼優(yōu)化工具Soot的一部分。Soot和JODE一樣是純JAVA開(kāi)發(fā)的,也是一個(gè)獨(dú)立的JAR包,但卻不能通過(guò)雙擊直接運(yùn)行,而是象JAD一樣在命令行狀態(tài)運(yùn)行。
http://www.blogchina.com/resource/upload/pic/2006/03/17/264618335.1005.09938.jpg
Soot對(duì)環(huán)境變量的配置要求非常嚴(yán)格,通常情況下要對(duì)CLASSPATH做如下設(shè)置:

Set CLASSPATH=%CLASSPATH%;c:\sootdir\sootclasses-2.1.0.jar;.;

其中的c:\sootdir\是下載的soot類包放置的路徑,CLASSPATH末尾的.;代表了當(dāng)前目錄,如果不加上這個(gè)的話Soot經(jīng)常會(huì)報(bào)一個(gè)找不到類的錯(cuò)誤。

DAVA是作為Soot的一個(gè)參數(shù)使用的,通常的用法如下:

Java soot.Main –f dava –d c:\javasource javatest

注意最后的類名不用帶.class后綴,因?yàn)樗J(rèn)是處理class文件,這個(gè)操作與前述的JAD的參數(shù)效果相同。
DAVA采取了流程優(yōu)化的方式進(jìn)行反編譯,與傳統(tǒng)反編譯思路不盡相同,但卻對(duì)改變流程類的加密方法有獨(dú)特的反編譯效果。
上述的三種工具各有千秋,但效果都非常不錯(cuò)。經(jīng)測(cè)試,它們基本上都可以把JDK自帶的一些例程完全反編譯,然后不加任何修改可再編譯成功,并能正常運(yùn)行!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多