扒开腿挺进岳湿润的花苞视频|将军边走边挺进她H树林|挺进朋友人妻张婉莹身体|岳脱得精光让我挺进去视频|第一次挺进莹莹的身体里视频|脱岳裙子从后面挺进去视频

新疆軟件開發(fā)

本站首頁 軟件開發(fā) 成功案例 公司新聞 公司簡介 客服中心 軟件技術 網(wǎng)站建設
  您現(xiàn)在的位置: 新疆二域軟件開發(fā)公司 >> Java技術 >> 文章正文

java反編譯工具大盤點

JAVA語言是1995年5月由SUN公司發(fā)布的,由于其安全性高、代碼優(yōu)化、跨平臺等特性,迅速取代了很多傳統(tǒng)高級語言,占據(jù)了企業(yè)級網(wǎng)絡應用開發(fā)等諸多領域的霸主地位,新疆烏魯木齊軟件開發(fā)網(wǎng),m.jdtbank.com 整理。


    不過,JAVA最突出的跨平臺優(yōu)勢使得它不能被編譯成本地代碼,而要以中間代碼的形式運行在虛擬機環(huán)境中,這使得JAVA的反編譯要比別的高級語言容易實現(xiàn),并且反編譯的代碼經(jīng)過優(yōu)化后幾乎可以與源代碼相媲美。
為了更好地保護知識產(chǎn)權,避免本公司的智力成果輕易被人竊取,開發(fā)者有必要對反編譯工具深入了解,以便有針對性地采取保護措施。
目前,比較流行的JAVA反編譯工具有近30種,其中有三款堪稱精品:
一、 應用廣泛的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內核的基礎之上加了一個圖形界面而已。這么多種產(chǎn)品的共同選擇,足可證明JAD在JAVA反編譯領域中的尊貴地位。
筆者用來測試的JAD版本是1.5.8f,其運行界面如下圖:
 
需要特別說明的是,JODE不是通過常規(guī)的Open->File的方式來加載JAVA編譯后的類文件(*.class)或是類包(*.jar)的,而是通過在Options菜單中的Set Classpath來實現(xiàn)的,單獨的類文件可以將它的上一級目錄作為Classpath輸入,然后再選擇Reload Classpath即可:

新加入的類包或是類的名字會在左側窗口出現(xiàn),雙擊類包名可以展開目錄樹結構,雙擊需要反編譯的類名則在右上角的窗口中直接顯示反編譯后的源代碼。
三、 獨樹一幟的DAVA
DAVA不是一個獨立的JAVA反編譯器,而是JAVA代碼優(yōu)化工具Soot的一部分。Soot和JODE一樣是純JAVA開發(fā)的,也是一個獨立的JAR包,但卻不能通過雙擊直接運行,而是象JAD一樣在命令行狀態(tài)運行。

 

Soot對環(huán)境變量的配置要求非常嚴格,通常情況下要對CLASSPATH做如下設置:
Set CLASSPATH=%CLASSPATH%;c:\sootdir\sootclasses-2.1.0.jar;.;
其中的c:\sootdir\是下載的soot類包放置的路徑,CLASSPATH末尾的.;代表了當前目錄,如果不加上這個的話Soot經(jīng)常會報一個找不到類的錯誤。
DAVA是作為Soot的一個參數(shù)使用的,通常的用法如下:
Java soot.Main –f dava –d c:\javasource javatest
注意最后的類名不用帶.class后綴,因為它默認是處理class文件,這個操作與前述的JAD的參數(shù)效果相同。
DAVA采取了流程優(yōu)化的方式進行反編譯,與傳統(tǒng)反編譯思路不盡相同,但卻對改變流程類的加密方法有獨特的反編譯效果。
上述的三種工具各有千秋,但效果都非常不錯。經(jīng)測試,它們基本上都可以把JDK自帶的一些例程完全反編譯,然后不加任何修改可再編譯成功,并能正常運行!
(文中工具均經(jīng)過本人親手測試,當時用的是jdk1.4.2_03,現(xiàn)在離寫文章的時候過了一年多了,jdk都出到1.5了,怕是有些程序也不太好反編了)

作者:未知 | 文章來源:未知 | 更新時間:2007-11-8 11:40:54

  • 上一篇文章:

  • 下一篇文章:

  • 相關文章:
    JAVA開發(fā)的6個實踐的例子
    JAVA中的抽象類型的一些概念
    java語言開發(fā)程序中的幾個例子大家看看
    了解java開發(fā)語言在軟件開發(fā)中的幾個誤區(qū)
    如何才能使用Java實現(xiàn)內部領域的特定語言
    Java開發(fā)學習小心使用Date以及Time類
    sun最近修補了一部分java的安全補丁
    Java程序員應該了解那些開源協(xié)議
    java性能優(yōu)化的一些見解
    解析c#語言和java語言最相似的地方
    軟件技術
    · 開發(fā)語言
    · Java技術
    · .Net技術
    · 數(shù)據(jù)庫開發(fā)
    最新文章  
    ·j2se 嵌入式腳本抓取引擎
    ·JAVA開發(fā)的6個實踐的例子
    ·JBuilder7 / Weblogic7開發(fā)
    ·JAVA中的抽象類型的一些概
    ·java語言開發(fā)程序中的幾個
    ·了解java開發(fā)語言在軟件開
    ·如何才能使用Java實現(xiàn)內部
    ·Java開發(fā)學習小心使用Date
    ·Java程序員應該了解那些開
    ·java性能優(yōu)化的一些見解
    ·介紹JDK5.0一些collection
    ·基礎學習:java中使用存儲
    ·解析c#語言和java語言最相
    ·Java語言學習:jAVA中 的多
    ·Java是不是應該增加新特性
    關于我們 | 軟件開發(fā) | 下載試用 | 客服中心 | 聯(lián)系我們 | 友情鏈接 | 網(wǎng)站地圖 | 新疆電子地圖 | RSS訂閱
    版權所有 © 2016 新疆二域軟件開發(fā)網(wǎng) m.jdtbank.com All Rights Reserved 新ICP備14003571號
    新疆軟件開發(fā)總機:0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆烏魯木齊北京中路華聯(lián)大廈A-5C 郵編:830000
     
    三门县| 松原市| 建昌县| 司法| 夏邑县| 黄梅县| 饶平县| 方山县| 忻城县| 吕梁市| 温州市| 犍为县| 永嘉县| 阜阳市| 南江县| 南投县| 阜南县| 五台县| 延吉市| 广东省| 新田县| 鄂州市| 茂名市| 克东县| 青州市| 东乡县| 闵行区| 太康县| 宜川县| 佛坪县| 上杭县| 深泽县| 射洪县| 翁源县| 东乌珠穆沁旗| 长宁区| 扎兰屯市| 辉县市| 盈江县| 敦化市| 姜堰市|