我該如何保護我的程序集,因爲一旦我部署了安裝程序, 程序集也將被部署,並且用戶將有機會從Program Files獲得程序集,並且可能會添加對其他任何項目的引用或創建新的項目在上面 !任何解決方案或幫助,將不勝感激謝謝。如何保護我的裝配體被其他人使用?
3
A
回答
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中編輯出來。
相關問題
- 1. 如何保護Java庫不被其他項目使用?
- 2. 保護裝配?
- 3. 如何保護我的Azure web角色不受其他人的影響?
- 4. 如何保護我的進程被殺?
- 5. 我可以使用.htaccess文件來保護我的計算機上的文件夾(使用MAMP)從我的網絡上的其他人進行保護嗎?
- 6. 保護我的私人API
- 7. 保護PHP文件不被其他網站調用
- 8. 什麼保護Android AccountManager密碼不被其他應用讀取?
- 9. 如何使用捆綁程序安裝其他配置的gem?
- 10. 訪問受保護的Java中的其他包裝
- 11. 如何保護其他應用程序可以訪問的webapp?
- 12. 如何在Android中保護其他應用程序的圖像?
- 13. 如何保護文件,使其只能被java訪問?
- 14. 如何讓其他人使用ssh連接到我的電腦?
- 15. 如何保護課程,使其在包裝外不可見
- 16. 保護PHP文件以在其他人打開之前包含
- 17. 如何在其他裝配中添加裝配?
- 18. 如何安裝維護人員配置Bower忽略的文件?
- 19. 如何禁用1按鈕,但保持其他人啓用
- 20. 如何保護其他音樂播放器在Android的
- 21. 其他人如何使剪貼庫保持最新狀態?
- 22. 保護數據不被Windows中的其他應用程序直接訪問
- 23. 保存Excel文件被刪除/使其受保護
- 24. StaleStateException當保存被其他會話刪除的實體(併發)
- 25. 如何使用REST API或其他方法來保護JSON文件?
- 26. 使用密碼或其他方式保護RSACryptoServiceProvider私鑰
- 27. 如果其他人使用javascript
- 28. 如何將受保護功能中的參數用於其他受保護的功能?
- 29. 如何保護我的角度應用?
- 30. 如何保護我的JsonResult GET調用?