1. 程式人生 > >[tool] apk反編譯工具 jadx 使用

[tool] apk反編譯工具 jadx 使用

#[tool] apk反編譯工具 jadx 使用
##一.下載
1.工具下載
下載地址: https://bintray.com/skylot/jadx/releases#files(但是可能不是最新的)
2.原始碼下載
下載地址: https://github.com/skylot/jadx
##二. 原始碼編譯
下載下來之後是原始碼後解壓,進入到目錄中執行命令:

git clone https://github.com/skylot/jadx.git
cd jadx
./gradlew dist


主要是拉下來jadx的git主工程,然後跑對應的gradle task。之後會生成執行指令碼,多出了build目錄:

這裡寫圖片描述
生成了可執行的指令碼 jadx,jadx-gui等:

這裡寫圖片描述

##三. 使用

  1. 可以將build下的jadx資料夾拷貝至別處使用,執行jadx-gui:
[email protected]:~/dev_tools/jadx-master/build/jadx/bin$ ./jadx-gui

gui開啟後可以選擇需要反編譯的apk:

這裡寫圖片描述

找到apk點選確定之後反編譯需要一定時間,耐心等待,之後即可以顯示反編譯後的程式碼,如下是反編譯豌豆莢apk後的結果:

這裡寫圖片描述

  1. 同樣可以使用命令直接反編譯目的地址的apk:
./jadx-gui ~/下載/Wandoujia_224660_web_inner_referral_binded.apk 

##三. 優點:

  1. 方便的搜尋功能(支援全域性類,方法,text查詢):
    這裡寫圖片描述

  2. 可以匯出gradle工程,使用Itellij或AS看程式碼
    File->save as gradle project 選擇一個新資料夾(最好新建空資料夾,生成的檔案在選擇的資料夾中)
    生成後即可用IDE檢視程式碼了:
    這裡寫圖片描述

##四. 出錯處理

[email protected]:~/dev_tools/jadx-master/build/jadx/bin$ ./jadx-gui
Exception in thread "main" java.lang.UnsupportedClassVersionError: jadx/gui/JadxGUI : Unsupported major.minor version 52.0
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:803)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
	at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

jdk版本不對,jdk版本改為1.8就ok了