posts - 0,  comments - 17,  trackbacks - 0

          JAVA反編譯工具

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

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

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

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

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

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

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

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

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

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

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

          二、 源碼開放的JODE

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

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

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

          http://www.blogchina.com/resource/upload/pic/2006/03/17/264618335.1002.0373.jpg
          需 要特別說明的是,JODE不是通過常規(guī)的Open->File的方式來加載JAVA編譯后的類文件(*.class)或是類包(*.jar)的,而 是通過在Options菜單中的Set Classpath來實現(xiàn)的,單獨的類文件可以將它的上一級目錄作為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

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

          三、 獨樹一幟的DAVA

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

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

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

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

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

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

          posted on 2007-12-17 11:11 xyz 閱讀(1185) 評論(0)  編輯  收藏 所屬分類: 網(wǎng)絡(luò)文摘

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          留言簿

          隨筆檔案(1)

          文章分類(44)

          文章檔案(46)

          收藏夾(1)

          Adobe

          AOP

          API

          appServer

          BI

          c

          • c-free
          • codeblocks
          • codelite
          • CodeLite IDE 是一個強(qiáng)大的開源,跨平臺的 C/C++整合開發(fā)環(huán)境. 支持包括 Windows、Linux 和 Mac 系統(tǒng)下運行
          • codelite官網(wǎng)
          • dev-c++
          • Dev-C++是一個C&C++開發(fā)工具,它是一款自由軟件,遵守GPL協(xié)議。
          • GCC
          • GCC 原名為 GNU C 語言編譯器(GNU C Compiler),因為它原本只能處理 C語言。GCC 很快地擴(kuò)展,變得可處理 C++。之后也變得可處理 Fortran、Pascal、Objective-C、Java, 以及 Ada 與其他語言。

          Cache

          CMS

          DB

          eclipse

          FreeMarker

          hibernate

          html5

          ibatis

          java

          jquery

          js

          json

          Linux

          Log

          mail server

          mobile

          mysql

          oauth

          openID

          other

          PHP

          portal

          report

          Scheduler

          schema

          Security

          SOA

          spring

          struts

          UI原型設(shè)計

          w3c

          Wap

          webservice

          xml

          供應(yīng)鏈管理

          博客鏈接

          好網(wǎng)站

          工作流

          開源網(wǎng)

          招聘

          插件下載

          操作系統(tǒng)

          構(gòu)建可伸縮的系統(tǒng)

          構(gòu)建工具

          測試

          游戲

          源碼托管

          經(jīng)營

          資源

          金融/財務(wù)

          搜索

          •  

          最新評論

          主站蜘蛛池模板: 海林市| 左贡县| 雅江县| 大理市| 定陶县| 扬州市| 南雄市| 同德县| SHOW| 泸州市| 游戏| 南木林县| 杭锦后旗| 德安县| 舞钢市| 泗阳县| 齐齐哈尔市| 澄城县| 阳新县| 武夷山市| 长汀县| 林甸县| 二连浩特市| 固安县| 花莲市| 梅州市| 七台河市| 孟村| 滕州市| 九寨沟县| 福州市| 竹北市| 金乡县| 丹凤县| 青岛市| 余干县| 清丰县| 中宁县| 天祝| 宜兴市| 繁昌县|