溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何將class文件反編譯成java文件

發(fā)布時(shí)間:2021-04-26 14:33:18 來源:億速云 閱讀:2108 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(guān)如何將class文件反編譯成java文件的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

Java的優(yōu)點(diǎn)是什么

1. 簡單,只需理解基本的概念,就可以編寫適合于各種情況的應(yīng)用程序;2. 面向?qū)ο螅?. 分布性,Java是面向網(wǎng)絡(luò)的語言;4. 魯棒性,java提供自動(dòng)垃圾收集來進(jìn)行內(nèi)存管理,防止程序員在管理內(nèi)存時(shí)容易產(chǎn)生的錯(cuò)誤。;5. 安全性,用于網(wǎng)絡(luò)、分布環(huán)境下的Java必須防止病毒的入侵。6. 體系結(jié)構(gòu)中立,只要安裝了Java運(yùn)行時(shí)系統(tǒng),就可在任意處理器上運(yùn)行。7. 可移植性,Java可以方便地移植到網(wǎng)絡(luò)上的不同機(jī)器。8.解釋執(zhí)行,Java解釋器直接對(duì)Java字節(jié)碼進(jìn)行解釋執(zhí)行。

方法:1、下載“jad.exe”插件,將其和“.class”文件放置在同一目錄下;2、打開cmd命令窗口,使用cd命令進(jìn)入“Jad.exe”所在目錄;3、執(zhí)行“Jad -d java文件存放路徑 -sjava class文件路徑”命令即可。

本教程操作環(huán)境:windows7系統(tǒng)、java8版、DELL G3電腦。

一、工具/材料

jad.exe反編譯插件

下載地址可參考:

https://varaneckas.com/jad/

ttp://pan.baidu.com/s/1qWmNlww

二、方法/步驟

說明

  • 在眾多的JAVA反編譯工具中,有幾種非常著名的工具使用了相同的核心引擎——JAD,其中主要包括:Front End
    Plus、mDeJava、Decafe Pro、Cavaj Java Decompiler、DJ Java
    Decompiler、NMI’s Java Class
    Viewer和國產(chǎn)的JAVA源代碼反編譯專家等等。JAD本身是一個(gè)命令行工具,沒有圖形界面,上述的這些工具大多是在JAD內(nèi)核的基礎(chǔ)之上加了一個(gè)圖形界面而已。這么多種產(chǎn)品的共同選擇,足可證明JAD在JAVA反編譯領(lǐng)域中的尊貴地位。

操作

將jad.exe和.class文件放置在同一目錄下(非必需,可隨意,后面會(huì)講解)

如何將class文件反編譯成java文件

開始-運(yùn)行(或Win+R)-cmd打開系統(tǒng)命令窗口,進(jìn)入Jad.exe所在目錄

例如:

f: 
cd F:\Jad

如何將class文件反編譯成java文件

輸入命令Jad -d F:\Jad\test -sjava test\*.class 回車  即可生成Java文件

如何將class文件反編譯成java文件

示例:

Jad -d F:\Jad\test -sjava test\*.class

如何將class文件反編譯成java文件
備注說明: *.class 中*是通配符,默認(rèn)選中此目錄下所有.class文件,如只需要反編譯某一個(gè).class文件,可直接寫成 文件名+.class

如:Jad -d F:\Jad\test -sjava test\CaseInfoSaveAction.class

Jad命令--幫助提示:

-a - 用JVM字節(jié)格式來注解輸出
-af - 同 -a,但是注解的時(shí)候用全名稱
-clear - 清除所有的前綴
-b - 輸出多余的括號(hào) (e.g., if(a) { b(); }, default: no)
-d < dir >- 指定輸出文件的文件目錄
-dead -試圖反編譯代碼的dead 部分(default: no)
-disass - 不用用字節(jié)碼的方式反編譯 (no JAVA source generated)
-f - 輸出整個(gè)的名字,無論是類還是方法
-ff -輸出類的成員在方法之前 (default: after methods)
-i - 輸出所有的變量的缺省的最初值
-l< num >- 將strings分割成指定數(shù)目的塊的字符 (default: no)
-lnc - 將輸出文件用行號(hào)來注解 (default: no)
-nl - 分割strings用新行字符 newline character (default: no)
-nodos -不要去檢查class文件是否以dos方式寫 (CR before NL, default: check)
-nocast - 不要生成輔助文件
-nocode -不要生成方法的源代碼
-noconv - 不要轉(zhuǎn)換java的定義符 (default: do)
-noctor - 不允許空的構(gòu)造器存在
-noinner -關(guān)掉對(duì)內(nèi)部類的支持 (default: turn on)
-nolvt - 忽略局部變量的表信息
-nonlb - 不要輸出一個(gè)新行在打開一個(gè)括號(hào)之前 (default: do)
-o - 無需確認(rèn)直接覆蓋輸出 (default: no)
-p - 發(fā)送反編譯代碼到標(biāo)準(zhǔn)輸出 STDOUT (e.g., for piping)
-pa -用于生成源文件中的所有包的前綴
-pc -帶有數(shù)字名稱的類的前綴(默認(rèn)值:_cls)
-pe -未使用異常名稱的前綴(默認(rèn)值:_ex)
-pf -帶數(shù)字名稱字段的前綴(默認(rèn)值:_fld)
-pi -使用。
-pl -帶數(shù)字名稱的局部變量前綴(默認(rèn)值:_lcl)
-pm -帶有數(shù)值名稱的方法的前綴(默認(rèn)值:_mth)
-pp -帶有數(shù)值名稱的方法parms前綴(默認(rèn)值:_prm)
-pv -將具有相同類型的字段打包成一行(packfields)
-r -恢復(fù)包目錄結(jié)構(gòu)
-s -輸出文件擴(kuò)展名(默認(rèn):.jad)
-空格-關(guān)鍵字(if, while等)和表達(dá)式之間的輸出空格
-stat -顯示處理過的類/方法/字段的總數(shù)
-t -使用空格進(jìn)行縮進(jìn)(默認(rèn)值:4)
-t -使用制表符代替空格進(jìn)行縮進(jìn)
-v -反編譯時(shí)顯示方法名

感謝各位的閱讀!關(guān)于“如何將class文件反編譯成java文件”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI