大多商業(yè)軟件,會(huì)對(duì)程序進(jìn)行加密、加殼等安全措施以防范軟件被破解,從而使得反編譯越來越難。反編譯是一個(gè)對(duì)目標(biāo)可執(zhí)行程序進(jìn)行逆向分析,從而得到源代碼的過程。尤其是像Java這樣的運(yùn)行在虛擬機(jī)上的編程語言,更容易進(jìn)行反編譯得到源代碼。
我們知道,在代碼支撐方面,JDK 1.7引入了字符串Switch、泛型接口改進(jìn)等新功能,1.8增加了lambda表達(dá)式、方法傳遞、多重注解等新特性,這使得反編譯工具的編寫難度加大。今天我們盤點(diǎn)一下目前仍然可用的、相對(duì)功能很強(qiáng)大的Java反編譯工具(Eclipse插件不做評(píng)價(jià)),比較老的反編譯工具很難支持Java8及其以上版本。
1、Java 反編譯器 JD-GUI
JD-GUI 是一個(gè)用 C++ 開發(fā)的 Java 反編譯工具,由 Pavel Kouznetsov開發(fā),支持Windows、Linux和蘋果Mac Os三個(gè)平臺(tái)。而且提供了Eclipse平臺(tái)下的插件JD-Eclipse、IntelliJ的插件JD-IntelliJ。JD-GUI不需要安裝,直接點(diǎn)擊運(yùn)行,可以反編譯jar,class文件。
最新版本1.4.0,官方網(wǎng)站:http://jd.benow.ca/。
2、Java 反編譯器 procyon-decompiler及其window下獨(dú)立UI工具luyten
Procyon-Decompiler支持JDK1.8類的反編譯,在很多方面做得非常不錯(cuò),如反編譯匿名類、內(nèi)部類、Java8 Lambda等等。Procyon-Decompiler支持JDK1.8類的反編譯,在很多方面做得非常不錯(cuò):字符串的Switch、枚舉聲明方面、注解方面、匿名類、內(nèi)部類、Java8新接口規(guī)范、Java8 Lambda表達(dá)式、Java8 方法傳遞等。
luyten是Procyon的GUI,是一款操作簡(jiǎn)單、功能實(shí)用的java反編譯工具,軟件支持*.JAR、*.zip、*.class等類型文件的反編譯操作,還原度非常高,支持更多功能設(shè)置,如顯式導(dǎo)入、類型、合成組件等等,用戶可根據(jù)不同的需求選擇合適的顯示項(xiàng)目,結(jié)果更明了。
luyten的最新版本0.53,官方網(wǎng)址:https://github.com/deathmarine/Luyten,只需要下載luyten即可,不用下載Procyon。Procyon最新版本0.5.30。
3、Android反編譯gui工具Jadx
jadx是一款A(yù)ndroid反編譯gui工具,它支持apk、dex、jar、class、zip、aar等文件。jadx操作方便,反編譯后的代碼可讀性高,同時(shí)還擁有較完善的gui界面,除去混淆部分的代碼,jadx已經(jīng)非常接近源代碼了。
Jadx最高版本v0.7.1,官方地址https://github.com/skylot/jadx/。
三個(gè)工具中JD-GUI打開jar文件反編譯速度飛快、luyten次之、Jadx最慢(有時(shí)候需要等好一會(huì),喝杯咖啡先)。三者都會(huì)遇到反編譯不出來的情況,建議配合使用。
到此這篇關(guān)于2020年支持java8的Java反編譯工具匯總(推薦)的文章就介紹到這了,更多相關(guān)支持java8的Java反編譯工具內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:https://blog.csdn.net/yannqi/article/details/80847354