2014-01-11 42 views
0

假設我正在編程一個遊戲,並且我想在違反條款後禁止其他人使用該選項。我可以禁止他們每個帳戶,我也可以禁止他們的知識產權,但它不會永遠禁止他們從我的遊戲。他們只需要創建一個新帳戶並更改其IP。不通過IP識別機器

是否有類似於世界上每臺機器都獨有的機器ID?如果有,是否可以使用程序語言來閱讀它?用戶可以更改此機器ID嗎?

+2

不需要。除非您在該用戶的機器上運行代碼,否則絕對沒有辦法100%可靠地識別一臺機器 - 您獲得的所有結果都是IP地址。你沒有得到一個MAC地址,你沒有得到一個系統序列號,你沒有得到一個CPU序列號等......你所得到的只是一個IP。 –

+1

用戶如何運行遊戲?它是基於網絡的嗎?應用程序嗎?特定的OS安裝?平臺等。 – MrSimpleMind

+0

在PC上運行遊戲的用戶可以說這是一個窗口應用程序。它使用互聯網與服務器通信。 @MarcB是否有任何CPU序列號絕對沒有辦法?沒有MAC地址? OS系列? – kfirba

回答

1

防彈液? 我會說沒有解決方案100% secure,即使有巨大的投入資金。 你能做什麼,就是儘可能讓普通用戶儘可能的努力,這種方式最大限度地減少了cheaters

你可以讓PC machine id + the mac address + the motherboard id + the harddisk id等,但一個聰明的黑客/黑客就可以解決這個問題的hash id。我的意思是看看使用數以百萬計在作出安全的方式像微軟這樣的公司,仍然人可以得到激活周圍以某種方式...;)


在窗戶有一個hardware id,你可能中intrested。

HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\MachineGuid 

看看WMI也有一個如何使用C++

的Windows管理軟件使用的例子ent Instrumentation(WMI)是Windows驅動程序模型的一組擴展,它提供了一個操作系統界面,通過它可以檢測組件。

看到WMI c++ exmaples

+0

它可以很容易地改變,不是嗎? – kfirba

+1

我不能說100%,但幾乎所有解決方案都有辦法破解。你只能讓它變得更難。我不認爲很多人會去打擾並冒着改變guid的風險,這可能會失敗的Windows許可證/激活(不知道這個,但也許別人可能會對此發表評論) – MrSimpleMind

+0

如何發送不同的guid與其他應用程序類似到OP的客戶所做的事情,而不會改變這個價值。 –

0

如何硬盤序列號,你可以在WMI Win32_DiskDrive得到。

ManagementObjectSearcher searcher = null; 

try 
{ 
    searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_DiskDrive"); 

    foreach (ManagementObject queryObj in searcher.Get()) 
    { 
     Console.WriteLine("SerialNumber: {0}", queryObj["SerialNumber"]); 
     queryObj.Dispose(); 
    } 
} 
finally 
{ 
    if (searcher != null) 
     searcher.Dispose(); 
} 
+0

帖子盯着'怎麼樣'不是答案,只是評論... –

+0

示例代碼添加.. – Peter