Windows系统激活机制

Windows系统激活机制
Windows系统激活机制

浅谈Windows的系统激活机制

现如今微软公司的windows的操作系统仍然占据了全球最多的个人计算机,但它属于商用性质,并不像Linux一样是一套免费使用和自由传播的类Unix操作系统,所以必然有版权限制。

以前的微软公司对于中国市场的盗版问题可谓是“睁一只眼闭一只眼”,如果过多强调正版问题,就会损失掉中国市场的大部分份额。也许是微软公司的营销策略,先占据市场,在强调正版授权所带来的经济利益。

比如番茄花园事件,2008年6月,微软公司向国家版权局,公安部等部门进行投诉,2008年8月15日,番茄花园站长洪磊被苏州警方拘留审查。

随后微软公司对于盗版的打击进一步加大。

如今windows仍然是如今个人操作系统的主流,而微软的系统激活机制不仅影响微软自身经济利益,也对今后的系统安全提供了新的保护思路。

微软使用的OA系统激活,这样允许PC厂商和系统制造商将预激活的Windows副本使用在硬件之上。

OEM Activation(硬件系统授权合法性验证,简称OA)OA技术始于XP,到Vista 时升级为OA2.0,Windows7时的OA 2.1,可谓道高一尺魔高一丈,微软正在准备在Windows8中使用OA3.0机制。微软正在努力采用技术阻止黑客破解激活系统。

OA1.0的激活机制

微软对于Windows操作系统的使用许可一直都有一个限制:一套经过合法授权的Windows操作系统副本只能被安装在一台电脑上(即使你有两台电脑,一个台式机一个笔记本,你也不能用同一个许可证给它们安装Windows操作系统)。但是事实上很多人都没有遵守这种限制,而OA系统也就是用来保证一个授权只能被安装在一台电脑上的一种手段。

因此,在安装了Windows XP的30天之内,如果想继续使用Windows XP就必须激活它。在激活的过程中,系统会结合硬件的详细配置和安装操作系统后生成的PID(Product ID,产品ID)号码,然后根据一些算法生成一串代码,而需要通过把这个代码通过互联网或者电话告诉微软,微软会返回给你另一个新的号码,用这个号码就可以成功激活Windows XP。如果不及时激活,过期后Windows XP将无法使用。

在以后启动电脑时,Windows就会把当前正在使用的硬件设备跟激活时所用的硬件设备进行比对,如果硬件设备有很大的变化,就不能继续使用Windows XP了,除非重新激活。

而对于购买的品牌机情况就不同了。一般品牌机在出厂前都预装了OEM版的Windows XP操作系统,并且已经成功激活。这种版本的系统激活则是根据BIOS决定的。你可以更换任意的硬件(主板除外),而都不需要再次激活。

OA将会检查以下的十大类硬件:

显卡,SCSI适配器,IDE控制器(可以说就是主板),网卡及其MAC地址,内存范围(例如0-64MB,64-128MB 等),处理器类型,处理器序列号,硬盘,卷序号(VSN,Volume Serial Number),光盘驱动器。

在安装操作系统过程中,安装程序就会检查以上的硬件,并记录下相应的数据,并保存在硬盘上。在以后激活过程中,这个号码和PID 会被用来生成一个25位的字符串,并发送出去。

Windows每次启动时,都会重复检查这些硬件,以确保Windows是在同一台电脑上运行。同样的,如果你格式化了硬盘并重新安装Windows XP,你就需要再次激活,因为之前保存在硬盘上的激活号码已经没有了,需要重新取得。

“同一台电脑”是什么概念?计算机启动的时候OA会询问以上涉及到的十类设备“你们还在那里吗”,如果这十类设备的回答都是肯定的,那么计算机就可以正常启动并且不需要重新激活,只要能够获得七个以上(含七个)的肯定回答,那么OA都会认为这还是“同一台电脑”。不过网卡比较特殊,网卡的回答在这十类设备中占两个。OA系统判断是否同一台电脑是看还没有改变的设备有多少,而不是看已经有多少设备改变。因此如果我们在已有光驱的情况下再添加进一个光驱,这并不会影响OA的判断,相反,如果我们用一个新的光驱替换了已有的光驱,这就会被OA认为是有一个设备发生了改变。因此,如果你只是想往电脑中装入更多的设备,那并不用担心激活,相反,如果想把装进去的设备拿出来就要注意了。

