win/mac下反編譯Android安裝包-APK檔案
mac下,對apk進行反編譯主要是用到apktool和dex2jar兩個工具(自行下載),如果只是想拿到apk裡的一些圖片或其他資源或是layout檔案,直接使用apktool -d xxx.apk即可。如果是要檢視程式碼,就使用dex2jar.sh反編譯一下apk,然後使用jd-gui工具檢視反編譯後的.jar檔案即可。今天還將介紹一款新的反編譯神器:Jadx。
一,apktool的使用
用到的命令: java -jar apktool_2.0.2.jar d androidxxx.apk 其中:androidxxx.apk 要進行反編譯的apk包。
1,命令列進入apk檔案所在的目錄:
cd /Users/....
2,執行命令:
apktool d android.apk
二,反編譯java原始檔
1,獲取classes.dex檔案。
這就用到dex2jar和jd-gui了,將androidxx.apk重新命名改成androidxx.zip,然後利用解壓縮軟體解壓,得到一個androidxx的目錄,我們要拿到裡面的classes.dex檔案。
2,將classes.dex檔案複製到dex2jar-0.0.9.15目錄下
cd /Users/duqian/Downloads/android反編譯/dex2jar-0.0.9.15
3,執行命令:
sh dex2jar.sh classes.dex
4,用jd-gui工具開啟這個jar包就可以看到java原始碼了。
三,反編譯新工具jadx
在jadx出現之前,一般是使用apktool和dex2jar這兩個反編譯工具。
1,下載原始碼或者release包。
skylot/jadx:https://github.com/skylot/jadx/releases
2,使用jadx
jadx也有GUI,直接雙擊bin目錄下的jadx-gui,然後選擇要反編譯的apk即可。如果要儲存原始碼,選擇File->Save ALL即可儲存檔案,然後就可以匯入Android Studio等IDE中。
3,使用命令列反編譯apk檔案
a,把apk改成zip
b,解壓zip獲取class.dex檔案
c,將class.dex檔案放到jadx目錄下
進入該目錄,執行終端命令:
cd path/to/jadx/bin/
jadx -d out classes.dex #直接輸出.java檔案到out目錄
jadx-gui classes.dex #使用gui開啟
如果執行命令沒有效果,提示commond not found,或者雙擊開啟jadx,說程式來源不明,配置環境變數即可使用,如下:
open .bash_profile
//此時編輯.bash_profile檔案,加入你的jadx path:
PATH=${PATH}:/Users/duqian/Downloads/android反編譯/jadx-0.6.0/bin
儲存修改即可:
source .bash_profile
然後會提示你選擇要反編譯的apk,dex檔案:
cd /Users/duqian/Downloads/android反編譯/jadx-0.6.0/bin
DuQian-MBP:bin duqian$ jadx-gui
在反編譯較大的apk時,如果遇到jadx-jui卡頓和假死的情況,可適當優化jvm相關引數,在~/.bash_profile中加上了如下語句:
export JVM_ARGS="-Xmx4096m -XX:MaxPermSize=1024m"
四,總結
apktool+dex2jar+jd-gui一直是一個比較流行的Android反編譯方式,jadx相比上面的組合具有如下兩個優點:
jadx可以反編譯出.java檔案
原始碼直接顯示資源名稱,而jd-gui裡顯示的是資源ID。
杜乾,Dusan,Q:291902259
微博:http://weibo.com/u/2876301234
微信公眾號:OpenDeveloper
分享不僅限於Android,Web 開發,做開放的完美的開發者。
部落格:http://blog.csdn.net/dzsw0117
相關文章
- 安卓apk檔案反編譯安卓APK編譯
- Android Apk反編譯系列教程(一)如何反編譯APKAndroidAPK編譯
- 在Windows下用ant編譯Android應用生成apk安裝包Windows編譯AndroidAPK
- apk 包的破解與反編譯APK編譯
- Android 安全之如何反編譯與加密apk包Android編譯加密APK
- Android安全之如何反編譯與加密apk包Android編譯加密APK
- 常見 APK 反編譯工具安裝與使用APK編譯
- Android Apk 檔案反編譯和重新打包的過程分析AndroidAPK編譯
- 關於Android APK反編譯AndroidAPK編譯
- 反編譯apk編譯APK
- [轉]andriod的apk檔案相關的編譯反編譯工具APK編譯
- Mac平臺反編譯Unity編譯的安卓apkMac編譯Unity安卓APK
- Android Apk反編譯系列教程(二)APK重打包AndroidAPK編譯
- Android APK反編譯技巧全講解AndroidAPK編譯
- Android Apk反編譯得到Java原始碼AndroidAPK編譯Java原始碼
- 通過Ant將Android project編譯打包成APK檔案並安裝到手機AndroidProject編譯APK
- 反編譯APK資原始檔與原始碼編譯APK原始碼
- mac上Apk反編譯工具合集整理與資源MacAPK編譯
- MAC上反編譯android apk---apktool, dex2jar, jd-jui安裝使用(含手動簽名)Mac編譯AndroidAPKJARUI
- Android開發:APK的反編譯(獲取程式碼和資原始檔)AndroidAPK編譯
- 如何給你的Android 安裝檔案(APK)瘦身AndroidAPK
- Android程式碼實現APK檔案的安裝與解除安裝AndroidAPK
- 反編譯之安裝Apktool編譯APK
- java加密保護jar包及class檔案,防止反編譯Java加密JAR編譯
- 使用AndroidKiller進行APK反編譯AndroidAPK編譯
- APK反編譯後程式碼分析(一)APK編譯
- Android反編譯:反編譯工具和方法Android編譯
- 反編譯Android APK詳細操作指南[ApkTool,dex2jar,JD-GUI](Mac)編譯AndroidAPKJARGUIMac
- mac下編譯安裝php redis擴充套件Mac編譯PHPRedis套件
- Android 自動編譯、打包生成apk檔案 3 - 使用SDK Ant方式Android編譯APK
- Android APK反編譯就這麼簡單 詳解(附圖)AndroidAPK編譯
- apkTool反編譯apk碰到的問題APK編譯
- Mac 編譯安裝 PHPRedis 模組Mac編譯PHPRedis
- MAC使用APKTool反編譯apk修改版本號後重新打包MacAPK編譯
- Android Apk反編譯系列教程(三)Android Studio除錯smali程式碼AndroidAPK編譯除錯
- 爬蟲app資訊抓取之apk反編譯抓取爬蟲APPAPK編譯
- MacOS X APK 最新版本 反編譯MacAPK編譯
- 反編譯Apk後 找到對應的佈局編譯APK