Mac 環境下反編譯 android apk 的實現
前段時間公司的一個運維想搞事情,問我會不會反編譯apk獲取原始碼?作為一名開發人員,不能直接說不行,於是乎我就答應了,現在則記錄下這次反編譯步驟。
apktool操作流程
- 首先apk的反編譯無非也是怎麼使用三個工具而已: apktool 、 dex2jar 、 jd-jui
- apktool:一款用於反編譯apk資原始檔 ofollow,noindex">https://ibotpeaches.github.io/Apktool/install/
- dex2jar:是用於將class.dex 轉換成classes-dex2jar.jar的工具
https://sourceforge.net/projects/dex2jar/files/ - jd-gui:這個用於檢視classes-dex2jar.jar 原始碼工具 http://jd.benow.ca
- 開啟apktool 官網連結,按照自己系統選擇下載相應的 apktool,也有很詳細的步驟,這裡我選擇了mac 系統的
apktool.png
- 把指令碼另存為 apktool 不用帶字尾
- 下載apktool-2 並且重新命名為 apktool.jar
- 將 apktool.jar 和apktool 移動到 /usr/local/bin 目錄(該步驟需要許可權)
- 將剛剛移動的兩個檔案新增許可權 chmod +x
- 以上步驟都完成,則可以使用 apktool 命令了
開啟終端:輸入 sudo -s 獲取許可權
輸入 mv apktool apktool.jar /usr/local/bin 將檔案移動到 bin 目錄(如果沒有此目錄就建立一個, sudo mkdir bin (建立bin目錄),然後輸入許可權密碼)
再輸入 chmod +x apktool 和 chmod +x apktool.jar 兩個檔案的可執行許可權
最後輸入 apktool 回車輸出一下內容,則證明成功

apktool
接下來則是可以執行反編譯的操作了,找到你想要反編譯的apk,在終端執行 apktool -d apk的路徑 ,則會在 bin 目錄生成一個跟app名稱一致的資料夾,展開的內容如下,假如只需要獲取app的xml或者圖片資源,則到這一步則完成啦!

image.png
如果要獲取到java的程式碼,那麼我們還要進行回編譯,這樣,我們就能獲取到classex.dex檔案了
在終端執行命令 apktool b app反編譯的資料夾名稱 ,執行完畢後,我們就可以在剛剛的資料夾裡面多了一個 build 檔案夾了,裡面的 classess.dex 則是我們想要獲取到的原始碼檔案

apktool回編譯

回編譯的classes.dex
dex2jar操作流程
開啟 dex2jar下載

dex2jar
下載完成解壓檔案後,再終端執行 chmod +x d2j-dex2jar.sh 和 chmod +x d2j_invoke.sh 新增執行許可權
然後執行 d2j-dex2jar.sh classess.dex路徑 回車則生成 classes-dex2jar.jar 檔案

image.png
jd-gui操作流程
選擇一個合適你的作業系統,在這裡我選擇mac系統的

jd-gui
下載完成,我們開啟jd-gui,然後把剛剛我們獲取到的classes-dex2jar.jar拖進去開啟檔案即可。

獲取到的原始碼
大功告成,看到這裡,都動手操作一邊吧,中途會碰到很多坑,這樣才記憶才深刻。比較我是一次用mac系統,這點比較尷尬啦,對mac系統不熟悉。
最後,大家是不是看到這裡都不禁一嘆,辛苦寫的原始碼就這麼暴露出來嗎?所以大家在寫程式時,一定要混淆加固,這樣就算反編譯出來,也是一些aabbcc字母,雖然說不能完全保護,但是能攔截掉一大批像我這麼簡單的反編譯操作。哈哈哈哈哈哈