.NET单机软件保护策略(3)机器码和有效期

机器码

机器码是一台电脑的身份证,在软件认证时就是对这个身份进行认证。一般机器码由提取电脑的硬件信息生成,包括CPU ID、硬盘序列号、主板序列号和MAC地址等。正常的电脑以上信息都有,但也不排除部分没有,例如没有网卡,就没有MAC地址。但这不影响,我们使用某一个,或某些合并到一起都可以。

获取CPU ID:

获取硬盘序列号:

获取主板序列号:

假设我们把上述三个信息都用了起来,并把它们拼成一个字符串,那么将会得到类似以下的字符串:

335A_4830_4D61_3643_0025_3841_0000_0001./8J9J2X2/CNCMK0096S0093/BFEBFBFF000906EA

这样的字符串复制还可以,如果要手抄一下,就会很麻烦。而且它暴露了实际的硬件信息,会引导用户去修改自己的硬件信息以达到一致。所以,一般我们会对上述字符串进行哈希处理,例如是MD5、SHA1或者SHA256。在得到字节数组之后,再进行一个Base24编码,就可以得到形如3F89V-24K9X-3LS7R-5HNBD-CDF8H的序列号了。

有效期

如果是在线软件,那直接读取电脑时间,一点问题也没有。但对于单机软件,这可是一个大麻烦,因为电脑时间可以随便改!

为了防止这个问题,其中一个方法就是不让改时间。对于定制的特殊用途的软件,可能整台电脑都是定制的,在这种情况下就可以使用这个方法。例如在管理员模式下,设置组策略,禁止修改电脑时间,然后不让用户得到管理员身份就可以了。

在软件上,我们也可以做点事情,但不会很完美。例如,我们可以在初次安装软件时,生成一个时间戳文件。软件在运行的过程中,不断去检查和更新这个文件。如果这个文件丢失了,就要重新认证。这个文件是经过加密的,用户无法直接修改。如果发现当前时间比上次记录的时间小,软件不能运行。

来源:还是叫明

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年10月16日
下一篇 2021年10月16日

相关推荐