2009-07-17 127 views
2

是否有可能以某種方式將.NET可執行文件限制到特定的機器,以便它只能在該機器上運行。.NET複製保護

+0

請給一些更多的信息。你背後的目的是什麼? – rahul 2009-07-17 09:21:46

+1

知道你是否想要防止意外誤用或惡意用戶(後者更復雜),這將是有趣的。 – 2009-07-17 09:24:55

+0

試圖阻止我的應用程序的非法複製 – 2009-07-17 09:33:09

回答

8

是的,我做我的應用程序。它奇妙地工作。

使用WMI(強烈推薦)獲取系統信息(CPUID,MacID,HDD細節)很容易。

我創建了一個幾乎萬無一失的系統(除非你是專業黑客)。

當我的應用程序第一次在用戶的PC上安裝時,它們會使用Web服務返回到我的服務器。他們使用密碼散列來標識自己,併爲客戶端查找授權代碼/訂單ID。

如果客戶端擁有正確的授權碼,應用程序會將系統詳細信息加密並存儲在客戶端的計算機上,並將信息散列發送到存儲它的服務器。然後使用一些散列標誌在客戶端的計算機上激活該軟件,並且每次運行應用程序時都將系統信息與文件中的散列信息進行比較。

如果客戶端重新格式化計算機,所有他需要的是訂單ID自動重新激活軟件(與我的服務器程序檢查,系統的細節進行了驗證和認可,如果它們匹配)。如果客戶在另一臺機器上安裝該軟件,他必須聯繫我的支持團隊以獲得批准。

- 所有信息都被加密並散列(雙重加密)。 - 所有代碼都被混淆並打包。

目前工作非常安全。

所以是的,這是可能的,它已經過現場測試,並發現工作以及任何其他保護系統。

2

不能使用處理器的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 
+3

CPU ID並不是一個可靠的唯一ID。有改變嗎? – 2009-07-17 09:25:02

1

開箱即用 - 無。

您可以嘗試在安裝過程中生成計算機簽名,並鎖定您的應用程序,以便在簽名文件不存在或不適用於此特定計算機時不啓動。

0

對於這一點,你需要用某種機器代碼從本機的MAC ID,HDD ID,CPU ID等產生嵌入您的許可證代碼

然後用運行軟件時生成的機器碼檢查此嵌入式代碼。如果這些不匹配,則意味着該軟件正在另一臺機器上使用。

如果你想支持這種情況下現成的許可方案,請參閱CryptoLicensing

1

.NET是可怕的,因爲它很容易與現有普通工具,反向回源代碼。 (我們做了一個演示,我們在大約2分鐘內破解.NET)。 Cyril的解決方案聽起來不錯,因爲他正在使用加密和指紋散列到目標機器。遺憾的是,這些解決方案很容易受到某些中間人攻擊,儘管他的解決方案聽起來比大多數人都好。機器綁定的一個問題是,您必須使用操作系統調用來檢索要使用的指紋令牌(如MAC地址,CPU序列號等),這可能會被中級黑客欺騙。

根據使用CodeMeter等良好加密狗的軟件的$值,Hasp HL或KeyLok將爲您提供重要的保護。不過,使用「壞」加密狗並不會對你有所幫助。

0

如果你想支持這種情況下現成的許可方案,請參閱CryptoLicensing

這是不是真的。 CryptoLicensing只使用計算機名稱,甚至不使用CPU ID。