Android APK反編譯技巧全講解

Geeksongs發表於2019-05-14
  • 導言:在我們安卓開發當中,我們不僅需要掌握基礎的開發技能,也需要掌握軟體的安全技能,這樣才可以讓我們的軟體能夠成為一款能夠真正可以進行釋出的軟體,同時也可以讓自己的核心技術不會被別人所盜取。
  • 首先我們應當瞭解的是,對於反編譯我們一共需要三個工具,它們分別是:APKTool,dex2jar,和jd-gui。
  • APKTool:用於解析apk的res檔案以及AndroidManifest.xml檔案
  • dex2jar:用於把apk解壓後生成的classes.dex檔案解析為字尾為jar的檔案,與下面的jd-gui工具聯合使用則可以得到我們的核心Java程式碼
  • jd-gui:將上一步所得到的jar檔案解析為Java檔案,從而得到軟體的核心程式碼

這就是反編譯的核心流程,凡是沒有被MD5演算法加密,或者加固過的APK都可以利用這個方法來進行反編譯破解。

 

第一步.來到官網下載APKtool

  • 網址:https://ibotpeaches.github.io/Apktool/install/

介面如下:

 

 我們需要把下載的兩個檔案都放在同一個資料夾下,這個資料夾可以自己進行選擇或者新建,本人這裡在E盤下建立了一個androidsafe的資料夾用於儲存這個工具,點選第二個連結之後會出現如下介面:

 

 

第二步.將需要進行反編譯的檔案放到剛剛我們建立好的那個資料夾下

 

此時我們的E:/androidsafe資料夾下只有這三個檔案,同時我們也需要把下載的第二個檔案apktool-2.4.0.jar更改成apktool.jar,不然是無法執行這個工具的。同時把需要反編譯的apk檔案移動到這個資料夾下。

 

第三步.開始反編譯

鍵盤輸入win+r,進入cmd的windows命令列模式。

利用cd命令將命令列模式進入剛剛建立的這個資料夾下,

再輸入:

apktool d 您拿到這個資料夾下的需要反編譯的apk檔名.apk

 如下圖所示:

這樣我們的反編譯過程就完成了。

我們再來看看剛剛我們所建立的資料夾就會多出一個名為appdebug的檔案了

檔案目錄如下:


可以說是十分成功了。其中的res資料夾是程式當中的所有資原始檔,smali資料夾下存放了程式所有的反彙編程式碼。apktool這個工具主要是用來解析資源res和資源AndroidManifest.xml的,除此之外的,我們還需要另外的工具來解析Java原始碼,利用下以下兩個工具則可以用於解析Java原始碼,它們分別是:dex2jar和jd-gui.

第四步.將apk檔案解析為字尾為dex的檔案

1.首先我們把剛剛用於解析的apk檔案的字尾改為zip,然後隨便用一個你已經安裝過的壓縮包軟體把它解壓就可以了

2.解壓之後你會在解壓之後的檔案當中發現一個名為:classes.dex的檔案,這樣就把apk的dex檔案得到啦!如下圖所示:

第五步.利用dex2jar工具把dex檔案解析成字尾為jar的檔案

dex2jar的下載網址是:https://bitbucket.org/pxb1988/dex2jar/downloads/

1.下載到我們剛剛安裝apktool的資料夾下,然後解壓,更改解壓後的檔名為dex2jar
2.將剛剛所得到的classes.dex檔案剪下到dex2jar資料夾下,如下圖所示:

3.開啟命令列cmd模式,利用cd命令將目錄切換到dex2jar的資料夾下,同時鍵入以下程式碼:

d2j-dex2jar.bat classes.dex

這個時候返回資料夾,立刻就可以看到在classes.dex資料夾下就多了個jar檔案了。

第六步.將jar檔案解析為Java檔案

下面就來到最激動人心的一步,得到我們的Java檔案啦!

首先下載jd-gui,網址如下:

https://github.com/java-decompiler/jd-gui/releases/

這裡windows版本的就直接下載後解壓,解壓後點選字尾為exe的可執行檔案開啟就是了,再將jar檔案拖進去就好啦!:
如下圖所示:

反編譯的步驟還是挺簡單的,但是如果被加密後再進行反編譯難度就大了。

 

 

相關文章