一款高度還原java的開源獨立反編譯器---具有圖形化界面
官網:http://java-decompiler.github.io/
第一印象
logo:
軟件截圖:
網站截圖
相關介紹
下載:官網直接下載,注意有薔。https://github.com/java-decompiler/jd-gui/releases、https://github.com/java-decompiler/jd-core、
https://github.com/java-decompiler/jd-eclipse/releases
存儲庫:github(https://github.com/java-decompiler)
版本:JD-Core,JD-GUI、JD-Eclipse,windows、linux、osx
JD-GUI是一個獨立的圖形實用程序,顯示“ .class”文件的Java源代碼。您可以使用JD-GUI瀏覽重建的源代碼,以立即訪問方法和字段。
JD-Eclipse是Eclipse平台的插件。它允許您在調試過程中顯示所有Java源代碼,即使您沒有全部源代碼也是如此。
JD-Core是一個“ .class”文件重構Java源代碼的庫文件。JD-Core可用於恢復丟失的源代碼並探究Java運行時庫的源碼。支持Java 5的新功能,例如注釋,泛型或“枚舉”類 型。JD-GUI和JD-Eclipse都包含JD-Core庫。
版本日期:1.6.6(2019.12.25)
編寫語言:java
兼容性:優,與當前絕大多數編譯器兼容,其中包括:
- JDK 1.1.8, JDK 1.3.1, JDK 1.4.2, JDK 1.5.0, JDK 1.6.0, JDK 1.7.0, JDK 1.8.0, JDK 9.0.1, JDK 10.0.2(Oracle JVM收購自sun的正統)
- jrockit90_150_06(Oracle 優化的JVM)
- jikes-1.22(IDM JAVA)
- harmony-jdk-r533500(apache jdk 已廢棄,我怎么突然看到了鴻檬,雖然不是華偉的鴻檬,但是我猜測有可能基於這個JDK開發的,因為安卓早間也是用的Oracle JVM開發的,被Oracle告,被強行收取了一波官司費,不過現在的安卓雖然是基於jdk的但是核心代碼沒有用Oracle 的,而是自己實現的,除了api接口還是用Oracle 的,其余代碼都實現了私有,其實安卓核心來講就是 改的面目全非的linux+私有JDK+私有驅動程序+在JDK上運行的APK,apk的本質還是java,安卓的核心代碼都沒有開源,只是開源了開發要用到的東西,沒有完全開源的軟件我個人認為就是閉源的,為什么安卓基於linux開發的系統卻可以不開源,谷鴿很雞賊,為了避免開源,安卓在linux上自己實現了一套系統調用,這個系統調用就必須開源,這樣在linux系統上的軟件就不用開源了,因為安卓本質上就不是操作系統,是一個中間層,類似java一樣,也正因如此才可以想卡誰的脖子卡誰的脖子。為什么要沿用類java來構建安卓,因為Java起初就是為嵌入式而開發的軟件,java生態環境已相當成熟,基於java可以省好多事,安卓只要專注於界面就好了。手機開源操作系統絕對不是安卓一家,隨着安卓的不斷閉源,將有其他的開源自由手機操作系統隨之崛起)
- Eclipse Java Compiler v_677_R32x, 3.2.1 release
文檔:無
源作者:Emmanuel Dupuy
開源 是
版權 GPLv3
盈利方式:捐贈
優點:jd-gui的最強大的地方就是引擎jd-core十分強勁,准確且快。在遇到錯誤時會注釋匯編代碼的形式展示錯誤內容。還有一個較為直觀的界面,用java開發具有了跨平台特 性,主流操作系統都可以使用。
缺點:功能較為單一,只能反編譯后查看源碼內容
快速上手
jd-gui支持的格式有aar、class、ear、jar、java、jmod、log、war、zip、kar
JD-GUI的安裝方式
免安裝,要先裝好java環境
JD-Eclipse的安裝方式
- 下載JD-Eclipse ZIP文件,
- 啟動Eclipse,
- 點擊“幫助>安裝新軟件...”,
- 在對話框窗口中拖放ZIP文件,
- 選中“ Java Decompiler Eclipse插件”,
- 點擊“下一步”和“完成”按鈕,
- 由於未簽名“ org.jd.ide.eclipse.plugin_x.yzjar”,因此出現警告對話框。單擊“仍然安裝”按鈕。
使用方法
JD-GUI程序雙擊執行或命令行執行 "java -jar jd-gui-x.y.z.jar" 或 "java -classpath jd-gui-x.y.z.jar org.jd.gui.App",前提是系統要裝有java環境。直接打開目標文件或拖放。使用非常直觀,代碼中的下划線就是交叉引用的下文,就是被調用者的地方。刪除所有文件即可卸載
詳細講解
如何源碼構建JD-GUI?
> git clone https://github.com/java-decompiler/jd-gui.git > cd jd-gui > ./gradlew build
生成文件到:
- "build/libs/jd-gui-x.y.z.jar"
- "build/libs/jd-gui-x.y.z-min.jar"
- "build/distributions/jd-gui-windows-x.y.z.zip"
- "build/distributions/jd-gui-osx-x.y.z.tar"
- "build/distributions/jd-gui-x.y.z.deb"
- "build/distributions/jd-gui-x.y.z.rpm"
如何擴展JD-GUI插件?
> ./gradlew idea
生成Idea Intellij項目
> ./gradlew eclipse
生成Eclipse項目
> java -classpath jd-gui-x.y.z.jar;myextension1.jar;myextension2.jar org.jd.gui.App
使用您的擴展程序啟動JD-GUI
擴展閱讀
衡量一個反編譯查看器是否優秀的唯一標准就是反編譯 引擎/內核/核心 能否高度還原出源碼(以后統一叫引擎)。其次支持的二進制文件格式是不是夠多、支持大文件、多引擎支持、是否跨平台、有沒有圖形界面、是否直觀易讀(語法高亮、目錄層級顯示、顯示調試信息比如代碼行或源文件名、注解等等)、是否具有一定容錯性(不要反編譯一半就掛了)、是否開源、有沒有交叉引用(調用者和被調用者)、強大的搜索功能、是否可編輯(目前的反編譯器都不可編輯,不能直接編輯源碼或二進制代碼),有沒有調試功能、是否具有可擴展性(比如添加自己的反編譯支持格式等)。
什么是編譯、鏈接、執行、
百毒知道
什么是反編譯器和反匯編器
百毒知道
什么是調試器和反調試
百毒知道
什么靜態分析和動態調試
百毒知道
什么是反調試和反反編譯和加固和加殼和混淆
反調試就是阻礙調試進程的內容,加固指定的就包含反調試、反反編譯、加密字符串等一切阻礙反編譯進行的技術。加殼就加固的一種快速方法,可以瞬間保護可執行代碼無需提供源碼。混淆也是一種加固方法,指的是將字符串加密、函數名隨機化、函數結構扁平化的初步加固處理。
什么調試信息和代碼行
在編譯完成后會存留有多余代碼,方便調試使用。其中有個信息是代碼行,它反映了這行代碼在源碼中的大致位置。
什么GUI和CLI
百毒知道
什么獨立軟件
獨立軟件就是不依賴任何第三方軟件的軟件,包括核心和GUI
常見的反編譯器有哪些?
JD-Core 、CFR、Dava、FernFlower、JaDx、Jode、Krakatau、Procyon
什么是java、jdk、jre、字節碼?
百毒知道