前言
開發過程中有些時候會遇到一些功能,自己不知道該怎麼做,然而別的軟體裡面已經有了,這個時候可以採用反編譯的方式,解開其他的程序,來了解一些它的做法,同時啊,還可以藉鏡別人的軟體結構,資源文件,等等,哈哈。那我就來講解一些關於反編譯相關的知識,主要分三篇,第一篇介紹反編譯的工具和方法,第二篇,介紹smali的語法,第三篇介紹如何防止反編譯,主要透過這幾篇文章,了解如何去做反編譯和程式碼加固。
工具
apktools-目前最強大的反編譯工具
輕鬆反編譯apk,解析出資源文件,xml文件,產生smali文件,還可以把修改後的文件你想生成apk。
支援windows,linux,mac。
下載網址:https://code.google.com/p/android-apktool/downloads/list 請自備梯子
dex2jar
將apk中的dex文件轉換成為jar文件,很多人不會看smali文件,還是看java類文件比較舒服,這個時候可以藉助這個工具來轉成java,也是支援windows,linux,mac。
下載位址:http://code.google.com/p/dex2jar/downloads/list
jd-gui
查看jar檔,基本上可以看到java class檔案了,也是支援mac,windows,linux。
下載網址:http://jd.benow.ca/
apktool的命令列綜合工具推薦 apktool plus
其實是別人寫的一個工具,集合了apktool的功能,另外還支持給apk簽名。最新版本是v9update6,只支援windows系統。
下載位址:http://dl.dbank.com/c0jndlkbu4#
進行反編譯
使用apktools
在apktools目錄下執行以下指令
./apool d pathtoapk outdir #window
d2j-dex2jar.bat pathtoclasses.dex #wind