2010-03-30 51 views
6

我曾經在JavaScript中工作過很多,有一件事情讓我的僱主非常困擾,那就是源代碼太容易被竊取。即使混淆,也沒有什麼幫助,因爲我們都知道任何有能力的開發人員如果願意,都可以閱讀該代碼。無法保護.net代碼(知識產權)?

JS腳本是一回事,但那些在IP(知識產權)上投入了數百萬美元的SOA項目又如何呢?我喜歡.net,特別是C#,但是最近我不得不回答這個問題:「如果我們將這個編譯好的程序交給我們的客戶,他們的開發人員是否可以逆向工程?」我花了我的方式來混淆代碼,但我知道這對另一個確定的C#開發人員來說並不那麼重要。

所以我認真地提出這個問題,是不可能保護.net代碼?

的考慮,我必須爲如下:

  1. 即使正規機可執行程序可以逆轉,但不是每個開發人員都有的技能才能夠做到這一點。拆解本機可執行文件比.net程序集要困難得多。
  2. 混淆只會讓你到目前爲止,但它確實有一點幫助。
  3. 爲什麼我從未見過微軟公開承認任何用.net編寫的東西都會遭受相對容易的IP盜竊?爲什麼我從來沒有在任何微軟網站上看到過反補貼培訓?爲什麼VS將社區混淆器作爲可選組件提供?好吧,也許我剛剛在這裏遇到了沙子,但是它在大多數開發者優先級列表中並不是很高。
  4. 是否有任何計劃來解決我在任何未來版本的.net中的擔憂?

我不是敲的.net,但我想一些現實的答案,謝謝你,問題標記爲主觀和社區!

+2

我一無所知.NET,但我知道,這是非常困難的帶來新的開發人員能夠對速度有複雜的項目,即使你盡你所能去幫助他們。大型項目已經死亡,因爲太多的開發人員立即離開了;當文化迷失時,代碼就像一百萬頁的象形文字。一個競爭對手可能偷一兩招,但他們可以做些什麼,以及看你的代碼* *的行爲,並從頭開始實現它。 – Beta 2010-03-31 00:07:52

回答

10

所有代碼都可以進行反向設計。

.NET爲此降低了酒吧(只需嘗試Reflector!),但混淆會將其重新提升。一個好的混淆器將會提升到足夠高的水平,以防止所有人,而不是一個非常敬業,有動力的人逆向工程你的代碼。

這就是說,我個人更喜歡關注質量。我運行一個小型獨立軟件開發商,我們使用.NET - 混淆非常重要,但是如果您可以交付高質量的產品,那麼如果有人試圖對您的代碼進行反向工程,那真的無關緊要。

甚至,假設,如果他們能逆向工程的一切,用一個複雜的項目,他們會落後數年的競爭優勢在市場上真正提供的東西......

+1

同意在反射器,正確的理由偉大的工具!你提到你使用了一個好的混淆器,你介意包括一個鏈接嗎? – 2010-03-31 00:00:45

+1

Dotfuscator的是一個我聽到的最大約... http://www.preemptive.com/products/dotfuscator/overview – tbischel 2010-03-31 00:06:43

+0

Dotfuscator的的最常見的,和一個非常好的一個。儘管如此,任何對.NET混淆器的搜索都會變成一堆...... – 2010-03-31 00:23:45

1

任何代碼可以反向工程。是的,在.NET或Java中比在高度優化的C++中更容易,但比使用Javascript或PHP更簡單。混淆對減少漏洞有很大的幫助,但事實是,無論你如何隱藏代碼,確定的逆向工程師都會在代碼掌握之後找到你的祕密。充其量只會讓他更加討厭。

好的混淆工具將停止那些專業開始和結束於Reflector的休閒程序員,從而真正瞭解代碼的工作原理。除此之外,你所做的任何事情都是絕望的。

我沒有看到這個變化隨時在不久的將來,因爲.NET的,使得它很容易進行反向工程的特點是允許強大的反射和活力的框架相同的功能。