不使用IP识别机器

时间:2014-01-11 20:41:47

标签: c# java c++ security

假设我正在编写游戏,我希望在违反条款后禁止人们使用它。我可以禁止他们每个帐户,我也可以禁止他们的IP,但它不会永远禁止他们从我的游戏。他们只需创建一个新帐户并更改其IP。

是否有像机器ID这样的东西对于世界上每台机器都是独一无二的?如果有,是否可以使用程序语言阅读?用户是否可以更改此机器ID?

2 个答案:

答案 0 :(得分:1)

防弹解决方案? 我会说没有解决方案将是100% secure,即使投入巨资也是如此。 您可以做的是为普通用户尽可能地做到这一点,这样可以最小化cheaters

你可以制作个人hash id + machine id + the mac address + the motherboard idthe harddisk id但是一个聪明的黑客/黑客可以绕过这个。我的意思是看看像微软这样的公司,它们使用数百万美元来制作一种安全的方式,而且人们仍然可以通过某种方式绕过激活......;)


在Windows中有一个hardware id,您可能会感兴趣。

HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\MachineGuid

看一下WMI,还有一些如何在c ++中使用它的例子

Windows Management Instrumentation(WMI)是Windows驱动程序模型的一组扩展,它提供了一个操作系统界面,通过该界面可以检测组件。

请参阅WMI c++ exmaples

答案 1 :(得分: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();
}