關于apk文件的反編譯翩肌,網上都有好多文章詳細講解蝇完,本文主要介紹自己在使用apkTool工窍、AXMLPrinter2以及dex2jar工具進行反編譯過程中魄鸦,遇到的問題以及解決的辦法密强。apk文件的反編譯茅郎,主要有以下幾種方法。
![](http://image.loloxiaoz.com/blog/apk%E5%8F%8D%E7%BC%96%E8%AF%912.jpeg)
一或渤、直接對apk文件進行解壓縮后系冗,打開XML,將會看到亂碼薪鹦。需要使用工具將XML文件進行反編譯掌敬。我在使用AXMLPrinter反編譯XML文件時,命令行提示 java.lang.ArrayIndexOutOfBoundsException錯誤池磁。網上找了好久奔害,沒有找到解決方案。有人說是由于 apk打包時地熄,manifest文件中的 minSdkVersion設置有關舀武,但還是不知道怎么處理。于是采用apktool直接反編譯apk离斩,這樣得到的XML文件能夠正常打開银舱。
二、使用apktool反編譯apk跛梗,彈出Error occured while disassembling class Lcon寻馏;-skipping class。如下圖所示核偿。![](http://image.loloxiaoz.com/blog/apk%E5%8F%8D%E7%BC%96%E8%AF%911.jpeg)
這個是由于下載的apktool版本是1.5.2诚欠。需要下載最新的apktool版本1.5.3。
三、使用最新的apktool1.5.3反編譯apk轰绵,彈出Exception in thread "main" java.lang.UnsopportedClassVersionError:brut/apktool/Main: unsupported major.minor version 51.0粉寞。如下圖這個是由于使用的JAVA版本的問題,應該使用大于或等于7.0版本的JDK左腔。下載最新的JDK并配置環(huán)境就行唧垦。
四、使用dex2Jar工具反編譯dex文件液样,報錯振亮。改用d2j_dex2Jar指令,成功鞭莽,并能夠使用JD-GUI打開看到源碼坊秸。直接解壓縮apk,得到存放源碼的dex文件,因此為了看到源碼還需要反編譯dex澎怒。 因此使用“dex2jar.bat class.dex”失敗褒搔。提示:
dex2jar classes.dex this cmd is deprecated,
use the d2j-dex2jar if possible dex2jar version: translator-0.0.9.9
dex2jar classes.dex -> classes_dex2jar.jar
Done.
于是使用 d2j-dex2jar.bat class.dex反編譯成功,能夠使用JD-GUI看到源碼喷面。