我可以使用什麼程序來反編譯類文件?我真的會得到Java代碼,還是隻是JVM彙編代碼?如何「反編譯」Java類文件?
關於本站點上的Java性能問題,我經常看到有人對Java類文件進行了「反編譯」,以瞭解編譯器如何優化特定的東西。
我可以使用什麼程序來反編譯類文件?我真的會得到Java代碼,還是隻是JVM彙編代碼?如何「反編譯」Java類文件?
關於本站點上的Java性能問題,我經常看到有人對Java類文件進行了「反編譯」,以瞭解編譯器如何優化特定的東西。
更新2016年2月:
www.javadecompilers.com名單JAD的存在:
最流行的Java反編譯器,但主要只是這個時代的。用C++編寫,非常快速。
過時,不支持,不正確編譯Java 5的,後來
所以你的里程可能與近期的JDK變化(7,8)。
相同的網站列表其他工具。
而且javadecompiler,由Salvador Valencia在the comments(9月2017)指出,提供在那裏你將.class
文件上傳到雲中的SaaS和返回你反編譯的代碼。
原來的答覆:2008年10月
Java Decompiler(另一種快速的Java反編譯器)有:
它的工作原理與JDK 1.1.8編譯器高達JDK 1.7.0,和其他人(Jikes,JRockit等)。
它具有實際功能完全正常的在線live demo version!您只需在頁面上放置一個jar文件,然後查看反編譯的源代碼,而無需安裝任何內容。
+1值得一提的是它也是模塊化的,所以核心(用C++ )可以在其他地方使用。 – 2010-05-05 04:02:28
jd-gui-0.3.3也可以[這裏](http://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zip&can=2&q=) – amaidment 2012-07-03 07:55:16
要查看Java源代碼,請查看一些反編譯器。去搜索jad。
如果要查看字節碼,只需使用javap隨JDK提供。
我會推薦其中一個開源反編譯器,因爲它們是積極開發的。使用[Procyon](https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler),[CFR反編譯器](http://www.benf.org/other/cfr/)或[Krakatau]( https://開頭github上。com/Storyyeller/Krakatau)(Python)。 – 2013-08-22 11:26:40
有幾個程序可以使用。您將獲得實際的Java代碼,但有時代碼會被混淆,因此方法以一個字母或數字或隨機組合的字母和數字命名。
有一個Eclipse插件,jadeclipse。這很不錯。
Soot是較新Java代碼的選項。至少它的優勢仍然是最近維護...
另外,Java Decompiler是一個反編譯器,同時具有獨立的GUI和Eclipse集成。
最後,Jdec還沒有被提及,雖然它沒有像其他選項一樣精緻。
JAD是一個工作,很簡單。
另外,如果你只是想看到的方法,使用javap。
到目前爲止所列出的所有JAD鏈接似乎都被破壞了,所以我找到了這個網站。很好用(至少對於Linux來說)!在Ubuntu 11.10上,我不得不下載任何原因的靜態文件。
如果你想看到Java編譯器如何做某些事情,你不想反編譯,想要拆卸。反編譯涉及到將字節碼轉換爲Java源代碼,這意味着很多低級信息都會丟失,如果您想知道編譯器優化的問題,這可能是您感興趣的信息。
無論如何,我會發生寫了一個open source Java disassembler。與Javap不同的是,即使在高度病態的類上也是如此,所以你可以看到什麼模糊處理工具正在爲你的類做些什麼。它也可以反編譯,儘管我不推薦它。
Procyon包括反編譯器。這是FOSS。
JAD不適用於我(Ubuntu 11.10版本),所以我已經向前移動並在JODO上擦拭。至少它有Open Java源代碼,並且能夠正確地反編譯我的.class。
我推薦先查看'branches/generic'分支。樹幹不穩定。
我試了幾次,而Procyon似乎對我最好。它正處於積極的發展階段,並且支持最新版本的Java的許多功能。
這是我試過的人:
-skip
命令行標誌,因此它不會因錯誤而停止。積極開發,有趣的是它是用Python編寫的。這裏是爲2015年2月的反編譯器的列表:
南河,開源,https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler
CFR,自由,沒有可用的源代碼,http://www.benf.org/other/cfr/
JD,免費用於非商業用途僅有英文,http://jd.benow.ca/
Fernflower,開源,https://github.com/fesh0r/fernflower,
JAD - 在這裏給出的只是由於歷史的原因。免費,無源代碼可用,http://varaneckas.com/jad/ 過時,不受支持,並且不能正確反編譯Java 5及更高版本。
你可以在線測試上述反編譯器,不需要安裝,並做出自己的教育選擇。
的Java反編譯器在雲:http://www.javadecompilers.com/
對於OSX,我建議:jarzilla或JD-GUI
它們都允許您查看罐子,戰爭等。文件內容並反編譯其中的任何類文件。
Jarzilla:https://code.google.com/p/jarzilla/
JD-GUI:http://jd.benow.ca/
隨着AndroChef Java Decompiler可以APK反編譯,DEX,罐子和Java類文件。這很簡單,容易。 AndroChef JD基於FernFlower。你可以評估它在10個免費的用途。
AndroChef支持Java語言功能,如泛型,枚舉和註釋。根據一些研究,AndroChef Java Decompiler能夠反編譯傳統Java編譯器生成的Java應用程序的98.04% - 具有非常高的恢復率。這是一個簡單但功能強大的工具,它允許您將Java和Dalvik字節碼(DEX,APK)反編譯爲可讀的Java源代碼。
在IntelliJ IDEA平臺上,您可以使用Java Decompiler IntelliJ Plugin。它允許你在調試過程中顯示所有的Java源代碼,即使你沒有全部。它基於着名的工具JD-GUI。
「反編譯」的藝術也可以被認爲是逆向工程。儘管有時在逆向工程時,您並不總是可以訪問二進制文件。 – Makach 2009-06-13 10:53:08
沒有人提到https://bytecodeviewer.com/,它可以反編譯爲java源代碼和字節碼(對於java源代碼是基於JAD的)。 – 2018-01-08 16:32:44