2009-11-28 63 views
3

我該如何保護我的程序集,因爲一旦我部署了安裝程序, 程序集也將被部署,並且用戶將有機會從Program Files獲得程序集,並且可能會添加對其他任何項目的引用或創建新的項目在上面 !任何解決方案或幫助,將不勝感激謝謝。如何保護我的裝配體被其他人使用?

回答

4

您可以使程序集內部的所有成員都在內部,並且只允許其他人在InternalsVisibleToAttribute中使用它。但是如果有人足夠執着,就沒有辦法阻止他們使用它。

2

你可能會obfuscate你的程序集的代碼將使得使用它的任務變得更加困難,但是你沒有太多的工作可以100%阻止用戶選擇程序集並使用。你可以做的不是在用戶計算機上部署程序集,而是通過Web服務提供功能。

2

你不能完全防止這種情況。但是你可以用這樣的方式混淆你的程序集,使得暴露的類和方法沒有任何合理的名稱。

一個這樣的混淆器是開源並稱爲obfuscar。一個持續的項目可以在這裏找到under this link

1

沒有簡單的方法。你只能讓它變得更加困難。如果你的算法非常獨特和珍貴[1],使得它們不可能被第三方使用(或偷看),你唯一的選擇是將邏輯放在遠程位置(位於服務器後面)並讓你的程序叫它。

[1]在我卑微的經歷中,從來不是這樣的。

0

您可以使用ILmerge將程序集合併到可執行文件中,然後使用模糊處理來保護整個程序包(.NET可執行文件可以視爲可以鏈接到的程序集)。

0

雖然它顯然不安全 - 您仍然需要在某處存儲解密密鑰 - 它可以很好地加密磁盤上的DLL,然後加載它們並在內存中解密。

如果您將AppDomain.CurrentDomain.AssemblyResolve與自定義處理程序掛鉤,則甚至可以透明地執行此操作 - 當程序集嘗試加載特定的DLL時,它會失敗,處理程序觸發並從加密的DLL加載程序集。

我還沒有發現這種方法的任何問題。另外,如果你只是擔心人們在自己的項目中使用完成的DLL,那麼可以在代碼中添加一些堆棧檢查,以及解析正在運行的程序集並對其執行散列檢查。但是,這兩種對策都可以很容易地從DLL中編輯出來。

相關問題