站??航 : 主頁 .為什么.NET程序需要保護


    NET 是 Microsoft 推出的新一代戰略框架,也是 Microsoft 未來 10 年的戰略規划中重要組成部份。通過短短几年的發展, .NET 已經在桌面應用、 Web 應用、企業級應用乃至移動應用等開發領域得到了廣泛的使用,眾多開發人員和專業公司已將 .NET 作為首選的開發平台。一個全新的 .NET 時代正在越來越清晰地呈現在我們面前。

  易學易用的開發工具、多元化語种、高開發效率、統一編程模型,統一運行庫給 .NET 應用開發人員帶來了很多惊喜。可是, .NET 上最突出的架构特性 MetaData (及相關的 IL 運行机制)在提供了超乎尋常的便利的同時,也帶來了一個非常敏感的缺點 ──.NET 程序集可被非常容易地反編譯,而這個缺點也成了許多重視知識產權保護的 .NET 應用開發者心中最大的顧慮之一。

下面,我們更深入一點,解釋為什么 .NET 為什么容易被反編譯。

.NET 家族成員寵大,其中有著名的 C# 、傳統的 VB.NET 、永不裉色的 C++/CLI 等多名強大的家族成員。它們雖然各自有自己的特色,但在被編譯器編譯后統統變成了 .NET 家族中最基礎的中間語言 MSIL 語言。并在程序集中添加了 MetaData 的信息數据。

MetaData 是一個好東西,它記錄了程序集中的每一個細節,使程序集象一個關系數据庫一樣,可以找到任何想要的東西。正是在這樣的前提下, .NET 才能夠做到与平台無關性。再加上 MSIL 這個新生儿的語言特點。它不在是低級的匯編語言,它也算是一個高級的語言,因為里面已經有類的概念,在執行時才由 Jit 動態的將 MSIL 編譯為本地的匯編碼并執行。

所以,在有經驗和工具人的面前即可得出以下公式: MSIL + MetaData = 源代碼

著名的反編譯工具就有: Reflector ,而且它是完全免費的。 Microsoft 也提供一個反編譯工具 Ildasm ,不過它只能反編 .NET 程序集為 MSIL 代碼。

Microsoft 并不是不知道 .NET 很容易的可以還原成源代碼,只是因為在多年的實踐經驗中,發現市場需要的更多的是穩定和效率。再迫于 Java 這种虛擬机平台的壓力,所以最終生產出了 .NET 這樣的東西。

綜上所述 .NET 是迫切需要保護的,不管是那里,都有知識產權的案件。您可以試想一下,當您發布的程序可以被別人反編譯,或是非常容易的去修改。那么給您帶來的潛在威協可能不能用金錢來給予計算了。

赶快拿起武器保護自己的產品吧