反編譯工具java,反編譯工具手機版

本文目錄一覽:

java反編譯器怎麼用?

java中常用的反編譯工具是 java Decompiler,使用方法如下:

1、雙擊打開java Decompiler.exe,如圖:

2、通過file-》open file打開想要反編譯的class文件:

3、查看反編譯結果:

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

和javap功能差不多,就是進行反編譯~把.class文件反編譯成原來的JAVA代碼~

反編譯工具 java jad怎麼使用方法

下好以後解壓就可以用了,軟件就只有一個exe文件和一個幫助文件,為了方便使用,我直接將exe文件放到JDK的bin目錄里了:)

下面先來看看從網上搜集來的介紹:在眾多的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參數太多,沒必要一一解釋,其中有幾個最常用的如下:

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

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

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

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

Jad -d c:\test -s .java -8 HelloWorld.class

這將當前目錄下的HelloWorld.class反編譯為HelloWorld.java並保存在c:\test目錄里,其中的提示輸出為中文,

而不是Unicode代碼。

附件:對下載後的說明文檔的簡單翻譯,希望對你有所幫助(mathsfan修改於2006.10.29,翻譯的不好請見諒)0、1略去2、怎樣使用JAD

反編譯一個簡單的java class文件’example1.class’用如下命令: jad example1.class

這個命令將在當前目錄下創建一個’example1.jad’文件,假如當前目錄下存在這個文件,則JAD會提示你覆蓋它與否。選項

-o 允許覆蓋時沒有任何提示。選項 -s ext允許改變輸出文件的後綴名: jad -sjava example1.class

這個命令將要創建’example1.java’文件。在一起使用-o 和

-sjava選項時請小心,因為JAD會附帶的重寫你的源文件。JAD使用JAVA

class的名字作為輸出文件的名字。例如,假如class文件’example1.class’包含JAVA class

‘test1’那麼JAD將會創建文件’test1.jad’而不是’example1.jad’。假如你想具體指明你的輸出文件的名字使用輸出重命名:

jad -p example1.class myexm1.java

選項 –d允許你具體指明另外的輸出文件目錄,不管這個目錄是新建的、默認的或者當前目錄。例如:

jad -o -dtest -sjava *.class

(或者 jad -o -d test -s java *.class, 這個有同樣的效果)

這個命令將在當前目錄下反編譯所有的.class文件並在’test’文件夾下建立所有擴展名為.java的輸出文件。

假如你想反編譯整個目錄樹下的JAVA classes,使用如下命令:

jad -o -r -sjava -dsrc tree/**/*.class

這個命令將反編譯當前目錄樹里所有的.class文件並且在當前目錄下建立src文件夾後根據包的名字來輸出文件。例如,假如有一個文件

‘tree/a/b/c.class’在包’a.b’下包含了class ‘c’,那麼輸出文件的名字為’src/a/b/c.java’。

在先前的命令上將通配符那裡注釋掉。則它是用JAD來處理而不是command殼,所以在UNIX上的最後一次參數將會被單獨引用。

jad -o -r -sjava -dsrc ‘tree/**/*.class’

你想檢查編譯後的文件的正確性或者出於好奇的情況下,這裡有一個選項 –a 將會告訴JAD給輸出的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反編譯的幾種方式

第一種方式:Help——Eclipse Marketplace

安裝eclipse自帶的插件( Decompiler )

第二種方式:使用反編譯工具(XJad2.2等)

第三種方式:在cmd中的輸入javap -verbose HellloWorld.class 回車,此處的HelloWorld.class為自己創建的HelloWorld.java編譯後的class文件

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-24 03:02
下一篇 2024-12-24 03:03

相關推薦

  • 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
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 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
  • 手機杜比音效有必要開嗎?

    杜比音效是一個在影音領域中非常知名的品牌。許多手機都已經將杜比音效作為一個賣點來進行推廣。那麼,手機杜比音效有必要開嗎?本文將從多個方面進行闡述。 一、杜比音效的介紹 杜比音效是一…

    編程 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

發表回復

登錄後才能評論