破解范圍:apk、dex、jar、zip、class、aar?
搜索功能:可以點(diǎn)擊 Navigation -> Text Search 或者 Navigation -> Class Search 激活它 。jadx 的搜索,支持四種維度,Class、Method、Field、Code
搜索在哪里被調(diào)用: 找到我們需要查看的類或者方法,選中點(diǎn)擊右鍵,選擇 Find Usage。查看某一種方法在哪里被調(diào)用
反混淆deobfuscation: 這個(gè)功能可以在 Tools -> deobfusation 中激活。標(biāo)記混淆后的 方法名稱。
一鍵導(dǎo)出gradle工程:可以通過(guò) File -> Save as gradle project 來(lái)激活這個(gè)功能。
jadx 錯(cuò)誤處理:
inconsistent code :有時(shí)候有代碼,反編譯的不完整,你會(huì)看到 JADX WARNING : inconsistent code 標(biāo)志的錯(cuò)誤。
解決方案:開(kāi)啟 Show inconsistent code 開(kāi)關(guān)。你可以在 File -> Preferences 中找到它。
由于內(nèi)存不足引起的錯(cuò)誤:
官方對(duì)于這樣因?yàn)閮?nèi)存不足引發(fā)的問(wèn)題,也提供了一些解決方案。
1、減少處理的線程數(shù)。
jadx 為了加快編譯的效率,所以是使用多線程處理的,而多個(gè)線程會(huì)耗費(fèi)跟多的內(nèi)存。所以減小反編譯時(shí)候的線程數(shù),是一個(gè)有效的方法。
如果使用命令行的話,可以使用-j 1參數(shù),配置線程數(shù)為 1,不配置的話,默認(rèn)線程數(shù)為 4。
而使用 jadx-gui 的話,可以在 Preferences 中,通過(guò)配置 Processing threads count 來(lái)配置線程數(shù)。
2、修改 jadx 腳本
直接編輯 ./bin 目錄下的 jadx 腳本,配置找到 DEFAULT_JVM_OPTS ,將它設(shè)置為DEFAULT_JVM_OPTS="-Xmx2500M",就可以配置當(dāng)前使用的內(nèi)存大小。
如果是 Windows 系統(tǒng),你需要編輯 jadx.bat 文件。
3、使用命令行命令
如果以上方式都不好用,在沒(méi)有更好的辦法的情況下,你可以直接使用命令行,通過(guò) jadx 的命令進(jìn)行放編譯。并將線程數(shù)配置為 1 ,這樣雖然慢一些,但是多數(shù)情況下,是可以正常輸出反編譯后的代碼的。
舉個(gè)例子:
jadx -d out -j 1 classes.dex
更過(guò)命令,可以通過(guò)jadx -h命令進(jìn)行查看。
jadx-help
仔細(xì)看看 jadx 命令配置的參數(shù),基本上都可以在 Preferences 中,找到對(duì)應(yīng)的配置項(xiàng),相互對(duì)照理解一下,應(yīng)該不難發(fā)現(xiàn)它的使用方式。