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