為什么要反編譯紊选?
反編譯別人的apk,可以學(xué)習(xí)別人的項(xiàng)目姥敛。就算別人做了代碼混淆奸焙,你也可以看到里面的資源文件,如布局文件彤敛、AndroidManifest.xml等文件与帆,很多東西都是可以借鑒和學(xué)習(xí)的。
需要下載安裝哪些工具墨榄?
apktool :https://ibotpeaches.github.io/Apktool/install
dex2jar:https://github.com/pxb1988/dex2jar
jd-gui:http://jd.benow.ca
如果apk做了代碼混淆玄糟,或者你僅僅是想看別人apk里面的資源文件,用apktool就可以了袄秩。如果apk沒有做代碼混淆阵翎,或者你想繼續(xù)反編譯研究別人項(xiàng)目里的代碼逢并,就要用到dex2jar和jd-gui。 dex2jar可以將apk文件轉(zhuǎn)成jar文件郭卫,而jd-gui可以查看jar文件里面被反編譯出來的源代碼砍聊。運(yùn)行jd-gui需要你的電腦已經(jīng)安裝了jdk1.8+,但實(shí)際上即使你已經(jīng)安裝了jdk1.8+贰军,它還是運(yùn)行不了玻蝌,提示需要jdk1.8+的環(huán)境,后面再介紹遇到這問題該怎么解決词疼。
apktool安裝
按照網(wǎng)頁(https://ibotpeaches.github.io/Apktool/install)上面的指引去做就可以了灶伊,記得用chmod添加執(zhí)行權(quán)限
chmod +x apktool.jar
chmod +x apktool
macOS:
Download Mac wrapper script (Right click, Save Link As apktool)
Download apktool-2 (find newest here)
Rename downloaded jar to apktool.jar
Move both files (apktool.jar & apktool) to /usr/local/bin (root needed)
Make sure both files are executable (chmod +x)
Try running apktool via cli
Or you can install apktool via Homebrew:
Install Homebrew as described in this page
Execute command brew install apktool in terminal (no root needed). The latest version will be installed in /usr/local/Cellar/apktool/[version]/ and linked to /usr/local/bin/apktool.
Try running apktool via cli
dex2jar安裝
到這里https://github.com/pxb1988/dex2jar把項(xiàng)目下載下來,然后按下面的提示去做
In the root directory run: ./gradlew distZip
cd dex-tools/build/distributions
Unzip the file dex-tools-2.1-SNAPSHOT.zip (file size should be ~5 MB)
Run d2j-dex2jar.sh from the unzipped directory
jd-gui
到http://jd.benow.ca下載安裝軟件就可以寒跳,并且要求已經(jīng)安裝了jdk1.8+聘萨。但實(shí)際上即使你已經(jīng)安裝了jdk1.8+,它還是運(yùn)行不了童太,提示需要jdk1.8+的環(huán)境米辐,解決辦法:https://zhuanlan.zhihu.com/p/453431240
開始使用
隨便新建一個文件夾,比如我在桌面上新建一個文件夾叫decompiler,把需要反編譯的apk放進(jìn)去书释,如test.apk翘贮;為了方便,我把dex2jar和jd-gui都一起放到了decompiler這個文件夾爆惧。在命令行下cd到decompiler這個文件夾狸页,輸入apktool d test.apk,完成后會多出一個test的文件夾(跟apk的文件名一樣)扯再,里面就是各種資源文件芍耘。
然后sh d2j-dex2jar.sh -f test.apk (將這里的d2j-dex2jar.sh換成你的實(shí)際路徑,比如我的是/Users/chen/Desktop/decompiler/dex2jar-2.x/dex-tools/build/distributions/dex-tools-2.2-SNAPSHOT/d2j-dex2jar.sh 當(dāng)然你也可以先把它加入到環(huán)境變量)
完成后會生成test-dex2jar.jar
用jd-gui打開test-dex2jar.jar,就可以看到反編譯后的代碼了