我試圖找到一個Java反編譯,就像SWF的反編譯器,它允許編輯和重新編譯源,而無需任何地方導出,並執行任何外部的行動。我想要的是非常快速地對.jars進行一些小修改並保存,而不需要花費額外的時間用其他工具手動重新編譯java代碼。是否有像這樣的反編譯器?是否有類似的東西(比如.class變量編輯器)和是否可以製作像swf-decompiler這樣的Java反編譯器?的Java反編譯器和編輯器快速修改
回答
推薦一個工具是offtopic,但對於它是否是可能的問題,答案是yes和no。
的Java相對反編譯友好,所以對於簡單的情況下,應該可以創造這樣的一個工具。但是,有一些功能或模式會影響當前的反編譯器,並且考慮到語言的複雜性,不太可能有一種反編譯器能夠可靠地繞過任意的Java。
此外,雖然編譯Java比C損失少了很多信息,但它確實丟失信息。很明顯,你會失去一些東西,比如註釋和空白,但是在默認設置下,你會失去更多的東西:局部變量名稱,標誌和類型,泛型類型,編譯時間註釋等等。在某種程度上出於反思的目的,並且將-g
標誌傳遞給編譯器可以強制它保存更多信息,但是不能完全恢復。
因此,在短期,你可以做一個合理的工作的大部分時間,但你不能永遠做它完美的所有時間。
另請注意,這是爲自己編寫的普通Java編寫的。如果這些類文件最初不是用Java編寫的,或者它們完全被混淆了,那麼您可能會忘記重新編譯。即使反編譯器產生可讀輸出,輸出也不可能被重編譯。
如果你想修改任意罐子,你需要的是一個反彙編器和彙編。我所知道的最好的是Krakatau(披露:我寫的)。這樣做的好處是它可以用於任何類文件,即使它們被混淆了。但是,它根本不是用戶友好的。如果你不知道如何繞過類文件格式和字節碼,那麼你將無法做出微不足道的改變(例如更改常量字符串)。
根據我的理解,有可能在Java字節碼中表達功能,這些功能不能用Java語言輕鬆表達。有關這方面的一些見解,請參閱http://www.sable.mcgill.ca/publications/papers/2002-2/sable-paper-2002-2-slides.pdf。 –
@ThorbjørnRavnAndersen我很清楚這一點。 – Antimony
其他人可能不是。 –
- 1. 的Java反編譯器和Java反編譯
- 2. Java反編譯器
- 3. java反編譯器
- 4. 快速YUI編輯器
- 5. netbeans的Java反編譯器
- 6. Fernflower和IntelliJ IDEA的java反編譯器
- 7. java webstart反編譯器
- 8. Java,反編譯器故障
- 9. 修改jqGrid編輯器
- 10. 關於編譯器和反編譯
- 11. Objective-C編譯器和編輯器
- 12. Scala的快速文本編輯器 - Windows
- 13. 反編譯,修改和重新編譯android apk
- 14. MIPS反編譯器
- 15. .dll反編譯器
- 16. ANN反編譯器?
- 17. 爲什麼Java編譯器的工作速度如此之快?
- 18. 用於eclipse的java反編譯器
- 19. layout.xml文本編輯器修改的Android
- 20. 修改Ace編輯器的線槽div
- 21. Java編譯器
- 22. Exe&Dll分析器和反編譯器
- 23. 編輯快速編輯文本
- 24. Android L編譯器防止反編譯?
- 25. C編輯器或Windows CE編譯器
- 26. 將編譯器與編輯器關聯
- 27. 修改反編譯後的SWF
- 28. C編程修改快速排序
- 29. Java編譯器和§(alt + 21)
- 30. 如何使用scala內部編譯源比fsc快(快速scala編譯器)
你做了什麼研究嗎? https://duckduckgo.com/?q=java+decompiler+and+editor ...而要求推薦一個工具的問題對於stackoverflow來說是不太合適的。 – clcto
我不是要求推薦的工具,我想知道它是否可以在Java中使用 – Victor2748
只需在啓用了調試的JVM中熱調整原始源代碼中的更改有什麼問題? –