Android 反編譯APK,破解APK
一、準備必要工具
工欲善其事,必先利其器,首先我們要下載好反編譯apk時需要的相關工具
1.1、使用工具
- apktool (資原始檔獲取)
- dex2jar(原始碼檔案獲取)
- jd-gui (原始碼檢視)
1.2、工具介紹
apktool
作用:資原始檔獲取,可以提取出圖片檔案和佈局檔案進行使用檢視
dex2jar
作用:將apk反編譯成java原始碼(classes.dex轉化成jar檔案)
jd-gui
作用:檢視APK中classes.dex轉化成出的jar檔案,即原始碼檔案
1.3工具下載
apktool下載地址:https://bitbucket.org/iBotPeaches/apktool/downloads
下載好之後得到一個如下圖所示的jar檔案
dex2jar下載地址:http://sourceforge.net/projects/dex2jar/files/
下載完成之後,得到一個如下圖所示的壓縮包
jd-gui下載地址:
下載完成之後,得到一個如下圖所示的壓縮包:
到此,需要使用到的3個相關工具都下載好了,在這裡說明一下jd-gui的下載,我從官方網站上點選下載時會經常出現如下圖所示的問題
但是多試幾次又可以下載了,所以如果有遇到這個問題的朋友們不妨多試幾次,或者從別的地方下載jd-gui,jd-gui算是做Java開發的一個必備工具了,用它來將class反編譯成java原始碼是非常方便的,網上搜索一下一般都可以下載到,只不過版本不一定是最新的。
二、Apk反編譯流程
為了方便進行反編譯,我們將上述下載好的3個工具統一放到一個資料夾中,例如:
然後將【dex2jar-2.0.zip】和【jd-gui-windows-1.3.0.zip】分別解壓到當前資料夾,如下圖所示:
2.1、使用apktool反編譯apk得到圖片、XML配置、語言資源等檔案
進入CMD命令列,如下:
切換到上述的3個工具的所在目錄,如:E:\AndroidDevelopTool\Android反編譯工具包
接下來我們要做的就是執行apktool_2.0.1.jar這個jar檔案來將apk檔案進行反編譯,在java中,執行可執行jar包的命令是:
java -jar jar包名.jar
使用如下的命令執行apktool_2.0.1.jar反編譯MMTS-release-1.0.2.apk
java -jar apktool_2.0.1.jar d -f E:\AndroidDevelopTool\Android反編譯工具包\測試apk\MMTS-release-1.0.2.apk -o MMTS
這個命令是啟動apktool_2.0.1.jar將位於【E:\AndroidDevelopTool\Android反編譯工具包\測試apk\】目錄下的"MMTS-release-1.0.2.apk"這個apk反編譯,然後將反編譯生成的檔案存放到當前目錄(apktool_2.0.1.jar所在的目錄,也就是"E:\AndroidDevelopTool\Android反編譯工具包"目錄)下的一個【MMTS】資料夾中。這個資料夾的名字是可以隨便取的,喜歡叫啥都行。
執行反編譯操作:
反編譯成功後,會在當前目錄(E:\AndroidDevelopTool\Android反編譯工具包)下生成一個MMTS資料夾,開啟MMTS裡面就有反編譯後生成的檔案,如下圖所示:
開啟MMTS資料夾,就可以看到反編譯後的生成的檔案,如下圖所示:
生成的檔案和資料夾當中,我們關心的是【res】資料夾中和AndroidManifest.xml檔案,開啟res資料夾,裡面就有我們想要看到的東西了,如下圖所示:
想檢視哪個xml檔案就使用文字編輯器開啟看看吧,反正全部都可以看到了。以上就是使用apktool這個工具將一個apk反編譯得到圖片、XML配置、語言資源等檔案的過程。
2.2、使用dex2jar反編譯apk得到Java原始碼
將要反編譯的APK字尾名改為.rar或者 .zip,並解壓,得到其中的classes.dex檔案(它就是java檔案編譯再通過dx工具打包而成的),如下圖所示:
將獲取到的classes.dex放到之前解壓出來的工具【dex2jar-2.0】資料夾內,如下圖所示:
在命令列下定位到dex2jar.bat所在目錄,輸入"d2j-dex2jar classes.dex",效果如下:
命令執行完成之後,在當前目錄下就可以看到生成的Jar檔案了,如下圖所示:
反編譯classes.dex得到classes-dex2jar.jar檔案之後,就可以使用【jd-gui】工具將class檔案反編譯成java原始碼了
使用jd-gui開啟classes-dex2jar.jar就可以看到原始碼了,如下圖所示:
JD-GUI雖然可以將class反編譯成java原始碼,但是對於一些被混淆過的class,反編譯的效果就不是那麼理想了,被混淆過的class反編譯後的效果圖(類檔名稱以及裡面的方法名稱都會以a,b,c....之類的樣式命名):
以上步驟是我親自實踐過之後一步步整理出來的,對照著做應該不會有太大問題。
三、Apk反編譯註意問題
3.1、apktool版本太舊導致反編譯失敗的問題
之前用過了apktool這個工具的一些舊版本,發現總是反編譯不成功,在執行反編譯時會出現如下錯誤:
Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file
這個問題是因為apktool版本過低導致,而解決這個問題的辦法就是使用最新版本的apktool就可以了,最新版本的下載地址:https://bitbucket.org/iBotPeaches/apktool/downloads
3.2、apktool執行反編譯命令出現”Input file was not found or was not readable"的問題
這個問題是因為apktool升級到2.0以上時,使用方式已經替換,格式為:apktool d [-s] -f <apkPath> -o <folderPath>
好了,關於反編譯apk的內容就這麼多了。
最後,給大家分享我下載好的那三個相關工具,下載地址:https://pan.baidu.com/s/1CCmrn3SztzzplVwwL66v8w
一、準備必要工具
工欲善其事,必先利其器,首先我們要下載好反編譯apk時需要的相關工具
1.1、使用工具
- apktool (資原始檔獲取)
- dex2jar(原始碼檔案獲取)
- jd-gui (原始碼檢視)
1.2、工具介紹
apktool
作用:資原始檔獲取,可以提取出圖片檔案和佈局檔案進行使用檢視
dex2jar
作用:將apk反編譯成java原始碼(classes.dex轉化成jar檔案)
jd-gui
作用:檢視APK中classes.dex轉化成出的jar檔案,即原始碼檔案
1.3工具下載
apktool下載地址:https://bitbucket.org/iBotPeaches/apktool/downloads
下載好之後得到一個如下圖所示的jar檔案
dex2jar下載地址:http://sourceforge.net/projects/dex2jar/files/
下載完成之後,得到一個如下圖所示的壓縮包
jd-gui下載地址:http://jd.benow.ca/
下載完成之後,得到一個如下圖所示的壓縮包:
到此,需要使用到的3個相關工具都下載好了,在這裡說明一下jd-gui的下載,我從官方網站上點選下載時會經常出現如下圖所示的問題
但是多試幾次又可以下載了,所以如果有遇到這個問題的朋友們不妨多試幾次,或者從別的地方下載jd-gui,jd-gui算是做Java開發的一個必備工具了,用它來將class反編譯成java原始碼是非常方便的,網上搜索一下一般都可以下載到,只不過版本不一定是最新的。
二、Apk反編譯流程
為了方便進行反編譯,我們將上述下載好的3個工具統一放到一個資料夾中,例如:
然後將【dex2jar-2.0.zip】和【jd-gui-windows-1.3.0.zip】分別解壓到當前資料夾,如下圖所示:
2.1、使用apktool反編譯apk得到圖片、XML配置、語言資源等檔案
進入CMD命令列,如下:
切換到上述的3個工具的所在目錄,如:E:\AndroidDevelopTool\Android反編譯工具包
接下來我們要做的就是執行apktool_2.0.1.jar這個jar檔案來將apk檔案進行反編譯,在java中,執行可執行jar包的命令是:
java -jar jar包名.jar
使用如下的命令執行apktool_2.0.1.jar反編譯MMTS-release-1.0.2.apk
java -jar apktool_2.0.1.jar d -f E:\AndroidDevelopTool\Android反編譯工具包\測試apk\MMTS-release-1.0.2.apk -o MMTS
這個命令是啟動apktool_2.0.1.jar將位於【E:\AndroidDevelopTool\Android反編譯工具包\測試apk\】目錄下的"MMTS-release-1.0.2.apk"這個apk反編譯,然後將反編譯生成的檔案存放到當前目錄(apktool_2.0.1.jar所在的目錄,也就是"E:\AndroidDevelopTool\Android反編譯工具包"目錄)下的一個【MMTS】資料夾中。這個資料夾的名字是可以隨便取的,喜歡叫啥都行。
執行反編譯操作:
反編譯成功後,會在當前目錄(E:\AndroidDevelopTool\Android反編譯工具包)下生成一個MMTS資料夾,開啟MMTS裡面就有反編譯後生成的檔案,如下圖所示:
開啟MMTS資料夾,就可以看到反編譯後的生成的檔案,如下圖所示:
生成的檔案和資料夾當中,我們關心的是【res】資料夾中和AndroidManifest.xml檔案,開啟res資料夾,裡面就有我們想要看到的東西了,如下圖所示:
想檢視哪個xml檔案就使用文字編輯器開啟看看吧,反正全部都可以看到了。以上就是使用apktool這個工具將一個apk反編譯得到圖片、XML配置、語言資源等檔案的過程。
2.2、使用dex2jar反編譯apk得到Java原始碼
將要反編譯的APK字尾名改為.rar或者 .zip,並解壓,得到其中的classes.dex檔案(它就是java檔案編譯再通過dx工具打包而成的),如下圖所示:
將獲取到的classes.dex放到之前解壓出來的工具【dex2jar-2.0】資料夾內,如下圖所示:
在命令列下定位到dex2jar.bat所在目錄,輸入"d2j-dex2jar classes.dex",效果如下:
命令執行完成之後,在當前目錄下就可以看到生成的Jar檔案了,如下圖所示:
反編譯classes.dex得到classes-dex2jar.jar檔案之後,就可以使用【jd-gui】工具將class檔案反編譯成java原始碼了
使用jd-gui開啟classes-dex2jar.jar就可以看到原始碼了,如下圖所示:
JD-GUI雖然可以將class反編譯成java原始碼,但是對於一些被混淆過的class,反編譯的效果就不是那麼理想了,被混淆過的class反編譯後的效果圖(類檔名稱以及裡面的方法名稱都會以a,b,c....之類的樣式命名):
以上步驟是我親自實踐過之後一步步整理出來的,對照著做應該不會有太大問題。
三、Apk反編譯註意問題
3.1、apktool版本太舊導致反編譯失敗的問題
之前用過了apktool這個工具的一些舊版本,發現總是反編譯不成功,在執行反編譯時會出現如下錯誤:
Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file
這個問題是因為apktool版本過低導致,而解決這個問題的辦法就是使用最新版本的apktool就可以了,最新版本的下載地址:https://bitbucket.org/iBotPeaches/apktool/downloads
3.2、apktool執行反編譯命令出現”Input file was not found or was not readable"的問題
這個問題是因為apktool升級到2.0以上時,使用方式已經替換,格式為:apktool d [-s] -f <apkPath> -o <folderPath>
好了,關於反編譯apk的內容就這麼多了。
最後,給大家分享我下載好的那三個相關工具,下載地址:https://pan.baidu.com/s/1CCmrn3SztzzplVwwL66v8w