<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    在Eclipse中反編譯Class文件的方法

    學習中,需要反編譯Java的class文件。我的開發工具是windows xp+Eclipse3.2.2+MyEclipse。我找到了jad反編譯工具,在互聯網上找到了一些很有用的安裝步驟。下面記錄了我的安裝過程。

      一、下載

      1。下載 jad 工具,在官方網站沒有下載到,在CSDN上可以下載。

      2。下載插件 net.sf.jadclipse_3.3.0.jar。

      二、安裝

      1。安裝jad工具。下載后解壓,然后將解壓后的jad.exe文件復制到%JAVA_HOME%\bin目錄下面(可以將jad.exe放到任意位置,只要記住其存放路徑就好,下面要用到)。

      2。安裝插件。Eclipse中的插件安裝可以參考:Eclipse使用技巧(三)Eclipse中插件的安裝。

      我用復制的方法:直接把net.sf.jadclipse_3.3.0.jar拷貝到%ECLIPSE_HOME%\plugins目錄下。

      把使用link的方法拷貝到下面:建立D:\Myplugins\net.sf.jadclipse_3.3.0\eclipse\plugins的目錄結構,將jadclipse_3.2.4.jar放到plugins目錄下面(注:其中D:\Myplugins為你自己定義的一個專門放置插件的目錄)。再在%ECLIPSE_HOME%\links目錄下面建立一個net.sf.jadclipse_3.3.0.link文件(該文件名隨便取)。文件里面內容為:path=D:/Myplugins/net.sf.jadclipse_3.3.0。

      三、配置

      1。啟動Eclipse,打開Window->Preferences->Java->JadClipse,如果找到了JadClipse,即JadClipse插件被激活了。設置jad路徑:

      

      2。在Eclipse的Windows—> Perference—>General->Editors->File Associations中修改“*.class”默認關聯的編輯器為“JadClipse Class File Viewer”。

      四、使用jad反編譯

      1。在DOS窗口中,到class所在目錄,直接運行 >jad DB.class,將在該目錄中生成DB.jad文件。運行 >jad -sjava DB.class,將在該目錄中生成DB.java文件

      

      2。在Eclipse 工作臺使用:

      1)把class目錄加入項目:(這一步許多文檔都沒有寫到,花了我很多時間)

      1.1)項目--〉屬性--〉java buildpath--〉add class folder (如 a)--〉OK

      1.2)a--〉import--〉General-->File system-->Browse-->OK

      2)雙擊class 文件,出現可愛的java文件,編譯成功

      

      五、批量反編譯

      以下部分轉載 菠蘿大象的文章:

      現在有人會說了,這樣一個一個的看太麻煩了,我需要一次把一個JAR包下的所有class文件反編譯成java源文件。這樣的想法是可行的,還是使用jad工具。

      3、批量反編譯

      因為之前我們已經將jad加入到了%JAVA_HOME%\bin中,只要配置了環境變量,我們就可以在命令行中方便的使用。在這里,大象還是以dom4j-1.6.1.jar為例來說明具體的操作步驟。

      解壓dom4j-1.6.1.jar和jaxen-1.1-beta-7.jar。為了方便,我將JAR包解壓放到F盤根目錄,在cmd中,進入到F盤根路徑下,輸入命令:jad -o -r -s java -d src org/**/*.class

      我解釋一下這些參數的含義:

      -o:覆蓋舊文件,而且不用提示確認。

      -r:重新加載生成包結構。

      -s:定義輸出文件的擴展名。jad為默認擴展名,我們反編譯后當然是要.java源文件了。

      -d:輸出文件的目錄。src表示反編譯后的所有文件都放在src目錄下。

    org/**/*.classorg是解壓后的文件夾的名字,整個表示org目錄下的所有class文件。你也可以寫成這樣**/*.class,這表示當前目錄及其子目錄下所有的class文件(包含所有的子目錄)。
           反編譯dom4j-1.6.1.jar必須得有jaxen-1.1-beta-7.jar,因為dom4j里面有對xpath的調用,而這些東西都是引用jaxen里的API,如果不加則會有這樣的錯誤:
     


        到此,關于反編譯的內容全部說完了,不過我還想補充一點,有可能JAR包中的class文件不是老外的,而是我們自己寫的,里面可能會有中文的情況,這時,雖然反編譯通過了,但里面卻是gb2312形式的unicode編碼,因此我們還得做一個工作,將這些編碼轉換成中文。
        大象使用ant腳本來完成這個工作,內容比較簡單,加了注釋,應該很好明白,腳本文件名為build.xml,它放在src目錄下,和反編譯所得的包處在同一層。

    <?xml version="1.0" encoding="GBK"?>
    <project name="decompile" basedir="." default="native2ascii">
        
    <!-- 定義輸出目錄 -->
        
    <property name="build" value="build"/>
        
    <!-- 清除輸出目錄 -->
        
    <target name="clean">
            
    <delete dir="${build}"/>
        
    </target>
        
    <!-- 創建輸出目錄 -->
        
    <target name="init" depends="clean">
            
    <mkdir dir="${build}"/>
        
    </target>
        
    <!-- 編碼轉換 reverse="true"為反向轉換 -->        
        
    <target name="native2ascii" depends="init">
            
    <native2ascii reverse="true" src="${basedir}" encoding="gb2312" dest="${basedir}/${build}" />
        
    </target>
    </project>
        有一個地方需要補充一下,在native2ascii元素中,srcdest這兩個屬性表示著路徑。如果反編譯后,src目錄下,有多個不同的文件夾,這時使用ant來轉換編碼,請先想好要對哪些文件進行反編碼;如果按上面的寫法,將會把src目錄下的所有文件夾中的所有文件進行反編碼。假設,現在有comorg兩個文件夾(其實是兩個包),我只需要對com中的文件進行反編碼,那么可以這樣改寫:src="${basedir}/com" dest="${basedir}/${build}/com"
        其它的都不變。在cmd中進入到src路徑下,輸入ant,回車。可以看到如下結果:

     

     
    反編譯的內容基本結束。

    posted on 2012-12-21 15:19 youngturk 閱讀(323) 評論(0)  編輯  收藏 所屬分類: 不明白紀錄新認識筆記Java基礎

    <2012年12月>
    2526272829301
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    導航

    統計

    公告

    this year :
    1 jQuery
    2 freemarker
    3 框架結構
    4 口語英語

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    EJB學習

    Flex學習

    learn English

    oracle

    spring MVC web service

    SQL

    Struts

    生活保健

    解析文件

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国精产品一区一区三区免费视频 | 亚洲AV无码成H人在线观看| 亚洲日韩乱码中文无码蜜桃| 中文字幕免费不卡二区| 亚洲日韩中文无码久久| 精品乱子伦一区二区三区高清免费播放 | 亚洲国产精品无码久久九九| 特级毛片爽www免费版| 亚洲成av人在片观看| 国产大片免费天天看| 亚洲妇熟XXXX妇色黄| 亚洲精品无码mv在线观看网站| 9久热精品免费观看视频| 亚洲成AV人片一区二区密柚| 无人在线观看免费高清| 亚洲欧洲日产国码二区首页| 欧美a级在线现免费观看| 亚洲国产成人AV网站| 曰批视频免费30分钟成人| 中文字幕 亚洲 有码 在线| 精品免费国产一区二区三区 | 亚洲精品无码AV人在线播放| 精品成人免费自拍视频| 亚洲精品日韩专区silk| 中文字幕在线免费看| 久久精品国产亚洲AV网站| 美女被免费喷白浆视频| 在线观看免费亚洲| 精品国产人成亚洲区| 久久永久免费人妻精品下载 | 色老板亚洲视频免在线观| 国产精品免费小视频| 美女被免费网站91色| 亚洲国产香蕉碰碰人人| 毛片a级毛片免费播放100| 特级毛片全部免费播放| 四虎永久免费地址在线观看| 亚洲综合免费视频| 亚洲熟妇无码AV不卡在线播放| 夜色阁亚洲一区二区三区| 亚洲人成人网毛片在线播放|