java可視化反編譯jd,java 反編譯器

本文目錄一覽:

幾種java反編譯軟件的安裝以及使用總結

下面是在網上找的幾種反編譯軟件的安裝以及使用:

一、JD-JUI

官網下載鏈接:

下載之後解壓,

點擊「jd-gui.exe」運行:

直接將”.jar”文件拖入進去即可查看裡邊的「.class」文件,如上圖所示。

二:Luyten

官網下載鏈接:

點擊「luyten-0.5.3.exe」下載,下載之後點擊運行,運行後的界面如圖所示,同樣也是講「.jar」文件拖入進入即可。

三、在eclipse中安裝反編譯工具

準備工作:

「jad.exe」下載:

「net.sf.jadclipse_3.3.0.jar」下載:

jad.exe」下載:

「net.sf.jadclipse_3.3.0.jar」下載:

然後將「net.sf.jadclipse_3.3.0.jar」拷貝到eclipse的plugins目錄下,再刪除eclipse的configuration目錄下「org.eclipse.update」文件,這一步很重要!

重啟eclipse,點擊window-Preference-Java,你會發現裡邊多了一個插件「JadClipse」,

選中這個插件,將下圖中紅圈圈的地方的地址填寫為你 「jad.exe」文件的地址

還沒有配置完,先不要close,

點擊General-Editors-File Associations 後,進入下邊的界面

設置.class 文件默認打開方式:

設置.class without source文件的默認打開方式,

需要注意的是,「JadClipse Class File Viewer」這個一開始是沒有的,需用添加,如下圖所示:

接下來在eclipse中查看反編譯後的代碼:(這種方法可能不合適,但是能夠查看)

新建一個EJB project,右鍵「import」,選中”EJB JAR file”,導入你的jar包,Finish

在項目下找你要查看的反編譯的文件即可,如果你遇到了下邊的這種情況

關閉這個文件後再次打開,就可以查看了(我的是這樣,所以我感覺這個方法不太好,但別的方法又不知道怎麼查看):

有錯誤或者有更好的方法,希望大家在下邊留言指出

Java反編譯工具有什麼作用?

就是把經過java文件編譯後的可執行的class文件再反編譯為java文件,因為經過編譯的class文件是不可閱讀的!但是由於java文件一般都不是單獨運行的,會有類之間的相互調用,所以反編譯工具反編譯後只能大體上還原原來java文件,而不能完全還原,特別是一些變量的取值,定義等..

JAVA反編譯軟件

由於JAVA語言安全性高、代碼優化、跨平台等特性,從1995年5月由SUN公司發佈後,迅速取代了很多傳統高級語言,佔據了企業級網絡應用開發等諸多領域的霸主地位。

不過,JAVA最突出的跨平台優勢使得它不能被編譯成本地代碼,而要以中間代碼的形式運行在虛擬機環境中,這使得JAVA的反編譯要比別的高級語言容易實現,並且反編譯的代碼經過優化後幾乎可以與源代碼相媲美。

為了更好地保護知識產權,避免本公司的智力成果輕易被人竊取,開發者有必要對反編譯工具深入了解,以便有針對性地採取保護措施。

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

一、 應用廣泛的JAD

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

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

JAD是使用Microsoft Visual C++開發的,運行速度非常快,可以處理很複雜的JAVA編譯文件。眾多的參數使JAD可以靈活應付多種加密手段,令反編譯的代碼更加優化和易讀。由於JAD參數太多,沒必要一一解釋,其中有幾個最常用的如下(以JAD 1.5.8f版本為例):

-d

– 用於指定輸出文件的目錄

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

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

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

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

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

二、 源碼開放的JODE

JODE是全球最大的開源項目網站Sourceforge.net的成員,在所有的JAVA反編譯器中,JODE的反編譯效果是最好的,尤其是對付一些常見的加密手段,例如混淆技術等,更是出類拔粹。

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

JODE是一個可運行的JAR文件,在windows環境下雙擊即可運行。

需要特別說明的是,JODE不是通過常規的Open-File的方式來加載JAVA編譯後的類文件(*.class)或是類包(*.jar)的, 而是通過在Options菜單中的Set Classpath來實現的,單獨的類文件可以將它的上一級目錄作為Classpath輸入,然後再選擇Reload Classpath即可。

新加入的類包或是類的名字會在左側窗口出現,雙擊類包名可以展開目錄樹結構,雙擊需要反編譯的類名則在右上角的窗口中直接顯示反編譯後的源代碼。

三、 獨樹一幟的DAVA

DAVA不是一個獨立的JAVA反編譯器,而是JAVA代碼優化工具Soot的一部分。Soot和JODE一樣是純JAVA開發的,也是一個獨立的JAR包,但卻不能通過雙擊直接運行,而是象JAD一樣在命令行狀態運行。

Soot對環境變量的配置要求非常嚴格,通常情況下要對CLASSPATH做如下設置:

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

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

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

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

注意最後的類名不用帶.class後綴,因為它默認是處理class文件,這個操作與前述的JAD的參數效果相同。

DAVA採取了流程優化的方式進行反編譯,與傳統反編譯思路不盡相同,但卻對改變流程類的加密方法有獨特的反編譯效果。

上述的三種工具各有千秋,但效果都非常不錯。經測試,它們基本上都可以把JDK自帶的一些例程完全反編譯,然後不加任何修改可再編譯成功,並能正常運行!

java反編譯工具jd gui怎麼用

jd-gui可以將看到的反編譯結果保存到一個zip壓縮包裏面。

具體操作為:File-》Save All Sources,然後打開壓縮包就可以對java源文件進行修改了。

原創文章,作者:NTZR,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/135071.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
NTZR的頭像NTZR
上一篇 2024-10-04 00:10
下一篇 2024-10-04 00:10

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發佈。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論