2010-11-16 51 views

回答

3

使用它有什麼缺點(除了功能被添加到類,從源代碼不明顯)?

有一件事是通過字節碼操作創建的錯誤可能更難以診斷。對源代碼和源代碼級別的調試將更加困難。

不會造成問題,安全性,

檢驗者應該(理論上)防止修改後的字節碼,可以打破核心類型系統和破壞JVM。 (不用說,不可信的代碼不應該被允許進行字節碼修改,所以我們可以打折這種情況。)但是,在過去,一些Java字節碼驗證程序一直不夠徹底。

此外,字節碼修改:

  • 使得它更難做一個適當的源代碼基於安全性分析,和
  • 可能抵消利用一個靜態分析工具的(有限的)安全性好處,如FindBugs的。

序列化等?

字節碼修改可以做的事情,使現有的序列化的對象可以被修改的類讀取;例如通過添加和刪除字段,或通過更改類的超類和接口。但是,您可以通過更改源代碼來執行相同的操作。