卓安特保|山東卓安|聯(lián)網(wǎng)報(bào)警|濟(jì)南監(jiān)控安裝|15562629707|13361029977|李田軍
本文轉(zhuǎn)載自:https://www.runoob.com/w3cnote/android-tutorial-decompile-apk-get-code-resources.html
本節(jié)引言
"反編譯Apk",看上去好像好像很高端的樣子,其實(shí)不然,就是通過(guò)某些反編譯軟件,對(duì)我們的APK進(jìn)行反編譯,從而獲取程序的源代碼,圖片,XML資源等文件;不知道你有沒(méi)有這樣做過(guò),看到一個(gè)別人的一個(gè)APP界面做得很精美,或者你看上別人的圖片素材,簡(jiǎn)單點(diǎn)的,我們可以下載別人的APK,然后改下后綴名,改成xxx.zip,然后解壓: 筆者隨便解壓了一個(gè)APK:

我們可以打開(kāi)res目錄,獲取里面的圖片素材

但是,這種方法,獲得的只會(huì)是一些.png,或者.jpg這樣的位圖文件資源,如果是xml類的資源,打開(kāi)我們會(huì)發(fā)現(xiàn)是亂碼,并且假如我們想看APK程序的Java代碼,也是行不通的,因?yàn)樗麄兌即虮淮虬絚lasses.dex文件中! 但是反編譯可以解決你的需要~另外,切勿拿反編譯來(lái)做違法的事,比如把人家的APK重新打包后使用自己的簽名然后發(fā)布到相關(guān)市場(chǎng)...另外,我們是參考別人的代碼,而不是完全拷貝!。∏杏洠。
1.要準(zhǔn)備的三個(gè)工具
- apktool:獲取資源文件,提取圖片文件,布局文件,還有一些XML的資源文件
- dex2jar:將APK反編譯成Java源碼(將classes.dex轉(zhuǎn)化為jar文件)
- jd-gui:查看2中轉(zhuǎn)換后的jar文件,即查看Java文件 為了方便各位讀者,這里將三個(gè)打包到一起放到云盤(pán)中,又需要的可以進(jìn)行下載: 反編譯相關(guān)的三個(gè)工具.zip
2.使用apktool反編譯APK獲得圖片與XML資源:
把下載好的apktool解壓后,我們可以看到下述文件(忽略那兩個(gè)csdn,一個(gè)是反編譯的apk,一個(gè)是反編譯后文件):
接下來(lái),雙擊cmd.exe,來(lái)到命令行,鍵入: apktool.bat d csdn.apk 即可,Enter回車:

然后就可以看到生成的csdn文件夾,里面就有我們想要資源


好的,就是XML資源到手了是吧!圖片素材也到手了!
3.使用dex2jar將classes.dex轉(zhuǎn)換成jar文件:
把下載好的dex2jar文件夾解壓,apk解壓后中的classes.dex復(fù)制到dex2jar.bat所在的目錄下:

打開(kāi)cmd,來(lái)到這個(gè)目錄下:鍵入:d2j-dex2jar.bat classes.dex

接著我們可以看到,生成了一個(gè)jar包:
好的,轉(zhuǎn)換完成!
4.使用jd-gui查看jar包中的Java代碼:
好的,打開(kāi)jd-gui的文件夾

打開(kāi)后,打開(kāi)我們3中轉(zhuǎn)換后的jar包,我們可以看見(jiàn)里面的代碼:
csdn的客戶端竟然不混淆代碼...可能是本著開(kāi)源的精神吧,給我們學(xué)習(xí)代碼吧!一般的話,apk發(fā)布都會(huì) 進(jìn)行混淆,然后進(jìn)行一些加密,或者使用第三方的加密平臺(tái),用的比較多的"愛(ài)加密",有興趣的也自行百度查看更加詳細(xì)的介紹!
本節(jié)小結(jié)
好的,關(guān)于APK的反編譯就介紹到這里,相信你已經(jīng)摩拳擦掌想要試試了,那就試試吧,最后提醒一句,別做壞事!尊重別人的勞動(dòng)成果!另外,關(guān)于第一大章環(huán)境搭建相關(guān)以及一些常用開(kāi)發(fā)技巧就到這里,下一節(jié)開(kāi)始我們就來(lái)進(jìn)行本系列教程的第二章——Android中的常用UI控件的學(xué)習(xí)了!因相關(guān)的基本控件較多,估計(jì)有幾十個(gè),如果一直學(xué)控件可能沒(méi)什么意思,可能并行寫(xiě)教程,每天學(xué)一個(gè)控件 + 一點(diǎn)其他的知識(shí)點(diǎn)這樣,筆者要構(gòu)思構(gòu)思,敬請(qǐng)期待~謝謝~