前段時間反編譯了一次,沒想到,最近又有着需求,所以整理一下:
一、工具(百度一下都有:點擊下載啦,良心價)
apktool (資源文件獲取)
資源文件獲取,可以提取出圖片文件和佈局文件進行使用查看
dex2jar(源碼文件獲取)
將apk反編譯成java源碼(classes.dex轉化成jar文件)
jd-gui (源碼查看)
查看APK中classes.dex轉化成出的jar文件,即源碼文件
二、開始反編譯(PS:Windows系統)
爲了方便進行反編譯,我們將上述下載好的3個工具統一放到一個文件夾中
1. 使用apktool反編譯apk得到圖片、XML配置、語言資源等文件
首先打開命令窗口(windows+R),然後進入到三個工具所在的目錄,然後就是運行
apktool.jar這個jar文件進行反編譯:
整理了三種方法,原理一樣(親測有效)
apktool.jar d -f <apkPath> -o <output_dir>
apktool d <apkPath> -o <output_dir>
apktool.bat d -o <output_dir> name.apk
結果:現在清單文件和佈局文件就出來了
2. 使用dex2jar反編譯apk得到Java源代碼
將需要反編譯的apk的後綴名改爲.zip或者.rar,然後解壓到一個文件夾,得到其中的classes.dex文件。
將classes.dex複製到解壓後的dex2jar-2.0文件夾下。從命令行進入到該目錄,執行
d2j-dex2jar.bat classes.dex
會生成由classes.dex反編譯得到的jar文件,classes-dex2jar.jar
然後使用jd-gui打開classes-dex2jar.jar,就可以查看源碼了。
當然,這是class沒有混淆的情況下可以查看的,混淆後的class反編譯後類文件名稱以及裏面的方法名稱都會以a,b,c….之類的樣式命名,不利於參考學習。