如果你替换了以上十类中的某一设备,那么该设备的回答就会是否定的,不过得到否定回答以后OA就不会再次询问该类型的设备了。

关于OA1.0的破解

微软从Windows XP 开始引入了SLP(System-Locked Preinstallation)技术,用于OEM产品的辅助激活。SLP仅用于OEM产品,只会在零售版戒批量授权产品中出现。

SLP(System Lock Preinstall)的中文翻译为“预安装系统的激活保护措施”。它是微软与OEM厂商之间的一种协议,SLP是为了最大限度地保证OEM厂商的利益而又能避免盗版的泛滥。

微软从Windows XP 开始引入了SLP(System-Locked Preinstallation)技术, 用于OEM产品的辅助激活。SLP仅用于OEM产品,不会在零售版或批量授权产品中出现。Windows XP采用的是SLP 1.0版,其原理是检测BIOS中是否存在由OEM硬件厂家设置的特定SLP字串,如果有,则认为软件为OEM合法授权,成为激活状态;否则,则要求用户输入OEM硬件附带的COA号码,并通过网络或电话激活软件。由于原理简单,很快被熟悉BIOS原理及相关软件操作的人破解,随意在非OEM硬件-DIY的兼容机上实现了一样的效果。普遍流行的做法是使用DMI编辑软件,在BIOS的DMI数据区加入SLP字串,使Windows XP认为OEM授权合法,成为激活状态。

微软规定,能够成功激活的OEM版本Vista,必须经由原始设备制造商(OEM) 通路的计算机必须在其系统BIOS内ACPI_SLIC表格中有一个有效的Windows 标记。Windows标记的出现对于计划使用Windows Vista大量授权媒体来重新映象、或透过大量授权合约提供的重新映象权限来升级OEM 的大量授权客户非常重要。

SLIC全称是Software Licensing Internal Code,即软件许可内部码。一般认为主板是硬件升级中最不可能更换的部件,甚至有观点认为,主板的更换约等于整台机器的更换。要有效识别一台机器是否为OEM合法用户,可以在每台预装操作系统的机器主板上,在BIOS里写入特定的信息,来标识这是一台OEM合法用户的机器。这样的信息就是SLIC。不同的OEM 厂商的SLIC不同,所以他们的OEM操作系统不能混用。

SLIC一般是写在SLDT(Software Licensing Description Table,软件许可描述表)中的,SLDT长374字节。

Windows中,Vista系统最早实行这种认证激活机制,SLIC为2.0。Vista在启动过程中会扫描主板BIOS里的公钥及标识和已安装的密钥和证书文件,如果三者验证一致,系统就会被识别为免激活的OEM版本。如果仅缺许可证书,则会扫描WINDOWS目录下SYSTEM32

文件夹,如果找到证书,并验证一致,则认为是免激活的OEM版本,并且自动为用户安装证书。

而破解软激活系统,意味着要修改系统启动扫描的某个环节,改变验证路径,不再扫描主板BIOS里的SLIC,引导验证程序去扫描模拟的SLIC标识,促使认证激活机制完成预定的所有的必要环节,以达到激活WINDOWS的目的。因此,有些软激活系统用查看工具看起来也象是真的SLIC,因为查看的不是真正的BIOS里的SLIC。

OA2.0/2.1机制:

在VISTA/7系统中采用具体表现为:

1、OEM厂商的出厂机器BIOS里含有该品牌的OEM授权证书的数字签名

2、OEM厂商的出厂机器BIOS里含有该品牌的OEM KEY的数字签名

3、操作系统里含有对应该品牌的OEM授权证书

4、安装序列号为对应授权证书版本的OEM KEY

如果上述4个条件具备,则VISTA OEM系统为免激活,否则,等同于零售版,必须在30天内激活(比如用COA的KEY激活VISTA)

1. 如果检测到SLP产品密钥(SLP与用的CD-KEY),SLP验证过程启动。

2. Windows确认其包含(导入)的OEM证书是微软签名的。如果检测到OEM证书,则SLP 验证继续进行。如果未检测到OEM证书,则SLP验证失败,要求进行产品激活。

3. OEM证书将同ACPI_SLIC BIOS表中的OEM公钥做比较。如果OEM证书和BIOS中的OEM 公钥匹配,则SLP验证过程继续进行。如果OEM证书和BIOS中的OEM公钥进行匹配,则SLP验证失败,要求进行产品激活。

4. ACPI_SLIC BIOS表中也包含SLP标志。通过OEM公钥验证SLP标志,如通过,SLP验证过程继续。否则,SLP验证失败,要求进行产品激活。

5. SLP标志中包括OEMID字串和OEMTableID字串,与ACPI_RSDT和ACPI_XSDT的OEMID和OEMTableID比较,若其中之一与SLP标志中的字串完全相符,则SLP验证通过。否则,SLP 验证失败,要求进行产品激活。

关于OA2.0/2.1的破解机制:

通过上面的认证信息,可以了解到,目前Vista系统是依靠系统中存在的OEM证书与OEM公钥与BIOS中存在的信息进行对比。只要两者信息相同,系统便认为所使用的硬件为合法的OEM硬件,以此激活系统。那么目前兼容机内,只要伪造运行系统上与BIOS中的相互验证关系,欺骗SLP 2.0验证,盗版系统便可能被系统认为是OEM的正式版,最终达到成功激活的目的。

修改原始BIOS里的ACPI表名索引,让原来没有SLIC表的BIOS变成有叫“SLIC”的这个表(所以“支持VIST A的BIOS”就不用这步,因为BIOS已经有SLIC表了)。只有表名当然不行,还要添加相应的SLIC内容,所以用CBROM分离出BIOS中的ACPI数据区,也就是acpitbl.bin。把数据区里的RSDT表OEMID和OEMT ableID字段修改成OEM厂商的SLP标志,然后在这个数据区的尾部添加OEM厂商的SLP证书公钥,添加完后再把ACPI数据区并回到BIOS里就算是完成了。使得修改兼容机BIOS中的ACPI_RDST和ACPI_XSDT的OEMID和OEMT ableID,与SLP标志中的字串相符。

未来的OA3.0机制(Windows 8)

OA3.0 中包含的一组5X5的数码序列号,一个hardware hash序列,一个GML标签以及大概流程。

COA:Certificate Of Authenticity,贴在机台上微软正版的标识,包括防伪和5x5的序列号。目前激活方式使用。

Hardware hash:

在激活系统时和每次进系统时会根据硬件的配置产生一组128位的hardware hash数据,用于比对是否和Microsoft保存的一致,用来和序列号一起配合激活系统。

Hardware hash和硬件配置有关,主板影响最大,外设影响不大。

OEM生产商需具备的2个服务平台1. Key服务器2. Reporting服务器

生产Windows 8镜像时使用一个通用的序列号(master key),这个序列号不区分OEM生产商,只区分版本。这个序列号只有安装并标注为OEM渠道的作用,不能用于激活

生产的步骤:

1. 硬件装配

2. 装配完毕后,PC上线(OEM厂商内部局域网网络),运行OA3工具,从Key服务器申请,获得一个唯一的序列号。输出一张完整的MSDM表

3. 运行固件更新程序,将MSDM表注入UEFI或者BIOS

4. 安装Windows 8镜像

5. 检测硬件、软件,确保不再变更

6. 运行OA3工具,生成硬件特征的128bit哈希值,连同之前获得的唯一序列号,发送至Reporting服务器,这个内容成为CBR(computer Build Report)

7. Reporting服务器,将硬件特征哈希值和序列号发送到微软,成功后从硬件上删除CBR

8. 此后用户USB外置设备接入,内部PCIe, PCI, SATA扩展调整,不计入硬件哈希变更

9. 再次运行OA3工具,锁定MSDM表,不允许更改

用户的激活步骤:1. 开机后通过已安装的通用的序列号(生产镜像已内置)体验,但不激活2. 4小时后,系统开始尝试激活,读取MSDM表,获得序列号,产生硬件哈希值,发送至微软,进行匹配检测

概括说:一机一密钥,一机一特征,出厂仅含序列号,硬件特征微软已预先知晓

通过以上的的粗略的认识,我们将会更好的了解以后关于操作系统的版权问题而带来的软件结构甚至于硬件上的变革,也会更深入的全面了解现在主流操作系统的方方面面。

相关主题
相关文档
最新文档