网上大部分C#机器码相关的文章都是利用WMI获取硬件信息,我一一测试,结果:
CPU ID -> 不具备唯一性,同一型号可能相同
硬盘SN -> 利用WMI无法读取SATA硬盘的SN
卷SN -> 格式化后就会发生变化,不适合作机器特征码,同时网上也有相应的卷SN修改工具(此外我也不确定硬盘互GHOST会不会产生相同的卷SN,有知道的告诉我3Q)
主伴SN -> 部分主板获取不到
BIOS -> 部分BIOS获取不到
网卡MAC -> 现在很多程序会修改MAC地址,且网卡出故障的机率较高不合适作机器特征码
最重要的一个问题是WMI是读取注册表的,也就是说特征信息可以伪造,尤其是网卡MAC
...郁闷了开始,那么到底有什么比较好的方式来生成机器码呢....望高人指点
一般来说,CpuID的确可以见到很多相同的,但是能够基本满足需求了。
如果你坚持产生重复率较低的唯一值,那么可以考虑把以上所有的有意义的值综合起来生成一个编码,比如可以通过异或运算或者哈希值等方法复合每个硬件编码,这样能将重复率缩小到一个可以接受的范围。
呵呵来我的博客看看上面有的呵呵
用加密狗,一台机器上一个,即便是他想用多台机器,完全随他们只要他们不麻烦,不过这种方法视你软件的性质而定。
如果软件可破解,机器码基本没用
还是研究怎么反破解吧
机器码可以随机生成(绝对唯一),然后 保存在用户不知道得地方,这种地方多了去
软件和磁盘捆绑。。。。。。