- 軟件大?。?span>1.29M
- 軟件語(yǔ)言:中文
- 軟件類型:國(guó)產(chǎn)軟件
- 軟件類別:免費(fèi)軟件 / 編程工具
- 更新時(shí)間:2021-04-13 13:56
- 運(yùn)行環(huán)境:WinAll, WinXP
- 軟件等級(jí):
- 軟件廠商:
- 官方網(wǎng)站:http://java-decompiler.github.io/
53.09M/中文/2.0
841KB/中文/0.0
595KB/中文/10.0
29.12M/中文/0.0
580KB/中文/10.0
jd gui全稱為java decompiler,就是一個(gè)java語(yǔ)言的反編譯軟件,適合于java編程人員使用,它可以對(duì)完整的jar文件進(jìn)行反編譯,還可以直接修改相關(guān)的代碼,以及一些其他的功能。大家使用前注意看下方的使用幫助哦!教你如何解決打不開(kāi)的問(wèn)題。
第一次運(yùn)行的時(shí)候可能提示“this application requires a Java Runtime Environment 1.8.0”(如下圖所示),后面的版本號(hào)可能會(huì)是1.5.0-1.8.0.
這個(gè)大概的意思就是缺失java1.8.0的支持,只要安裝一個(gè)就可以了,點(diǎn)擊“確定”會(huì)自動(dòng)跳轉(zhuǎn)到官網(wǎng)進(jìn)行安裝;或者點(diǎn)擊下面的鏈接進(jìn)行安裝。
大家都知道,將源代碼轉(zhuǎn)換成二進(jìn)制執(zhí)行代碼的過(guò)程叫“編譯”,比如將C源代碼編譯成exe可執(zhí)行文件;那么把二進(jìn)制執(zhí)行代碼的過(guò)程就叫“反編譯”,比如把exe轉(zhuǎn)換為C源代碼就叫“反編譯”。
由于主流的C的編譯器都進(jìn)行了代碼的優(yōu)化,因此把C編譯生成的exe文件反編譯成C代碼非常困難。但是像Java、.net這樣基于虛擬機(jī)技術(shù)的編程語(yǔ)言則反編譯非常容易,Java平臺(tái)下有Jad、Jode、JD等反編譯器,.net平臺(tái)下則有Reflector等反編譯器,反編譯質(zhì)量非常高,甚至和源代碼幾乎沒(méi)什么差別。
反編譯得到的是源代碼嗎?
反編譯得到的代碼是非常接近于源代碼,但是或多或少與源代碼有一些差異的,比如一些表達(dá)式被優(yōu)化掉了,比如:
下面的源代碼:
int i=1+1;
學(xué)過(guò)《編譯原理》的同學(xué)知道有“常量?jī)?yōu)化”這個(gè)編譯優(yōu)化算法,因此上邊的源代碼一般會(huì)被優(yōu)化為:int i=2;
由于在編譯過(guò)程中已經(jīng)進(jìn)行了優(yōu)化,把“1+1”這個(gè)原始的信息丟掉了,因此反編譯出來(lái)的代碼只能是:
int i=2;
可以看到反編譯得到的代碼和源代碼是有區(qū)別的。
比如:andriod中
download = (Button)findViewById(R.id.xiaz);
被優(yōu)化成了download = (Button)findViewById(0x7f070018);
一、支持眾多java編譯器的反編譯;
二、支持對(duì)整個(gè)Jar文件進(jìn)行反編譯,并本源代碼可直接點(diǎn)擊進(jìn)行相關(guān)代碼的跳轉(zhuǎn);
解壓縮后打開(kāi)軟件,直接將jar包拖進(jìn)去就可以進(jìn)行編譯了。
android反編譯說(shuō)明:
android的apk反編譯工具,適合大家一起學(xué),可以把a(bǔ)ndroid生成的apk轉(zhuǎn)為java代碼,希望對(duì)大家有用。
一、更改apk文件的后綴名,如:LianyunHelper3.0.11.apk改成LianyunHelper3.0.11.zip
二、用zip解壓縮LianyunHelper3.0.11.zip文件
三、從解壓縮的文件夾中取出classes.dex文件并放到dex2jar.bat所在目錄
四、運(yùn)行cmd命令,進(jìn)入dex2jar.bat所在的目錄,輸入dex2jar.bat classes.dex即可生成classes.dex.dex2jar.jar文件
五、用jd-gui工具打開(kāi)classes.dex.dex2jar.jar文件,即可看到源碼
六、將AndroidManifest.xml文件放到AXMLPrinter2.jar所在目錄,運(yùn)行cmd命令,進(jìn)入 AXMLPrinter2.jar所在目錄,輸入java -jar AXMLPrinter2.jar AndroidManifest.xml > AndroidManifest.txt。
JD-Core和JD-GUI區(qū)別:
JD-Core是一個(gè)免費(fèi)的庫(kù),從一個(gè)或多個(gè)“.class”文件中 重構(gòu)Java源代碼。JD-Core可以用來(lái)恢復(fù)丟失的源代碼,并深究Java運(yùn)行時(shí)類庫(kù)。支持Java 5的功能:如注釋,泛型或枚舉 。
JD-GUI 和 JD-eclipse都包括JD-Core。JD-GUI是一個(gè)獨(dú)立的顯示“.class” 文件Java源代碼的圖形用戶界面工具。您可以使用JD-GUI瀏覽和重建源代碼的即時(shí)訪問(wèn)方法和字段,以代碼高度方式來(lái)顯示反編譯過(guò)來(lái)的代碼。
v1.6.0更新內(nèi)容:
1.修正了“.class”表達(dá)式的識(shí)別錯(cuò)誤。
2.修正錯(cuò)誤識(shí)別“開(kāi)關(guān)枚舉”指令。
3.用已知的數(shù)字常量(例如Long.MAX_VALUE)替換數(shù)值。
4.刪除了不必要的“java.lang”前綴。
5.修正了在最后位置上包含三元運(yùn)算符的try-cacht語(yǔ)句的識(shí)別錯(cuò)誤。
6.添加了返回的通用變量的轉(zhuǎn)換說(shuō)明。
7.隱藏匿名類的合成字段。
請(qǐng)描述您所遇到的錯(cuò)誤,我們將盡快予以修正,謝謝!
*必填項(xiàng),請(qǐng)輸入內(nèi)容