JADX 是一個集成化的反編譯開發工具,還可以將源文件導出為 Android Gradle 項目。

1、準備   

JADX 程序:

下載地址1:https://github.com/skylot/jadx/releases

下載地址2:https://sourceforge.net/projects/jadx/files/

(注意:電腦上需要安裝 Java:安裝教程

2、解壓下載的壓縮包

如圖:

我們需要關注的是 bin 文件夾裡面的 bat 文件

使用bat文件可以讓你在命令行或圖形用戶界面中使用 JADX

注意:需以管理員許可權運行,不然可能無法正常啟動

3、一個例子(反編譯360相機 APK)

(1)使用圖形界面

啟動 jadx-gui.bat 文件(在解壓文件夾的 bin 文件夾裡面)。然後,你會看到如圖所示開始界面:

選擇了文件後,JADX 會自動反編譯它,界面的左邊是資源管理器。 我們這用的是360相機的 APK 文件。

看起來是不是很炫酷呢?

點擊 file -> save all可以將所有代碼保存在一個文件夾裡面。

(2)使用命令行

打開一個新的命令提示符,切換到 JADX 的 bin目錄:

cd C:\Users\37989\Documents\JADX\jadx-0.6.1\bin

執行反編譯:

jadx -d C:\Users\37989\Documents\JADX\example2 C:\Users\37989\Documents\JADX\camera360.apk

 

注意:輸入的目錄文件夾應該是已經存在的。

4、優點

(1)文本搜索

點擊 Navigation -> Text Search 或者 Navigation -> Class Search 激活它,並且 jadx 的搜索支持四種維度,Class、Method、Field、Code,我們可以根據我們搜索的內容進行勾選,範圍最大的就是 Code ,基本上就是文本匹配搜索。

(2)查找引用

比如想要找到我們想要的類和代碼,那麼可以直接使用 jadx 的搜索代碼功能,找到我們需要查看的類或者代碼,選中點擊右鍵,選擇Find Usage。

這樣的話, jadx 就會為你搜索出在此項目中哪些地方使用了這些類或代碼.

(3)反混淆(Deobfuscation)

一般 apk 在發布出去之前,都是會被混淆的,這基本上是國內 App 的標配,但其實非常不利於我們閱讀。我們很難看到一個 a.java 的文件之後,就確定它是哪一個,還需要根據包名來區分。而 Deobfusation 功能,可以為它們起一個特殊的名字,這樣它在這個項目中,名字就是唯一的,方便我們識別和搜索。這個功能可以在 Tools -> deobfusation 中激活。

(4)導出為 Gradle 項目

jadx-gui 可以直接閱讀代碼,還是很方便的。但是畢竟沒有我們常見的編輯器來的方便。jadx支持將反編譯後的項目,直接導出成一個 Gradle 編譯的工程。可以通過 File -> Save as gradle project 來激活這個功能。最終輸出的項目,可以直接通過 Android Studio 打開。

5、錯誤處理方法

有些 apk 文件的體積比較大的時候,反編譯的時候會卡住或者假死,解決方案:

使用記事本或者 notepad++ 打開 jadx-gui.bat

更改應用運行內存為1GB

變更前:

set DEFAULT_JVM_OPTS=

變更後:

set DEFAULT_JVM_OPTS=-Xmx1024M

(注意等號的後面有個減號)