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
相關文章
- Android Apk反編譯系列教程(一)如何反編譯APKAndroidAPK編譯
- Android Apk 檔案反編譯和重新打包的過程分析AndroidAPK編譯
- android 反編譯APK取原始碼。Android編譯APK原始碼
- Android Apk反編譯系列教程(二)APK重打包AndroidAPK編譯
- Android APK反編譯技巧全講解AndroidAPK編譯
- Android開發:APK的反編譯(獲取程式碼和資原始檔)AndroidAPK編譯
- mac上Apk反編譯工具合集整理與資源MacAPK編譯
- Gluon 編譯 JavaFx -> android apk編譯JavaAndroidAPK
- Android Apk反編譯系列教程(三)Android Studio除錯smali程式碼AndroidAPK編譯除錯
- 反編譯Android APK詳細操作指南[ApkTool,dex2jar,JD-GUI](Mac)編譯AndroidAPKJARGUIMac
- 反編譯之安裝Apktool編譯APK
- 使用AndroidKiller進行APK反編譯AndroidAPK編譯
- android 反編譯Android編譯
- java加密保護jar包及class檔案,防止反編譯Java加密JAR編譯
- Android 反編譯指南Android編譯
- MAC使用APKTool反編譯apk修改版本號後重新打包MacAPK編譯
- ecplise配置jad反編譯.class檔案編譯
- linux源瑪包編譯安裝Linux編譯
- 【Android APK】解析SD卡上的APK檔案AndroidAPKSD卡
- Android 7.0/8.0 安裝APK時解析包錯誤問題AndroidAPK
- appium 安裝 apk 包問題APPAPK
- Android-ffmpeg編譯so檔案Android編譯
- MacOS X APK 最新版本 反編譯MacAPK編譯
- Android studio匯出apk檔案AndroidAPK
- windows下編譯安裝thriftWindows編譯
- CentOS 下編譯安裝 NginxCentOS編譯Nginx
- CentOS 下編譯安裝 apacheCentOS編譯Apache
- Android反編譯 檔名或擴充名太長Android編譯
- Mac 編譯安裝 PHPRedis 模組Mac編譯PHPRedis
- Greenplum_原始碼編譯安裝和RPM包安裝原始碼編譯
- CMD控制檯命令安裝apk包APK
- 【MySQL安裝】Linux下安裝MySQL(預編譯)MySqlLinux編譯
- 爬蟲app資訊抓取之apk反編譯抓取爬蟲APPAPK編譯
- 使用ilasm 和 ildasm編譯和反編譯工具對DLL檔案修改ASMLDA編譯
- Windows下CMake編譯安裝OpenCVWindows編譯OpenCV
- 使用CMake命令編譯Android平臺下的包編譯Android
- 使用Reflector和Filedisassembler逆向編譯反編譯.cs.dll檔案程式碼編譯
- Android反編譯工具Apktool淺析Android編譯APK
- apkTool---一個簡單好用的apk反編譯工具APK編譯