越寫悅快樂之如何使用ApkTool反編譯APK

今天的越寫悅快樂之系列文章爲大家帶來如何使用ApkTool反編譯APK。今天偶然的機會在簡書上看到了Android反編譯的文章,就瞭解一下反編譯的原理和相關工具的使用方法,正好因爲項目需要去查看一個Android應用使用的技術,那就把這些知識點整理成文,希望對你學習逆向工程有一點幫助。閒話少說,前方高能預警,請專注操作每一步。

:warning: 請注意本文使用的反編譯工具僅用於學習之用,請勿將其用於商業用途。

開發環境

  • Window 10.0.17763
  • Java 8.0.191
  • Android Build Tool 28.0.3
  • Windows Command

APK是什麼

APK文件是Android應用簽名打包後的產物,也是Android設備安裝應用的文件,我們有分享過如何在Android Studio中進行應用打包,比如我們使用上一次打包的APK文件app-release.apk來驗證我們的反編譯工具,打包完成後我們可以將APK文件拖拽到Android Studio中進行分析。

我們從上圖可以粗略地知道dex文件在打包之後的佔比、APK包的大小、res資源目錄加載了那些資源。這些信息有助於我們在進行應用優化和性能提升方面提供有力的依據。

工具下載

我們可以從參考鏈接中找到releases標籤頁中選擇最新的穩定版本,下載完成後我們可以看到如下文件。

工具安裝

由於下載好的dextooljd-gui都是編譯好的壓縮包,所以我們直接解壓就可以使用,那麼對於apktool的的安裝我們需要有如下操作。

  • 重命名apktool_2.4.0.jarapktool.jar - 去掉版本號

  • 官網下載apktool包裝命令,並保存爲apktool.bat文件

  • apktool.jarapktool.bat文件複製到C:/Windows目錄下

  • 輸入Windows + R打開運行窗口,輸入cmd,然後輸入apktool,如果輸出以下信息,則說明apktool安裝成功

如何使用

使用apktool解壓APK

  • 切換到APK文件所在目錄
  • 在命令行窗口執行apktool d -f app-release.apk
  • 查看解壓後的目錄

使用dex2jardex反編譯爲jar

  • 解壓dex-tool-2.0
  • 手動修改app-release.apk文件後綴爲.zip,並解壓找到其中的classes.dex文件
  • 複製classes.dex文件到dex-tool-2.0
  • 在命令行窗口執行d2j-dex2jar classes.dex

執行完成後會在當前目錄下生成classes-dex2.jar文件

使用jd-gui查看源代碼

  • 解壓jd-gui-windows-1.4.2.zip
  • 雙擊jd-gui.exe彈出Java Decompiler窗口
  • 選擇上一步生成的classes-dex2.jar文件,即可查看源代碼

擴展方法

我們也可以使用GDA來分析APK文件。

GJoy Dex Analysizer(GDA),是一款強大而輕便的交互式反編譯器,也是一款綜合性逆向分析利器。它支持分析apk、dex、odex、oat等類型文件,支持使用Python腳本進行方法簽名製作與識別。

參考

個人總結及收穫

今天有幸爲大家分享瞭如何使用apktool反編譯APK,鑑於Android設備使用的虛擬機與Java虛擬機的異同,我們知道了打包完成後會生成以dex爲後綴的字節碼文件,Android虛擬機會加載字節碼文件並讀取字節碼頭部信息,加載相關資源,隨後啓動應用進程,渲染頁面成功後就可以看到我們開發的應用了。當然具體的加載過程肯定不像我說的這麼簡單,我相信好奇的你肯定有機會去探索應用的加載流程和原理,有時間我也會分享一些相關的知識點爲大家解惑。希望大家保持學習的熱情,鞏固自己的基礎知識,開發出更加出色穩定的應用,也能爲客戶創造更大的價值。若是我的文章對你有所啓發,那將是我莫大的榮幸,期待我們下次的不期而遇。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章