2014-01-30 22 views
0

我有以下情形的源代碼編譯:
我需要動態編譯在客戶端機器的組件,所以目前我正在與我的主可執行沿部署的組件的源,然後使用的MSBuild到將源代碼動態編譯爲程序集。
由於我不想公開分發我的源代碼以及應用程序,我正在考慮運送加密的源文件,然後在構建之前在客戶端機器上解密它。但即使在這裏,任何人都可以在解密點後停止執行,並且在編譯和刪除源代碼之前,我的源代碼將在那裏解密。
有沒有一種方法可以保護我的來源,同時在客戶位置進行編譯? PS:我知道最好不要再擔心源代碼被盜,但我也不想讓它很容易地被腳本小子使用。


編輯:我可能需要一個混淆工具源代碼轉換成混淆代碼(不混亂組裝)。然後,我可以將這個混淆代碼與我的應用程序一起發佈,然後即時編譯它。動態解密和

回答

1

你可以利用ObfuscationObfuscation in .NET),這基本上會讓你的代碼難以理解爲人類的讀者。

如果仍然不能爲您解決問題,那麼您可以考慮將您的邏輯創建爲Web服務,然後您只需公開您的API而不是整個解決方案。這就是說,這很可能最終會成爲更多的工作,因爲你將不得不創建一個將消耗你的Web服務的客戶端應用程序。

編輯: 根據你的評論,你可能想看看this MSDN頁面展示瞭如何可以混淆處理通過調用Dotfuscator自動化。這應該隨你的IDE自由發佈。就我而言,我有一個MSI文件(我想你需要先安裝它)位於:{VS2010 ISO}\WCU\Dotfuscator\DotfuscatorCE.msi

+0

對於混淆的一部分,我需要一個免費的工具,它通過提供模糊一個API或命令行,因爲我需要通過代碼來完成。我不知道有任何這樣的混淆器。如果你知道的話,請告訴我。 而我不希望涉及Web服務。 –

+0

@HarshMaurya:我已經更新了我的答案。 – npinti

+0

謝謝,只有一件事,我是否有權將其發送到客戶端計算機? –

1

隨機建議:

對於稍微隱藏代碼,你可以把它嵌入的資源投入到你的組件和之前保存編譯。

作爲額外的步驟,您可以保存爲IL而不是C# - 可能會更痛苦,但難以閱讀(特別是如果您使用IL的混淆代碼)。

或者使用CodeDOM或IL構建器直接從代碼創建程序集。

事實上,這可能是更好的重新組織代碼,這樣你就不會需要包括你的代碼在所有的,只是添加客戶端的代碼...

+0

我確實將其隱藏在資源內,但這不是解決方案。 IL代碼可以輕鬆地反編譯成任何符合CLS的語言。 –