1. 程式人生 > >Android APK反編譯詳解(附圖)

Android APK反編譯詳解(附圖)

這段時間在學Android應用開發,在想既然是用Java開發的應該很好反編譯從而得到原始碼吧,google了一下,確實很簡單,以下是我的實踐過程。

在此鄭重宣告,貼出來的目的不是為了去破解人家的軟體,完全是一種學習的態度,不過好像通過這種方式也可以去漢化一些外國軟體。

本文Android反編譯教程,測試環境:

Win7 Ultimate x64

Ubuntu 12.04 x86_x64

反編譯工具包 下載 (2012-10-10更新)


一、Apk反編譯得到Java原始碼

下載上述反編譯工具包,開啟apk2java目錄下的dex2jar-0.0.9.9資料夾,內含apk反編譯成java原始碼工具,以及原始碼檢視工具。

apk反編譯工具dex2jar,是將apk中的classes.dex轉化成jar檔案

原始碼檢視工具jdgui,是一個反編譯工具,可以直接檢視反編譯後的jar包原始碼

dex2jar 和 jdgui 最新版本下載,分別見google code:

dex2jar(google code)

jdgui(google code),最新版本請見 官方

具體步驟:

首先將apk檔案字尾改為zip並解壓,得到其中的classes.dex,它就是java檔案編譯再通過dx工具打包而成的,將classes.dex複製到dex2jar.bat所在目錄dex2jar-0.0.9.9資料夾。

在命令列下定位到dex2jar.bat所在目錄,執行

dex2jar.bat    classes.dex

生成

classes_dex2jar.jar

然後,進入jdgui資料夾雙擊jd-gui.exe,開啟上面生成的jar包classes_dex2jar.jar,即可看到原始碼了,如下圖:



HelloAndroid原始碼在反編譯前後的對照如下:

 

二、apk反編譯生成程式的原始碼和圖片、XML配置、語言資源等檔案

如果是漢化軟體,這將特別有用

首先還是要下載上述反編譯工具包,其中最新的apktool,請到google code下載

apktool(google code)

具體步驟:

下載上述反編譯工具包,開啟apk2java目錄下的apktool1.4.1

資料夾,內含三個檔案:aapt.exeapktool.batapktool.jar 

注:裡面的apktool_bk.jar是備份的老版本,最好用最新的apktool.jar

在命令列下定位到apktool.bat資料夾,輸入以下命令:apktool.bat  d  -f   abc123.apk   abc123,如下圖:

 

上圖中,apktool.bat 命令列解釋:apktool.bat   d  -f    [apk檔案 ]   [輸出資料夾]

反編譯的檔案如下(AndroidManifest.xml為例):


將反編譯完的檔案重新打包成apk,很簡單,輸入apktool.bat   b    abc123(你編譯出來資料夾)即可,命令如下:

 

打包apk後的檔案在目錄C:\HelloAndroid下,生成了兩個資料夾:

build

dist

其中,打包生成的HelloAndroid.apk,在上面的dist資料夾下,Ok

三、 圖形化反編譯apk

上述步驟一、二講述了命令列反編譯apk,現在提供一種圖形化反編譯工具:Androidfby

首先,下載上述反編譯工具包,開啟Androidfby目錄,雙擊Android反編譯工具.exe,就可以瀏覽開啟要反編譯的apk




本文反編譯工具包整理歷史版本:

本部落格反編譯方法,僅供參考學習使用,禁止用於非法和商業等用途,謝謝!


參考推薦: