Windows OEM版本激活机制

防盗版是每个商业软件厂商任重而道远的艰巨任务,微软公司也不例外,除了通过法律途径打击外,在技术上也是想方设法设置各种限制。在Windows 2000及之前时代,应该说自带的验证机制还是很简单,基本上一个有效的序列号可以用在任何一台电脑上。从XP开始,Windows加入了激活的要求,就是不仅要有有效的序列号,还要能通过微软官方途径的验证。
 
对于Windows零售用户来说,微软都会提供一个序列号,安装好系统后可以通过网络在线激活,但次数有限,如果频繁重装系统,可能会导致系统无法激活从而不能正常使用,这时可以使用电话方式,按微软客服要求提供必要的信息,实现手动激活。为避免麻烦,有的用户在第一次成功激活后手动备份认证的相关文件,将来如果重装系统可以直接恢复这些文件以达到激活的目的。
 
上面的做法对于大的电脑厂商(DELL,Lenovo,HP等)来说显然不合适。为了提高效率,它们的电脑生产装配都是流水线式的,出厂后系统都已预装好并直接可用,很难给不同的电脑配备不同的序列号,安装光盘和证书等,也不可能提供那么多的技术支持人员来处理序列号及激活等客户需求。为解决这些问题,从XP开始,微软把Windows版本分成OEM版本和非OEM版本,非OEM版本按客户的情况又分为零售版,大客户版,MSDN版等等。对于OEM版本,因为这些大的电脑厂商硬件型号有限,可以把操作系统和硬件绑定,使得为某个电脑厂商提供的OEM版本能且只能安装在特定的硬件上。
 
微软在XP时其OEM版本的做法是检查安装机器的BIOS内容,如果其内容没有包含预期的字符信息(一般是电脑厂商提供的厂商标识信息,不同的OEM版本只检查相对应厂商的字符),那安装完成后还需要用户手动激活,否则安装完成后会自动处于激活状态,由于这种激活不需要联网,一般也叫离线激活。这种做法应该说比较简单,电脑厂商在编写BIOS时只需加入指定的厂商字符信息。但由于用户刷新BIOS也很便利,可以很容易手动添加这些字符达到激活的目的。Vista开始,微软进一步做了加强,在ACPI协议中添加SLIC节(Software Licensing Internal Code),其中除了电脑厂商信息外,还包含Windows激活所要求的一些信息,另外为了防止伪造,还对相关内容作了签名并用公钥算法进行加密,同时公钥算法用到的公钥也存储在SLIC节中,为了防止公钥被伪造,通过颁发给各个电脑厂商的证书来验证,而证书由整个CA体系来保证其可靠和完整性。在安装Vista的OEM版本时,安装程序首先会去验证所有相关信息的真实性,只有在所有信息都未曾修改并且SLIC表中有预期的信息时,安装后的系统才会离线激活,否则需要用户手动激活。
 
可以看到,手动编造一个SLIC表是不可能的,但可以把别的机器上的有效SLIC表灌入另外的机器BIOS中,可以这样做是因为SLIC节的内容只提供信息给运行其上的操作系统,本身并不参与系统的启动过程,其自身并不含运行代码,而且也没有和单台机器绑定。修改BIOS的方式有两种,一种是硬改,一种是软改。硬改就是通过使用BIOS厂商相应的工具或编程器直接把修改后的BIOS文件写到主板的BIOS芯片里,这种方式适合IT爱好者,需要有一定的BIOS经验,也存在一定的风险,一旦刷写错误会导致整个系统再也无法启动。同时,如果刷写成功,这种方式也最可靠,微软很难把这种用户和合法的OEM用户区分开来。顾名思义,软改不需要改动BIOS芯片的内容,而是通过在操作系统加载前先期截获系统运行,在操作系统查询BIOS内容时提供替代但有效的信息以欺骗操作系统,这种软件大多数通过修改MBR或启动扇区来达到截获的目的,因为操作系统都是由MBR,启动扇区这些代码来加载的,这种方式应该说非常有效,也非常容易使用,只要运行某个软件就可以完成。但相比硬改,操作系统更容易检测到这种异常。
 
Windows 7的保护机制和Vista没有大的差别,只是升级了SLIC节的版本号。
 
注:本文只是用于学习软件的激活技术,请不要询问具体的修改细节。
此条目发表在计算机与 Internet分类目录。将固定链接加入收藏夹。

1 Responses to Windows OEM版本激活机制

  1. Ethan说道:

    Windows 7最新正版认证升级包(KB971033,2/23/2010)并没有默认设置安装。用心良苦呀。不知道这包里面含什么样的内容。

留下评论