如何使用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文件夾目錄下:
cmd窗口
接下來你把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之類的。
以上就是個人反編譯apk的過程了,如有錯誤之處,請指證(留言或加Q
252624617),謝謝。

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