Android apk 反編譯

前段時間反編譯了一次,沒想到,最近又有着需求,所以整理一下:

一、工具(百度一下都有:點擊下載啦,良心價)

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….之類的樣式命名,不利於參考學習。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章