Android反編譯apk(Mac環(huán)境)

為什么要反編譯?

反編譯別人的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沒(méi)有做代碼混淆,或者你想繼續(xù)反編譯研究別人項(xiàng)目里的代碼,就要用到dex2jar和jd-gui。 dex2jar可以將apk文件轉(zhuǎn)成jar文件,而jd-gui可以查看jar文件里面被反編譯出來(lái)的源代碼。運(yùn)行jd-gui需要你的電腦已經(jīng)安裝了jdk1.8+,但實(shí)際上即使你已經(jīng)安裝了jdk1.8+,它還是運(yùn)行不了,提示需要jdk1.8+的環(huán)境,后面再介紹遇到這問(wèn)題該怎么解決。

apktool安裝

按照網(wǎng)頁(yè)(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)目下載下來(lái),然后按下面的提示去做
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

開(kāi)始使用

隨便新建一個(gè)文件夾,比如我在桌面上新建一個(gè)文件夾叫decompiler,把需要反編譯的apk放進(jìn)去,如test.apk;為了方便,我把dex2jar和jd-gui都一起放到了decompiler這個(gè)文件夾。在命令行下cd到decompiler這個(gè)文件夾,輸入apktool d test.apk,完成后會(huì)多出一個(gè)test的文件夾(跟apk的文件名一樣),里面就是各種資源文件。

260E6334-69AD-4F71-80A4-8BBEDC8D8B5B.png

然后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)境變量)

完成后會(huì)生成test-dex2jar.jar

用jd-gui打開(kāi)test-dex2jar.jar,就可以看到反編譯后的代碼了

參考資料

1、Android反編譯apk并重新打包簽名(Mac環(huán)境)

2、http://www.itdecent.cn/p/dda9ff90a3c5

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容