1. 程式人生 > >【Android】Android如何對APK反編譯

【Android】Android如何對APK反編譯

輸入 details href 樣式 class 圖片 logs apk反編譯 com

本文筆者粗略的介紹如何利用一些工具,對Android進行反編譯,從而得到源碼,希望對你有所幫助,筆者的android環境為4.4.2。

1.準備資源.

在開始之前,需要準備三項工具:
apktool
作用:資源文件獲取,可以提取出圖片文件和布局文件進行使用查看

dex2jar
作用:將apk反編譯成java源碼(classes.dex轉化成jar文件)

jd-gui
作用:查看APK中classes.dex轉化成出的jar文件,即源碼文件

2.獲取資源文件

使用apktool這個工具獲取資源文件,下載apktool 會獲得三個文件:aapt.exe、apktool.bat、apktool.jar 、

接下來將需要反編譯的APK文件放到該目錄下,
打開命令行界面(運行-CMD) ,定位到apktool文件夾,輸入以下命令: apktool.bat d -f test.apk test

技術分享圖片

(命令中test.apk指的是要反編譯的APK文件全名,test為反編譯後資源文件存放的目錄名稱,即為:apktool.bat d -f [apk文件 ] [輸出文件夾])

技術分享圖片

說明獲取成功,之後發現在文件夾下多了個test文件,點擊便可以查看該應用的所有資源文件了。

打開資源文件後,可以看到裏面有res和smali文件夾,res文件夾中放的是圖片和XML等一些文件資源,smali裏面放的是代碼,文件都是.smali格式的,不方便閱讀。


如果你想將反編譯完的文件重新打包成apk,那你可以:輸入 apktool.bat b test(你編譯出來文件夾) 便可,效果如下:
技術分享圖片
之後在之前的test文件下便可以發現多了2個文件夾:

dist(裏面存放著打包出來的APK文件)

3.獲取Java源碼文件

第二步獲得的smali文件不方便閱讀,接下來獲取源碼。

下載好dex2jar和jd-gui後 ,解壓

將要反編譯的APK後綴名改為.rar或則 .zip,並解壓,得到其中的額classes.dex文件(它就是java文件編譯再通過dx工具打包而成的),

將獲取到的classes.dex放到之前解壓出來的工具dex2jar-0.0.9.15 文件夾內,

技術分享圖片


在命令行下定位到dex2jar.bat所在目錄,輸入 dex2jar.bat classes.dex ,效果如下:
技術分享圖片

被混淆過的效果圖(類文件名稱以及裏面的方法名稱都會以a,b,c....之類的樣式命名):

技術分享圖片

這種方式可以反編譯,但是經過筆者的測試,發現反編譯後的源碼文件,或多或少都有一些錯誤。

原文鏈接:Android APK反編譯

【Android】Android如何對APK反編譯