天天看點

如何使用apktool反編譯APK

一直以來打包apk都是使用第三方的加強工具,最近比較閑,想折騰一下怎麼混淆apk,在這之前需要對apk怎麼反編譯有一定的了解,這篇文章就是介紹關于如何反編譯apk。筆者文采能力有限,如有錯誤請見諒。反編譯有以下兩方面的内容: 

第一:利用apktool檢視apk的xml檔案、AndroidManifest.xml和圖檔等。 

第二:如何檢視java(dex)源碼,如果混淆了,看到的源碼就是a、b之類的。 

首先我們先來看第一條,其實apktool官網就有介紹了(官網連結:https://ibotpeaches.github.io/Apktool/install/), 

這裡我隻講解window平台下的(沒空去折騰那麼多哈),如下如: 

首先我在本地F盤的Android檔案夾下建立了個apktool檔案夾(下面有用到)。 

第一步,就是要讓我們下載下傳apktool.bat,把滑鼠移至wrapper script上,然後右擊,連結另存為…,把下載下傳來的檔案放到F:\Android\apktools,記得名字要改成apktool.bat; 

第二步,下載下傳apktool.jar檔案,點選find newest here,跳到下載下傳頁,我們能盡量下載下傳最新版本,舊版本可能不能用(目前百度出來的反編譯博文很多都提供apktool.jar下載下傳,但是由于版本太舊,無法反編譯),我這裡下載下傳最新版本apktool_2.3.1.jar,也把該檔案剛到apktool檔案夾下。 

第三步:把你下載下傳來的jar檔案(筆者下載下傳的最新版本apktool_2.3.1.jar)重新命名為:apktool.jar。 

第四步:官網建議你把apktool.bat、apktool.jar放到C槽的Windows下,但是我沒有,我是放在F盤的apktool檔案夾下,為什麼不能按着官網的步驟來呢,請看第5步。 

第五步:按官網的意思是如果你沒把apktool.bat、apktool.jar放到C槽的Windows下,就需要我們自行配置環境變量,因為如此,是以我需要自己配置環境變量,我是win10系統,如下圖: 

經過上面5步,我們環境就搭建好了,下面就是如何使用了,win+R,輸入cmd調出指令行視窗,切換到apktool檔案夾目錄下: 

接下來你把apk拷貝到F:\Android\apktools下面,我這裡是app-release.apk,如圖: 

然後你在cmd視窗輸入指令,如圖: 

按回車,如下圖: 

這樣就表示成功了,我們就可以在F:\Android\apktools發現一個新的檔案夾app-release(這個檔案夾的文字跟你的apk名字一樣),裡面我們就可以看到xml檔案、AndroidManifest.xml和圖檔等資源檔案了。

現在我們來說說如何檢視dex裡面的java代碼,經過上面的步驟,我們可以在檔案夾app-release中發現一個檔案夾smali,這裡面其實就java代碼,隻不過不是jar形式的,關于如何檢視java源碼,其實很簡單的,如下: 

第一步:把你的apk字尾名改為zip,然後解壓後,就會發現有個classes.dex,這裡面就是java源碼了。 

第二步:我們需要吧dex檔案轉為jar格式的檔案,用到了一個工具叫dex2jar(下載下傳連結),我們把它下載下傳來後解壓(下載下傳來後是zip檔案)。 

第三步:我解壓後是放在F:\Android\apktools\dex2jar-2.0目錄下,現在把dex檔案拷貝到該目錄下。 

第四步:cmd視窗進入F:\Android\apktools\dex2jar-2.0,然後輸入指令:d2j-dex2jar.bat classes.dex回車,如下圖: 

完成後我們在F:\Android\apktools\dex2jar-2.0目錄下就會多了個classes-dex2jar.jar檔案,這個就是我們需要的jar檔案,接下來就是如何檢視java代碼了,這裡筆者借用一個工具jd-gui(下載下傳連結),下載下傳完解壓(這裡選擇window平台),然後用它打開classes-dex2jar.jar就可以了,如果你的apk經過混淆,那麼看到的都是a、b之類的。 

原文:https://blog.csdn.net/sonnyjack/article/details/79273023 

繼續閱讀