我不太瞭解CIL,除了在組件中有記錄類型信息的元數據。
是否可以創建一些反射工具,它能夠讀取C#或VB.NET程序集並更改其元數據,以便所有類成員都變爲公共的?
會很簡單嗎(例如,更改CIL中每個方法的一個或兩個字節)?理論上可以操縱一個.NET程序集,以便所有東西都變成公共的嗎?
2
A
回答
3
是的,這是可能的,但它並不總是安全的。野外的代碼使用Reflection API來查找類型,方法,字段等。如果代碼明確尋找非公有的代碼,將它們公開將會破壞代碼。同樣,如果代碼尋找公共代碼,並期望不包含非公共代碼,再次公開代碼將會破壞代碼。
我所知道的最好的工具是Mono.Cecil,它是一個可以讀取,操作和編寫.NET程序集的開源庫。
0
0
如果組件具有強名稱,那麼您將無法用您的修改後的部件替換原件。
1
舉例說明:當您使用調試器時,您可以看到對象的私有成員,包括從其他程序集導入的對象。
相關問題
- 1. 所有程序都可以轉換爲程序集嗎?
- 2. 程序可以在另一個文件中寫入東西嗎?
- 3. 有人可以解釋一下:東西變量=新東西();?
- 4. 無論任務失敗,都可以運行處理程序嗎?
- 5. VS如何構建一個項目,以便所有類都成爲同一個程序集的一部分?
- 6. 所有的JavaScript功能都可以在理論上被Silverlight取代嗎?
- 7. 幾個程序集可以擁有相同的公鑰嗎?
- 8. 所有語言都可以移植到.NET上嗎?
- 9. 我的.NET應用程序中的所有類都可以是內部的嗎?
- 10. Flash中的所有東西都變成灰色
- 11. 使紅色線內的所有東西都變成紅色
- 12. .NET 4.0程序集可以用於.Net 3.5應用程序嗎?
- 13. getElementById可以在文檔以外的東西上調用嗎?
- 14. 可以寫這樣的東西嗎?
- 15. 一個類可以有公共和私有構造函數嗎?
- 16. 多個JVM進程可以共享公共類的內存嗎?
- 17. 如何安裝擴展程序以便所有用戶都可以訪問它?
- 18. .Net 4.5中的新東西可以處理更好的JSON?
- 19. 我可以將.net程序集版本翻譯成日期嗎?
- 20. 可以覆蓋.Net程序集上的訪問限制嗎?
- 21. 一個Procfile可以有評論嗎?
- 22. 幾個WCF服務可以共享一個公共BaseAddress嗎?
- 23. Maude-system可以有一個操作有兩個以上的操作數嗎?
- 24. 返回活動單元格的列索引,以便它可以被操縱以形成一個新的範圍
- 25. 有人可以在這個ANR日誌上點亮一些東西嗎?
- 26. 我可以操縱變量在Java中變化的方式嗎?
- 27. 我可以迴應一個SQL查詢之間的東西嗎?
- 28. 我可以在派生類中創建一個公共成員變量private嗎?
- 29. 我如何將我的程序變成我可以安裝的東西?
- 30. 我可以爲我的所有Web應用程序共享一個類嗎?
微軟也正在(緩慢)開發[Common Compiler Infrastructure](http://ccimetadata.codeplex.com/),它與'Mono.Cecil'非常相似。 – 2010-08-08 17:53:41