class文件的反編譯工具是java中比較常常用到的,這個(gè)也是有不少的用戶是需要進(jìn)行編程使用的,本站為你提供的是一款比較小巧的工具,適合初學(xué)者的使用!
java class反編譯原理
將.class文件讀取出來(lái),里面的機(jī)器語(yǔ)言轉(zhuǎn)換成java語(yǔ)言。翻譯成相應(yīng)的語(yǔ)句一般的流程是先把程序調(diào)入到數(shù)據(jù)段,虛擬運(yùn)行環(huán)境,一般這分配文件頭部,從紀(jì)錄指令程序數(shù)據(jù)段,載入到虛擬環(huán)境中,紀(jì)錄指令,遇到跳轉(zhuǎn)指令,壓入棧,形成樹(shù)結(jié)構(gòu)(看數(shù)據(jù)結(jié)構(gòu)),遍歷每個(gè)節(jié)點(diǎn)的指令。形成完整程序。
如何將java中的.class文件反編譯
開(kāi)始-運(yùn)行-cmd-回車-進(jìn)入命令行窗口:
cd+空格+class文件所在路徑:
按下面的命令進(jìn)行反編譯:
例如:[2] jad -sjava example.class 回車
在目錄里可以看到example.java源文件
[1] 反編譯一個(gè)class文件:jad example.class,會(huì)生成example.jad,用文本編輯器打開(kāi)就是java源代碼
[2] 指定生成源代碼的后綴名:jad -sjava example.class,生成example.java
[3] 改變生成的源代碼的名稱,可以先使用-p將反編譯后的源代碼輸出到控制臺(tái)窗口,然后使用重定向,輸出到文件:jad -p example.class > myexample.java
[4] 把源代碼文件輸出到指定的目錄:jad -dnewdir -sjava example.class,在newdir目錄下生成example.java
[5] 把packages目錄下的class文件全部反編譯:jad -sjava packages/*.class
[6] 把packages目錄以及子目錄下的文件全部反編譯:jad -sjava packages/**/*.class,不過(guò)你仍然會(huì)發(fā)現(xiàn)所有的源代碼文件被放到了同一個(gè)文件中,沒(méi)有按照class文件的包路徑建立起路徑
[7] 把packages目錄以及子目錄下的文件全部反編譯并建立和java包一致的文件夾路徑,可以使用-r命令:jad -r -sjava packages/**/*.class
[8] 當(dāng)重復(fù)使用命令反編譯時(shí),Jad會(huì)提示“whether you want to overwrite it or not”,使用-o可以強(qiáng)制覆蓋舊文件
[9] 還有其他的參數(shù)可以設(shè)置生成的源代碼的格式,可以輸入jad命令查看幫助,這里有個(gè)人做了簡(jiǎn)單的翻譯:jad命令總結(jié)
[10] 當(dāng)然,你會(huì)發(fā)現(xiàn)有些源文件頭部有些注釋信息,不用找了,jad沒(méi)有參數(shù)可以去掉它,用別的辦法吧。
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版