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

轉(zhuǎn)載自 :http://www.itdecent.cn/p/dda9ff90a3c5

  • Android Studio 2.2版本以上的APK Analyzer
  • Android-classyshark
  • dex2jar & jd-gui & apktool

Android Studio 2.2的APK Analyzer

  • 直接把需要反編譯的apk直接拖到Android Studio的圖標(biāo)上即可。(這個(gè)親測(cè)得Android Studio最小化的時(shí)候拖,拖完在點(diǎn)出來(lái)就有了)
    或者
  • 選項(xiàng)Build-->Analyze APK,然后選擇要反編譯的apk。


    1

    然后直接將apk給反編譯出來(lái)??磮D:


    2

這種方法可以獲取到xml,以及圖標(biāo)等資源文件,但是我們發(fā)現(xiàn)在java代碼部分只給出了方法數(shù),方法名,并沒(méi)有方法里具體的代碼(在沒(méi)有被加固的情況下)


3

簡(jiǎn)要說(shuō)明:

  • assets文件夾:原始資源文件夾,對(duì)應(yīng)著Android工程的assets文件夾,一般用于存放原始的圖片、txt、css等資源文件。
  • lib:存放應(yīng)用需要的引用第三方SDK的so庫(kù)。比如一些底層實(shí)現(xiàn)的圖片處理、音視頻處理、數(shù)據(jù)加密的庫(kù)等。而該文件夾下有時(shí)會(huì)多一個(gè)層級(jí),這是根據(jù)不同CPU 型號(hào)而劃分的,如 ARM,ARM-v7a,x86等。
  • META-INF:保存apk簽名信息,保證apk的完整性和安全性。
  • res:資源文件夾,其中的資源文件包括了布局(layout),常量值(values),顏色值(colors),尺寸值(dimens),字符串(strings),自定義樣式(styles)等。
    AndroidManifest.xml文件:全局配置文件,里面包含了版本信息、activity、broadcasts等基本配置。不過(guò)這里的是二進(jìn)制的xml文件,無(wú)法直接查看,需要反編譯后才能查看。
  • classes.dex文件:這是安卓代碼的核心部分,,dex是在Dalvik虛擬機(jī)上可以執(zhí)行的文件。這里有classes.dex和classes2.dex兩個(gè)文件,說(shuō)明工程的方法數(shù)較多,進(jìn)行了dex拆分。
  • resources.arsc文件:記錄資源文件和資源id的映射關(guān)系

Android-classyshark

下載地址:https://github.com/google/android-classyshark/releases,下載下來(lái)之后是一個(gè)可執(zhí)行的jar文件,在終端執(zhí)行

java -jar Classyshark.jar

即可打開(kāi)圖形化界面。在打開(kāi)的圖形操作界面中拖入待目標(biāo)apk,即可展示出反編譯之后的結(jié)果。

dex2jar & jd-gui & apktool

反編譯代碼,也就是java文件:

  1. dex2jar:把dex文件轉(zhuǎn)換成jar文件
  2. jd-gui:把jar文件轉(zhuǎn)換成java文件
  • 反編譯資源,也就是res文件
  1. apktool:apk逆向工具

或者:
可以選擇此處下載ApkTool、dex2jar、JD-GUI。

安裝ApkTool
  1. 將下載好的apktool文件與apktool_2.3.1.jar文件準(zhǔn)備好,并將apktool_2.3.1.jar更名為apktool.jar;

  2. apktool.jarapktool移動(dòng)到/usr/local/bin目錄下(可以通過(guò)在終端中輸出命令open /usr/local/bin來(lái)打開(kāi)這個(gè)目錄);

  3. 為上述兩個(gè)文件增加可執(zhí)行權(quán)限,即在終端中輸入并執(zhí)行:

     chmod +x apktool.jar
     chmod +x apktool
    
    
  4. 在終端輸入apktool看是否可以運(yùn)行,如果不可以需要在系統(tǒng)偏好設(shè)置中打開(kāi)安全與隱私中點(diǎn)擊仍要運(yùn)行apktool.jar;

至此ApkTool的安裝便完成了,在終端運(yùn)行apktool命令會(huì)看到如下輸出:


apktool安裝
dex2jar

直接如上方式下載解壓即可。

JD-GUI

如上自行下載

  • 使用ApkTool反編譯APK得到xml文件、AndroidManifest.xml和圖片,

cd /你存放apk的目錄或在下面命令中使用xxx.apk文件的絕對(duì)路徑
apktool d xxx.apk //該命令執(zhí)行后會(huì)在同級(jí)目錄下生成一個(gè)與你編譯的apk同名的目錄

  • dex2jar將dex反編譯成jar

1、首先解壓dex-tool-2.0.zip得到dex2jar-2.0文件夾,mac環(huán)境下需要的三個(gè)文件是 d2j_invoke.sh & d2j-dex2jar.sh & lib,他們?cè)谕荒夸浖?jí)別。如圖:


1

2、將apk文件的后綴改為zip,并解壓(這時(shí)候其實(shí)我們可以得到該app使用的圖片資源,但是xml是看不了的,還是需要反編譯資源),然后將classes.dex文件移動(dòng)到dex2jar-2.0的文件夾目錄下,即與上述三個(gè)文件統(tǒng)一目錄。如圖:


2

3、打開(kāi)終端cd 到該目錄下輸入命令:
chmod a+x d2j_invoke.sh
chmod a+x d2j-dex2jar.sh

給這兩個(gè)文件添加可執(zhí)行權(quán)限。然后輸入命令:

sh d2j-dex2jar.sh classes.dex
3

這個(gè)時(shí)候執(zhí)行成功會(huì)在dex2jar-2.0目錄下生成一個(gè)classes-dexjar.jar文件,如圖:


4

4、雙擊已安裝好的JD_GUI,使用JD-GUI.app打開(kāi)classes-dexjar.jar如圖:


5

6

結(jié)果如下圖:


7

反編譯資源

解壓縮后有兩個(gè)文件apktool.sh & apktool.jar,將apk文件移動(dòng)到與上述兩個(gè)文件相同的目錄,終端cd到該目錄,執(zhí)行命令:

sh apktool.sh apktool d xxx.apk

總結(jié):
反編譯代碼
sh d2j-dex2jar.sh classes.dex(需要可執(zhí)行權(quán)限)
反編譯資源
sh apktool.sh apktool d xxx.apk

?著作權(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)容