1. 程式人生 > >apktool、dex2jar、jd-gui的區別及詳解

apktool、dex2jar、jd-gui的區別及詳解

window 當我 download 轉化 blog 渠道 們的 source bsp

https://blog.csdn.net/themelove/article/details/53126360

反編譯相關:

apktool 作用:資源文件的獲取,可以提取出圖片文件和布局文件進行查看

dex2jar 作用:將apk反編譯成java源碼(classes.dex轉化成jar文件)

jd-gui 作用:查看APK中的classes.dex轉化成的jar文件,即源碼文件

概述:apktool dex2jar jd-gui他們三個都和反編譯相關,但是側重點不同,當我們有不同的需求時,選擇不同的工具,可以獲取不同的資源。通常情況下,我們可以三者結合起來用。

apktool下載地址

dex2jar下載地址

jd-gui下載地址

我匯總的三個工具包下載

apktool的使用:

cmd下進入到apktool目錄下執行:apktool d xxxxx.apk

技術分享圖片

運行結果:

技術分享圖片

可以看到用apktool反編譯apk之後的目錄如上:assets 目錄和res目錄下的文件和原工程中的資源文件一樣,lib下是一些第三方的.so文件,smail中是calsses.dex轉化成的

smail文件,並不可讀

apktool的主要用途:

1.可以獲取apk裏的資源文件

2.可以反編譯之後修改AndroidManifest.xml文件中的一些配置,比如mete-data,可以用於多渠道打包的實現。

3.assets目錄下放置的配置文件也可以修改。

應用場景:我們手動反編譯修改AndroidManifest.xml中mete-data中的渠道號,在用apktool b [修改好之後的文件目錄] 回編成apk,註意,在回編之後的apk是未簽名的apk,我們需要重新用jdk中的jarsigner.exe對apk進行簽名,再用zipalign.exe對簽名後的apk進行對齊優化操作,最終使其成為一個可用的apk.

以上步驟就是手動修改AndroidManifest.xml來手動打包一個渠道包的過程,我們當然可以將所有的渠道號配置在一個配置文件中,將以上步驟都用批處理或者python寫的打包工具來代替,也就是我們常說的多渠道打包工具。這樣也避免出錯的概率。

還不會?教你反編譯apk手動修改AndroidManifest.xml再回編打一個渠道包

dex2jar的使用:

1.首先將下載好的xxx.apk改名為xxx.rar,方便解壓,解壓之後如下圖:

技術分享圖片

2.之後將我們下載好的dex2jar.zip解壓進入到如下目錄:

技術分享圖片

圖中選中的就是我們要用到的工具。

3.打開cmd 進入到該目錄執行 d2j-dex2jar.bat xxxx.classes.dex 如下圖

技術分享圖片

運行結果如下圖:

技術分享圖片

會在批處理所在目錄生成classes-dex2jar.jar文件

該步驟主要是將classes.dex---------->xxxxxxx.jar文件,而xxxxx.jar裏面就是我們的.class文件,解壓xxxxx.jar後目錄如下:

技術分享圖片

我們知道xxxxxx.class 的字節碼文件我們是不能直接預覽的。所以我們要用到下面的工具

3.jd-gui的使用

查看xxxxxxx.jar裏的源碼

1.找到我們下載的jd-gui-windows-1.4.0.zip並解壓,找到jd-gui.exe,並把上面步驟中生成的xxxxxx.jar文件拖進去,即可看到反編譯之後的源碼,大功告成:

技術分享圖片

apktool、dex2jar、jd-gui的區別及詳解