Android逆向之旅——apktool,dex2jar,jd-gui

解壓縮的方式反編譯apk

Android應用程序apk文件說到底就是一個壓縮文件,那麼可能你就會說,既然是個壓縮文件,那我們直接解壓不就能得到他的文件了麼。ok,我們可以先來試試,下面是我簡單寫的一個應用打包之後的apk,解壓縮之後的目錄是:

看到上邊的目錄是不是很熟悉,心想大功告成,迫不及待的打開我們最爲熟悉的AndroidMainfest文件。然後就是一臉懵逼。全是亂碼,什麼鬼。如下圖所示。其實這是經過Android加密過的,所以我們無法查看,內心多少有點失落。然後還有更失落的在後邊,認真一看,少了最重要的一個文件夾,src目錄我們根本沒找到。

到這裏我們基本知道這樣是行不通的,那麼怎麼去真正的反編譯一個apk呢?接下來就需要用到三個重要的工具,就是標題裏邊提到的apktool,dex2jar,jd-gui

apktool的使用

1、下載apktool的jar包,這裏我下載的是最新版本,apktool_2.2.1.jar。下載地址:https://bitbucket.org/iBotPeaches/apktool/downloads

2、對指定的apk進行反編譯,首先使用命令行進入jar所在的目錄下,然後輸入命令apktool_2.2.1.jar d app-release.apk。命令很簡單,d就是decode,然後就是apk的目錄。執行後,在該目錄下會生成一個和apk同名的文件夾,再來進入這個文件夾,目錄爲:

再來打開res中的xml文件,現在代碼就一覽無餘了,不再是之前的亂碼。這個工具主要可以用於提取資源文件。

3、重新打包的命令也很簡單,apktool_2.2.1.jar b app-release:只需要將d改爲b,後邊是剛纔生成的對應文件夾的名字即可。執行之後對應的文件夾下邊會多出兩個文件,一個是build,一個是dist。重新打包之後的apk就在dist文件夾下。

以上只是提取出了資源文件,重頭戲還在後邊呢。

Dex2jar的使用

1、首先下載dex2jar放在你能找到的位置

2、再回頭看我們剛開始解壓縮出來的目錄,有一個很重要的文件,dex文件

這個就是源代碼打包後的文件,將這個文件複製到dex2jar-2.0目錄下,然後輸入命令進入該目錄下,再執行d2j-dex2jar.bat classes.dex。執行完成後在該目錄下會生成一個jar文件。這一步我們只需要獲取這個jar文件,所以到這裏就結束了,接下來就是最後一個工具jd-gui了。

jd-gui的使用

file-open file,選擇剛纔生成的jar文件。然後就沒有然後了,這裏當然不能上圖了。

到此我們就完美的反編譯了應用。但是但是我們的目的是學習,千萬不要過度哦,我們是開發,當然還是要保護我們的程序,古在此分享出來只是供大家更好的學習,而不是去搞破壞的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章