Android應用軟件反編譯還原工程全解打賞

android
眾所周知,Android應用層軟件是使用Java語言開發的,而Android的安裝文件*.apk則是將Java編譯后的*.class文件打包成*.Jar后再打包classes.dex文件,最后打包成*.apk發布。找到封裝步驟,想反編譯應該不難。這里介紹Windows環境下進行反編譯的全過程。

說明:反編譯不是為了破解,而是為了更好的學習,通過反編譯可以更好的借鑒成熟軟件的可取之處。

反編譯Android應用來還原Android工程,其實很簡單,這里分為兩個步驟。

第一步:獲取Java文件

首先需要兩個工具軟件,分別為dex2jar和JD-GUI,下載地址如下:
dex2jar:http://dex2jar.googlecode.com/files/dex2jar-0.0.9.9.zip
JD-GUI:http://innlab.googlecode.com/files/jd-gui-0.3.3.windows.zip
前者是將apk中的classes.dex轉化成Jar文件,而JD-GUI是一個反編譯工具,可以直接查看Jar包的源代碼。

工具準備妥當,保證Java環境已經配置好,然后使用解壓工具,解壓apk文件,可以直接修改擴展名為.zip,然后解壓,獲得classes.dex文件,這個就是打包后的class文件。

再使用下載好的dex2jar,為了方便,將classes.dex文件復制到dex2jar文件夾,使用Windows的命令提示符切換到dex2jar所在目錄,執行命令

dex2jar.bat classes.dex

會生成classes.dex.dex2jar.jar文件,當然,如果有需要,你也可以將classes.dex.dex2jar.jar再次轉為class文件或java文件(可使用Jad,與普通java反編譯一樣,這里不再贅述),生成后文件如圖所示。
dex2jar
這時候我們需要上面提及的JD-GUI來查看jar文件了,JD-GUI界面是Windows窗口模式,直接選擇路徑打開classes.dex.dex2jar.jar文件即可查看原java源代碼,如圖。
JD-GUI
HelloAndroid源碼(編譯前的apk源碼對照)如下。
helloandroid

第二步:獲取資源文件、xml、smali等

一樣很簡單,因為Android的圖片等資源文件都做了二進制壓縮,直接解壓的xml以及圖片文件都是亂碼,為了得到資源,我們需要一個工具,名為apktool,下載地址如下:
apktool需要兩個文件:
http://android-apktool.googlecode.com/files/apktool-install-windows-r04-brut1.tar.bz2
http://android-apktool.googlecode.com/files/apktool1.4.3.tar.bz2
為便于操作,我們需要三個文件同時放到同一目錄下,分別為apktool.jar、apktool.bat、aapt.exe。
準備妥當,即可直接反編譯apk文件。為方便操作,將要進行反編譯的apk文件與以上列出的三個文件放置同一文件夾下,打開命令提示符,輸入命令即可自動進行反編譯,如圖所示。
apktool
其中,所用命令如下。

apktool d MusicPlayer.apk MusicPlayer

apktool是命令,d是反編譯(如果是做軟件漢化等,可以這里可以使用b來重新打包,不在本文討論范圍內,故不做過多解釋),MusicPlayer.apk和MusicPlayer分別為要反編譯的文件名和反編譯后資源存放的文件夾名,前者需要跟文件一致,后者可任意命名(最好使用英文)。
下面是得到資源的文件夾,實際上可能不止這些,但都大同小異,其中res文件是資源文件,smali是程序對應的smali文件,類似于class文件(關于smali這里也不再多說,有興趣的朋友可以自己了解)。xml文件就是對應的xml配置。這樣,再進行些簡單的復制粘貼,整個項目工程就基本還原了。
apktoolfd

補充

有網友已經把以上兩個工具集成到一個批處理安裝包,喜歡簡單一點的朋友可以下載“APK反編譯工具包v1.6.rar”
地址是:http://innlab.googlecode.com/files/APK反編譯工具包v1.6.rar
下載后運行界面如下:
apktoolspack
按任意鍵安裝即可,之后使用的話直接在需要反編譯的文件上右擊選擇相應功能即可(關于工具的詳細用法見工具的說明文檔,這里只做推薦)。

Android應用軟件反編譯還原工程全解
文章《Android應用軟件反編譯還原工程全解》二維碼
  • 微信打賞
  • 支付寶打賞

已有4條評論

  1. henrik88

    不錯。

    2013-04-17 10:54 回復
  2. 愛度客—百度非官方獨立IT評論站

    不錯的資源,學習了,贊

    2012-08-12 10:25 回復

(必填)

(必填)

(可選)

黑龙江22选5开奖