APK反編譯apktool+dex2jar+jd-gui
一、工具 1.1、使用工具 apktool (資原始檔獲取) 作用:資原始檔獲取,可以提取出圖片檔案和佈局檔案進行使用檢視 dex2jar(原始碼檔案獲取)作用:將apk反編譯成java原始碼(classes.dex轉化成jar檔案) jd-gui (原始碼檢視) 作用:檢視APK中classes.dex轉化成出的jar檔案,即原始碼檔案
二、Apk反編譯流程 將【dex2jar-2.0.zip】和【jd-gui-windows-1.3.0.zip】分別解壓到當前資料夾,如下圖所示: 2.1、使用apktool反編譯apk得到圖片、XML配置、語言資源等檔案 進入CMD命令列,切換到上述的3個工具的所在目錄,如:D:\soft\apk, 接下來我們要做的就是執行apktool_2.0.1.jar這個jar檔案來將apk檔案進行反編譯,在java中,執行可執行jar包的命令是: java -jar jar包名.jar
java -jar apktool_2.3.4.jar d -f D:\apkde\Ky.apk -o Ky
java -jar apktool_2.3.4.jar d -f D:\apkde\Lh.apk -o Lh
反編譯成功後,會在當前目錄( D:\soft\apk)下生成一個Ky資料夾,開啟Ky裡面就有反編譯後生成的檔案,如下圖所示: 生成的檔案和資料夾當中,我們關心的是【res】資料夾中和AndroidManifest.xml檔案。
2.2、使用dex2jar反編譯apk得到Java原始碼 將要反編譯的APK字尾名改為.rar或者 .zip,並解壓,得到其中的classes.dex檔案(它就是java檔案編譯再通過dx工具打包而成的),如下圖所示:
把生成的classes-dex2jar.jar 拷入解壓目錄
2.3、使用【jd-gui】工具將class檔案反編譯成java原始碼 反編譯classes.dex得到classes-dex2jar.jar檔案之後,就可以使用【jd-gui】工具將class檔案反編譯成java原始碼了
JD-GUI雖然可以將class反編譯成java原始碼,但是對於一些被混淆過的class,反編譯的效果就不是那麼理想了,被混淆過的class反編譯後的效果圖(類檔名稱以及裡面的方法名稱都會以a,b,c…之類的樣式命名):