保護裝配?
回答
你最好的選擇是按照Anton的指示打包/加密/混淆DLL。然後祈禱沒有人會經歷解開它的所有麻煩。
這個通常的術語只是「包裝」。
這是遊戲開發者用f.ex索尼的SecuROM做的事情。
但所有的包裝程序具有相同的缺點:
- 它們可以反向工程和加密密鑰必須嵌入二進制
- 他們通常需要錢,而那些不這樣做( UPX)很容易解包。
- 平臺不兼容性問題可以通過解包過程引入。
- 打包的二進制文件往往會讓反病毒感染。
使用封隔器的公司通常會發布必須能夠在每臺可以運行的計算機上運行的二進制文件。如果你是真的想要它,我想你可以加密每一個唯一的密鑰隨附的DLL,然後要求它在互聯網訪問中運行,以解密階段的一些挑戰 - 反應魔術。無論如何都是過度殺傷。
你也可以讓自己的包裝,但相信我,當我說:你不想去那裏;)
總之,你想要什麼並不簡單,即使是大牌球星來實現。 SecuROM遊戲需要多長時間才能出現在piratebay上?所以你唯一能做的就是「提高標準」,並希望不被優秀的反向工程師注意到。
最後,知道你要自己成什麼:會不會是值得的嗎?比方說,您將DLL解壓縮 - 就這樣。人們仍然需要對其進行逆向工程才能使用它。誰使用無證第三方庫?在瘋狂的時刻我只做過一次或兩次。
我不在乎,它是一個私人程序,必須在10-15臺機器上運行。我想了解更多關於加密和訪問加密的DLL的信息。 – Shimmy 2010-02-11 22:20:32
那麼,首先不要重新分配程序集。只要裝配在野外,任何人都可以使用它。你可以通過obfuscating使它更難,但「入口點」仍然存在並且可用。
從理論上講,你可以用CAS做點什麼,但我不確定這是否可能。
這不是在野外,我正在尋找一種方法來限制它到達那裏...... – Shimmy 2010-02-09 13:16:01
CAS不會保護你完全信任的人。 CAS不打算強制執行組件許可,因此不能很好地執行它。 – erikkallen 2010-02-09 20:21:55
您必須在DLL中添加檢查以驗證調用者是您。但是,這引發了其他挑戰:
你如何證明你是一個DLL。 (你可以檢查一些簡單的東西,比如當前的用戶名,但這可能不完美)。
您可能會要求exe文件由您的證書籤名。
也許你可以使用授權/複製保護工具來改變你的dll。並且在呼叫者內部,您提供了所需的許可證號碼。
問題是如何識別DLL的調用者,這可能嗎? – Shimmy 2010-02-11 22:14:49
你可以使用Assembly.GetCallingAssembly來檢查調用程序集 – 2010-02-12 00:56:36
您應該查看許可基礎設施。我不知道如何實現它,但是通過創建.licx文件來使用它,然後,我認爲構建過程使用lc.exe工具來執行某些操作來嵌入許可證。
這不是完全可能的。如果你想讓你的代碼運行,它必須是可執行的。您可以輸入支票,打包,加密密鑰,看門狗,監視器,管理員和各種許可方案,但如果您的代碼工作,必須以某種方式解鎖以便可以使用。
這就是爲什麼DRM不起作用。你想保護X,但你想讓其他人查看它。問題是你不想查看/使用X的人,並且你想要使用X的人在某個級別上是同一個人。
我有這麼厭倦了處理第三方授權碼(破/註銷/思考我是不是一個合法的用戶時,我應該是),我成了一個FSF成員。我不值得花時間去解決別人的限制,我不值得花時間來處理他們。他們的代碼並不是那麼特別。
如果你強命名程序集,請考慮使用PublisherIdentityPermissionAttribute。您可以將其添加到您的DLL中,只有使用正確的發佈者密鑰簽名的程序集才能夠調用該方法或類。
這是免費的,並內置到.NET框架中。如果您需要其他功能(例如將DLL許可給其他開發人員的功能),請考慮使用專業級別的版權保護工具,例如我們的工具DeployLX Licensing。
- 1. 分配與保護
- 2. 保護使用在包裝
- 3. 如何保護我的裝配體被其他人使用?
- 4. 跳轉到裝配切換到保護模式後內核
- 5. 在保護模式下創建裝配藍屏
- 6. 用受保護的方法裝飾類
- 7. 包裝和保護可執行文件
- 8. 需要配置文件保護
- 9. Laravel:配置以保護敏感信息
- 10. Socket.IO HTTP - 如何保護配置
- 11. Laravel和質量分配保護
- 12. Apache2密碼保護Vhost配置
- 13. 在配置問題中保護密碼
- 14. 鎖定時無法保護配置
- 15. 保護nodeJS數據庫配置文件
- 16. 保護MediaWiki中的類別分配
- 17. 通過匹配保護密碼
- 18. 保護與保護者的關聯
- 19. IDataProtector保護和取消保護方法
- 20. 保護/取消保護圖表
- 21. 保護數據保護密碼
- 22. 保護/取消保護Word文檔
- 23. 保護節點+ Postgres +護照
- 24. 無法批量分配受保護的屬性:配置文件,
- 25. 保護Webmethods
- 26. 盜鏈保護
- 27. 保護網站
- 28. 保護會話
- 29. 密碼保護
- 30. 頁面保護
你沒有說明什麼語言? – t0mm13b 2010-02-09 13:06:59
@tommie我想這是.NET – 2010-02-09 13:10:22
@Anton:不夠公平......但擺振應該補充一個標籤來表示什麼語言我們猜測,而不是他的意思是在C/C++ .NET或資源DLL ++? – t0mm13b 2010-02-09 13:12:31