JD-GUI全稱為JAVA Decompiler,Java是一種解釋性語言,是一款非常專業(yè)的java語言的反編譯軟件,JD-GUI支持Windows、Linux和蘋果Mac Os三個平臺,可以快速的對java文件進(jìn)行反編譯,適合于java編程人員使用,它可以對完整的jar文件進(jìn)行反編譯,還可以直接修改相關(guān)的代碼,以及一些其他的功能。大家使用前注意看下方的使用幫助哦!教你如何解決打不開的問題。
jd-gui使用幫助
第一次運(yùn)行的時候可能提示“this application requires a Java Runtime Environment 1.8.0”(如下圖所示),后面的版本號可能會是1.5.0-1.8.0.
這個大概的意思就是缺失java1.8.0的支持,只要安裝一個就可以了,點(diǎn)擊“確定”會自動跳轉(zhuǎn)到官網(wǎng)進(jìn)行安裝;或者點(diǎn)擊下面的鏈接進(jìn)行安裝。
-
jdk1.8(Java SE Development Kit 8) 64位/32位 官方版
授權(quán):免費(fèi)軟件 WinAll, WinXP, Win7, Win8大?。?36.1M語言:中文
jdk1.8(32位/64位)是Java語言開發(fā)工具包應(yīng)用。是Java編程學(xué)習(xí)中重要的一部分!關(guān)于如何設(shè)置相關(guān)參數(shù),小編也提供了相應(yīng)的圖文步驟,快來綠色資源網(wǎng)下載吧。jdk1.864位/32位配置操作說明:jdk環(huán)境變量配置方法:在安
下載地址:http://allentownhummushouse.com/soft/50830.html
反編譯解釋
大家都知道,將源代碼轉(zhuǎn)換成二進(jìn)制執(zhí)行代碼的過程叫“編譯”,比如將C源代碼編譯成exe可執(zhí)行文件;那么把二進(jìn)制執(zhí)行代碼的過程就叫“反編譯”,比如把exe轉(zhuǎn)換為C源代碼就叫“反編譯”。
由于主流的C的編譯器都進(jìn)行了代碼的優(yōu)化,因此把C編譯生成的exe文件反編譯成C代碼非常困難。但是像Java、.net這樣基于虛擬機(jī)技術(shù)的編程語言則反編譯非常容易,Java平臺下有Jad、Jode、JD等反編譯器,.net平臺下則有Reflector等反編譯器,反編譯質(zhì)量非常高,甚至和源代碼幾乎沒什么差別。
反編譯得到的是源代碼嗎?
反編譯得到的代碼是非常接近于源代碼,但是或多或少與源代碼有一些差異的,比如一些表達(dá)式被優(yōu)化掉了,比如:
下面的源代碼:
int i=1+1;
學(xué)過《編譯原理》的同學(xué)知道有“常量優(yōu)化”這個編譯優(yōu)化算法,因此上邊的源代碼一般會被優(yōu)化為:int i=2;
由于在編譯過程中已經(jīng)進(jìn)行了優(yōu)化,把“1+1”這個原始的信息丟掉了,因此反編譯出來的代碼只能是:
int i=2;
可以看到反編譯得到的代碼和源代碼是有區(qū)別的。
比如:andriod中
download = (Button)findViewById(R.id.xiaz);
被優(yōu)化成了download = (Button)findViewById(0x7f070018);
JD-GUI主要功能
一、支持眾多java編譯器的反編譯;
二、支持對整個Jar文件進(jìn)行反編譯,并本源代碼可直接點(diǎn)擊進(jìn)行相關(guān)代碼的跳轉(zhuǎn);
JD-GUI使用方法
解壓縮后打開軟件,直接將jar包拖進(jìn)去就可以進(jìn)行編譯了。
android反編譯說明
android的apk反編譯軟件,合適大伙兒一起學(xué),能把a(bǔ)ndroid產(chǎn)生的apk變?yōu)閖ava代碼,希望可以有用。
一、變更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.batclasses.dex就可以形成classes.dex.dex2jar.jar文件
五、用jd-gui工具打開classes.dex.dex2jar.jar文件,就可以見到源代碼
六、將AndroidManifest.xml文件放到AXMLPrinter2.jar所屬目錄,運(yùn)行cmd指令,進(jìn)到AXMLPrinter2.jar所屬目錄,鍵入java-jarAXMLPrinter2.jarAndroidManifest.xml>AndroidManifest.txt。