Android反編譯:Apktool、dex2jar宝冕、JD-GUI的使用
一张遭、概述
如果看到某款應(yīng)用的功能很好奇,而對于其實現(xiàn)方式一頭霧水猬仁。那么就可以對其進行反編譯帝璧,來獲取其中的實現(xiàn)方式。
Apktool
:
- 可以用來將資源恢復(fù)到原來的形式湿刽,包括
resources.arc
的烁、classes.dex
、9.png
和XML文件
- 可以將反編譯后的資源文件重新打包成二進制的APK/JAR文件
dex2jar
: 用來將classes.dex
轉(zhuǎn)為jar文件
JD-GUI
: 用來將查看jar文件诈闺,機制是將jar中的.class文件轉(zhuǎn)為.java文件
二渴庆、準備工作(Mac版)
-
ApkTool:
下載地址:ApkTool運行腳本、ApkTool運行庫
-
安裝:
將
apktool_x.x.x.jar
命名為apktool.jar
將
apktool
腳本雅镊、apktool.jar
文件移動到/usr/local/bin
目錄下-
為上述兩個文件增加可執(zhí)行權(quán)限襟雷,命令如下:
chmod +x apktool chmod +x apktool.jar
-
dex2jar:
下載地址:dex2jar
-
安裝:
將下載好的dex2jar壓縮包解壓,將
d2j-dex2jar.sh
重命名為dex2jar.sh
(這個命令最常用仁烹,名稱短一點好)將解壓后的文件夾復(fù)制到
/usr/local/bin
目錄下-
為
d2j_invoke.sh
增加可執(zhí)行權(quán)限chmod +x d2j_invoke.sh
-
配置環(huán)境變量(因為dex2jar可執(zhí)行文件下
/usr/local/bin
的子目錄下耸弄,所有要配置環(huán)境變量):# 1. 打開.bash_profile文件,并添加如下配置: export PATH=$PATH:/usr/local/bin/dex2jar # 2. 執(zhí)行命令:source ~/.bash_profile卓缰,讓配置立即生效
-
JD-GUI:
- 下載地址:JD-GUI
- 安裝:解壓后计呈,將
JD-GUI.app
復(fù)制到Applications
文件夾,然后點擊即可使用
三征唬、使用Apktool反編譯apk獲取資源文件
# 在終端執(zhí)行如下命令捌显,就會在apk文件目錄下創(chuàng)建一個和apk同名的文件夾,該文件夾中放的是反編譯的資源文件
apktool d /xxx/xxx/xxx.apk
# 將反編譯后的文件重新打包
apktool b /xx/xx/xxx
四总寒、使用dex2jar將dex反編譯成jar
使用解壓軟件將apk文件解壓
-
在終端執(zhí)行如下命令:
# cd 到apk解壓的目錄扶歪,然后執(zhí)行命令(apk解壓目錄中可能有多個.dex文件,要分別反編譯)摄闸, dex2jar classes.dex
五善镰、JD-GUI的使用
? 直接打開JD-GUI.app
,然后將通過dex2jar
反編譯后的.jar
文件拖動到JD-GUI
就可以查看到反編譯后的java代碼了贪薪。(反編譯后會出現(xiàn)abc這樣的類和包名媳禁,是因為作者對代碼進行了混淆,這樣反編譯后代碼的可讀性變差)
六画切、總結(jié)
使用這些工具是為了讓我們更好的學習代碼竣稽,寫出更好的代碼。