天天看點

安卓反編譯工具的應用

理論來說,反編譯别人的apk不是很好,但是單純的用來學習别人的程式設計思想,用用反編譯工具,也還說得過去。這裡介紹一下幾個常用的反編譯工具,純粹彌補自己記憶短闆。

常用反編譯工具:

1、dex2jar ,2、baksmali.jar / smali.jar  3、jd-gui.exe 4、APKSign.exe 

5、apktool    6、ApKIDE

準備工作:将xxx.apk字尾改為zip,即xxx.zip,解壓,得到裡面的classes.dex檔案,這是編譯後的源碼檔案。下面是各個工具介紹。

(1) dex2jar、jd-gui.exe

此工具可用來檢視apk源碼。可将classes.dex放到dex2jar.bat通目錄,假設為 e:\dex2jar\classes.dex。指令行:dex2jar.bat  classes.dex,在同目錄得到 classes_dex2jar.jar檔案,使用jd-gui.exe即可打開此檔案,檢視源代碼

(2) baksmali.jar / smali.jar

可用來修改源代碼,隻不過都是smali文法格式。

解包classes.dex指令:java  -jar  baksmali.jar  -o  out/  classes.dex

out/為輸出路徑,此處筆者的classes.dex與baksmali.jar smali.jar同一目錄

打包classes.dex指令:java  -jar smali.jar out/  -o classes.dex,out/代表上面解包的檔案夾。

baksmali.jar解包後,可修改smali源代碼,然後smali.jar将修改好源代碼打包成classes.dex,再将此classes.dex覆寫到apk解壓後的檔案夾中,最後将解壓檔案夾再壓縮為zip格式,壓縮完,字尾改為apk。注意這裡的壓縮,由于壓縮算法原因,筆者用360解壓軟體以及下載下傳的其他幾個壓縮軟體,再壓縮後會使得得到的apk不完整,提示安裝包損壞。但采用手機上安卓版RE檔案管理器,進行壓縮就正常了。

(3) APKSign.exe 

上面壓縮完後apk,沒有簽名是以不能安裝。采用此工具可以對上述apk進行自動簽名。

(4) apktool

此工具同baksmali.jar一樣用來解包得到smali源代碼。

cmd指令:apktool d  xxx.apk   out     xxx.apk為apk路徑,out為輸出路徑

apktool網上有牛人開發的內建版,功能不僅僅限于這裡的解包,筆者這裡隻是一個簡版。

(5) ApKIDE

終于介紹到這款超級軟體了,這款軟體內建了上述解包,打包,壓縮,簽名等功能,另外還有logcat日志資訊等等。中文名:改之理。好奇怪而又有個性的名字。嫌上面操作麻煩的,推薦用這款軟體,不用記憶指令行文法了,完全傻瓜式操作。一款軟體,輕輕松松反編譯apk。