前言
開發(fā)過程中有些時(shí)候會(huì)遇到一些功能,自己不知道該怎么做,然而別的軟件里面已經(jīng)有了,這個(gè)時(shí)候可以采用反編譯的方式,解開其他的程序,來了解一些它 的做法,同時(shí)啊,還可以借鑒別人的軟件結(jié)構(gòu),資源文件,等等,哈哈。那我就來講解一些關(guān)于反編譯相關(guān)的知識(shí),主要分三篇,第一篇介紹反編譯的工具和方法, 第二篇,介紹smali的語法,第三篇介紹如何防止反編譯,主要通過這幾篇文章,了解如何去做反編譯和代碼加固。
工具
apktools-目前最強(qiáng)大的反編譯工具
輕松反編譯apk,解析出資源文件,xml文件,生成smali文件,還可以把修改后的文件你想生成apk。
支持windows,linux,mac。
下載地址:https://code.google.com/p/android-apktool/downloads/list 請(qǐng)自備梯子
dex2jar
將apk中的dex文件轉(zhuǎn)換成為jar文件,很多人不會(huì)看smali文件,還是看java類文件比較舒服,這個(gè)時(shí)候可以借助這個(gè)工具來轉(zhuǎn)成java,也是支持windows,linux,mac。
下載地址:http://code.google.com/p/dex2jar/downloads/list
jd-gui
查看jar文件,基本可以看到j(luò)ava class文件了,也是支持mac,windows,linux。
下載地址:http://jd.benow.ca/
apktool的命令行綜合工具推薦 apktool plus
其實(shí)是別人寫的一個(gè)工具,集合了apktool的功能,另外還支持給apk簽名。最新版本是v9update6,只支持windows系統(tǒng)。
下載地址:http://dl.dbank.com/c0jndlkbu4#
進(jìn)行反編譯
使用apktools
在apktools目錄下執(zhí)行以下命令
- ./apktool d pathtoapk outdir #mac linux
- apktool.bat d pathtoapk outdir #window
這樣就可以反編譯成功了,可以查看其中的資源文件,smali文件,當(dāng)然有的app進(jìn)行了特殊處理,不是全部可以反編譯的。
同時(shí)apktool還可以對(duì)反編譯后的文件逆向成apk文件,格式如下。
- ./apktool b apppath outpath
逆向后的文件要是無簽名的需要先簽名才可以安裝。
使用dex2jar
apk文件本身其實(shí)就是一個(gè)zip壓縮包,先講apk改成一個(gè).zip文件解壓后得到一個(gè)classes.dex。到dex2jar的目錄,執(zhí)行以下命令.
- ./d2j-dex2jar.sh pathtoclasses.dex #mac linux
- d2j-dex2jar.bat pathtoclasses.dex #wind
之后會(huì)生成一個(gè)jar文件,用jd-gui打開就可以看到其中的java代碼了。
其他
其實(shí)我們使用的反編譯也就這些足夠了,通常很多時(shí)候無法獲取很多的代碼,畢竟人家也有措施應(yīng)對(duì)的。
原文地址:http://blog.isming.me/2015/01/11/android-decompile-tools/
【編輯推薦】
聯(lián)系客服