你好,我對這一切都不太熟悉,但我想知道:因爲你知道有很多反編譯器可以讓java反編譯.class文件爲.java文件。我真的很想知道反編譯器背後的邏輯是什麼?我知道當我們編譯一個java代碼時,首先它被轉換爲字節代碼,然後轉換爲機器代碼。我認爲反編譯器將字節碼轉換爲java代碼。實際上我想知道反編譯的一部分是反編譯器,還是隻是一個簡單的解密?如果是這樣,該怎麼辦?謝謝你的答案..java反編譯器
Q
java反編譯器
-1
A
回答
2
當你編譯java代碼時,它被轉換成字節碼。它是不是轉換成機器碼。
當您閱讀足夠多的java字節碼時,您可以輕鬆猜出源代碼的樣子。有些部分你不能重建,但很多部分可以。
例如(使用僞Java字節碼)
push int 5;
push int 10;
add int
store int local 4;
將大致轉換爲
int (the fourth local "something") = 5 + 10;
反編譯器試圖在字節碼匹配模式來可能結構在Java源代碼會生成相同的字節碼。有時後面的映射難以置信,但對於Java來說,這非常容易。不用說,在編譯過程中會丟失一些信息。局部變量名稱並不總是需要正確的操作(所以他們可能會被丟棄)。評論通常也不存在。參數名稱通常不需要。反轉的程序在功能上與原來的程序相似。
逆向工程是一個鬆散應用的術語,不僅包含反編譯。反編譯被認爲是複製,並且一些反向工程技術不被認爲是複製。無塵室逆向工程涉及到
- 測試未知軟件,注意其行爲。
- 編寫捕獲未知軟件所需行爲特徵的文檔(或單元測試)。
- 創建一個新的軟件,通過捕獲的測試。
正如你所看到的,使用這種技術沒有原始源的複製。事實上,爲了確保沒有直接複製的要求,通常步驟3中涉及的人不是參與步驟1和步驟2的人。
-1
反編譯器很適合使用你沒有源代碼的庫。 Eclipse有一個很好的自動插件。
相關問題
- 1. Java反編譯器
- 2. 的Java反編譯器和Java反編譯
- 3. java webstart反編譯器
- 4. Java,反編譯器故障
- 5. netbeans的Java反編譯器
- 6. java反編譯
- 7. Fernflower Java反編譯器幫助
- 8. 我需要一個Java反編譯器
- 9. 用於eclipse的java反編譯器
- 10. 反編譯器支持Java 8?
- 11. Fernflower和IntelliJ IDEA的java反編譯器
- 12. MIPS反編譯器
- 13. .dll反編譯器
- 14. ANN反編譯器?
- 15. 如何反編譯jd-gui反編譯器無法反編譯的Java類文件?
- 16. 從反編譯java代碼
- 17. 如何反編譯java包?
- 18. Java反編譯和JNI
- 19. Java不反編譯正確
- 20. 反編譯java類文件
- 21. Android L編譯器防止反編譯?
- 22. 關於編譯器和反編譯
- 23. Java編譯器
- 24. 的Java反編譯器和編輯器快速修改
- 25. 如何理解我的vb反編譯器已經反編譯
- 26. Objective C反編譯器
- 27. 反編譯器在Xcode中?
- 28. 反編譯器python等
- 29. Google Closure反編譯器?
- 30. Flash cs5反編譯器?
對不起,這不是答案:) – HexagonSun 2012-03-27 15:52:38