是否有可能以某種方式將.NET可執行文件限制到特定的機器,以便它只能在該機器上運行。.NET複製保護
.NET複製保護
回答
是的,我做我的應用程序。它奇妙地工作。
使用WMI(強烈推薦)獲取系統信息(CPUID,MacID,HDD細節)很容易。
我創建了一個幾乎萬無一失的系統(除非你是專業黑客)。
當我的應用程序第一次在用戶的PC上安裝時,它們會使用Web服務返回到我的服務器。他們使用密碼散列來標識自己,併爲客戶端查找授權代碼/訂單ID。
如果客戶端擁有正確的授權碼,應用程序會將系統詳細信息加密並存儲在客戶端的計算機上,並將信息散列發送到存儲它的服務器。然後使用一些散列標誌在客戶端的計算機上激活該軟件,並且每次運行應用程序時都將系統信息與文件中的散列信息進行比較。
如果客戶端重新格式化計算機,所有他需要的是訂單ID自動重新激活軟件(與我的服務器程序檢查,系統的細節進行了驗證和認可,如果它們匹配)。如果客戶在另一臺機器上安裝該軟件,他必須聯繫我的支持團隊以獲得批准。
- 所有信息都被加密並散列(雙重加密)。 - 所有代碼都被混淆並打包。
目前工作非常安全。
所以是的,這是可能的,它已經過現場測試,並發現工作以及任何其他保護系統。
不能使用處理器的ID,每次檢查(?)
Here is a sample code我寫了一段時間回來。
Imports System.Management
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Declare following three object variables
Dim objMOS As ManagementObjectSearcher
Dim objMOC As Management.ManagementObjectCollection
Dim objMO As Management.ManagementObject
'Now, execute the query to get the results
objMOS = New ManagementObjectSearcher("Select * From Win32_Processor")
objMOC = objMOS.Get
'Finally, get the CPU's id.
For Each objMO In objMOC
MessageBox.Show("CPU ID = " & objMO("ProcessorID"))
Next
'Dispose object variables
objMOS.Dispose()
objMOS = Nothing
objMO.Dispose()
objMO = Nothing
End Sub
End Class
CPU ID並不是一個可靠的唯一ID。有改變嗎? – 2009-07-17 09:25:02
開箱即用 - 無。
您可以嘗試在安裝過程中生成計算機簽名,並鎖定您的應用程序,以便在簽名文件不存在或不適用於此特定計算機時不啓動。
您可以對您的EXE進行數字簽名並使用證書來提供某種保護,但是如果您確實想要阻止您的EXE在特定PC上運行,則最好提示用戶輸入密碼並使用密鑰文件?
.NET加密例子 http://aspnet.4guysfromrolla.com/articles/112002-1.aspx http://www.eggheadcafe.com/articles/20020630.asp
假設機器有一個網卡可以使用MAC address:
對於這一點,你需要用某種機器代碼從本機的MAC ID,HDD ID,CPU ID等產生嵌入您的許可證代碼
然後用運行軟件時生成的機器碼檢查此嵌入式代碼。如果這些不匹配,則意味着該軟件正在另一臺機器上使用。
如果你想支持這種情況下現成的許可方案,請參閱CryptoLicensing
.NET是可怕的,因爲它很容易與現有普通工具,反向回源代碼。 (我們做了一個演示,我們在大約2分鐘內破解.NET)。 Cyril的解決方案聽起來不錯,因爲他正在使用加密和指紋散列到目標機器。遺憾的是,這些解決方案很容易受到某些中間人攻擊,儘管他的解決方案聽起來比大多數人都好。機器綁定的一個問題是,您必須使用操作系統調用來檢索要使用的指紋令牌(如MAC地址,CPU序列號等),這可能會被中級黑客欺騙。
根據使用CodeMeter等良好加密狗的軟件的$值,Hasp HL或KeyLok將爲您提供重要的保護。不過,使用「壞」加密狗並不會對你有所幫助。
如果你想支持這種情況下現成的許可方案,請參閱CryptoLicensing
這是不是真的。 CryptoLicensing只使用計算機名稱,甚至不使用CPU ID。
- 1. 複製保護
- 2. 保護couchdb和pouchdb複製
- 3. 複製保護陷阱
- 4. ASP .NET MVC保護控制器/動作
- 5. 簡單的複製保護策略
- 6. 保護要複製的USB的內容
- 7. 刪除Android中的複製保護
- 8. 如何保護.NET DLL的
- 9. .NET中受保護的類
- 10. XSRF保護GET .net mvc
- 11. 保護一個.NET框架
- 12. 保護.net Web服務URL
- 13. 複製文件構建階段中的錯誤?屏幕保護程序複製到庫/屏幕保護程序
- 14. 保護網頁上的圖像不被複制/保存?
- 15. 如何通過複製保護來複制我的應用程序?
- 16. Ghostscript故障保護機制?
- 17. 保護字節的數據.NET
- 18. .net Core 2.0保護日期時間
- 19. 加載代碼保護組件(.NET)
- 20. 如何在.net中保護web服務?
- 21. 從Deobfuscators保護.Net應用程序?
- 22. ASP .NET MVC保護所有資源
- 23. .NET組件上的篡改保護
- 24. 保護URL IDS在.NET MVC項目
- 25. Rails 3中,如何保護和保護控制器和URL
- 26. 你使用什麼複製保護技術?
- 27. 人們如何複製保護FMP運行時?
- 28. 在網頁上覆制保護:破折號
- 29. Android免費應用程序中的複製保護
- 30. android複製保護向前鎖定 - 我應該不打擾嗎?
請給一些更多的信息。你背後的目的是什麼? – rahul 2009-07-17 09:21:46
知道你是否想要防止意外誤用或惡意用戶(後者更復雜),這將是有趣的。 – 2009-07-17 09:24:55
試圖阻止我的應用程序的非法複製 – 2009-07-17 09:33:09