为什么突然想要详细了解一下SLIC是什么?其实是由Windows loader这款激活软件引发的。在那篇文章中提到了OEM激活需要三个不可或缺的条件,其实之一就是SLIC,所以很有必要来了解一下什么是SLIC,它在微软OEM激活机制中是至关重要的,没有它,微软就无法保障OEM用户的合法权益。

  SLIC,全称:Software Licensing Internal Code,即软件许可内部码。它存放于BIOS中,更确切地说,是写在ACPI(Advanced Configuration and Power Management Interface,即高级配置和电源管理接口),用于激活OEM版的Windows操作系统。它不是什么新的东西 ,早在XP时代就出现了。微软向各大合作PC商发放Windows的OEM版,而这些版本系统是随电脑预安装的,这就是我们平时买到联想、华硕、宏基等笔记本或台式电脑时,里面已经安装好的正版Windows系统。但这里有个问题,因为采用了批量许可的授权模式,以有效识分合法用户和非法用户,可能被滥用而导致版权问题。

  于是为了控制这个问题,微软规定在安装每一个操作系统的同时,将它激活。那么SLIC在这个过程中起到了什么作用呢?我们认为主板是最不容易被替换的硬件,所以微软想到了在每台预装操作系统机器的主板BIOS写入特定的信息,用来标识这台是合法的OEM机器。而这个信息就是SLIC。说到这里,应该都能理解了吧?每个OEM厂商的SLIC不同时,所以他们的OEM操作系统不能混用。在没有预装系统的机器,即便是品牌机,也不会含有SLIC信息。也就是说,它是在安装操作系统的时候写入的。这样一来,OEM版的操作系统就可以限定在OEM机器上使用。同时,这也为会我们的破解提供了条件,关于OEM的激活原理本站会另外发文详解。另外,维基百科上写了:SLIC一般是写在SLDT(Software Licensing Description Table,软件许可描述表)中的,SLDT长度为374字节。

SLIC

  XP OEM版激活时使用的是微软SLP 1.0。SLP(Software Licensing and Protection即软件许可和保护)服务是一项软件激活服务,使独立软件开发商为他们的用户采取灵活的软件许可条款。该1.0版本的激活技术并未使用数字签名技术,而是一段明文标识,比较容易被破解。到了Vista,用了2.0版,而Windows 7则采用了2.1,它们取消了其他大客户版本,仅保留OEM版激活。并且公钥取代了明文,给破解造成了困难。

SLP 2.x技术的验证具体过程(资料来自维基百科):

1、当安装的时候,零售版本用户需要输入光盘盒上的序列号(CD-KEY)。对于随机购买了OEM版本Vista的用户,可以在主机上找到一个相应版本的标签,作为购买OEM版的凭证。标签上面有一个带有象征意义的序列号,因为OEM版本的用户并不需要输入序列号。系统根据序列号识别Vista的不同版本,如基本家庭版、高级家庭版、商业版、旗舰版等。安装完毕后,序列号会被转换为四组字母或数字,即在“系统属性”里看到的“产品ID”。其中第二组是“OEM”的,即为OEM版本的序列号(CD-KEY)。从这里开始,产品ID代替了CD-KEY。同时,安装程序为OEM版本的安装生成一个OEM证书。

2、当每次系统启动时,BIOS里的信息就会被加载到内存中。

3、当登录系统之后,系统调用SLP服务,验证操作系统的许可权,尤其是激活状态。开始根据产品ID来识别系统的授权状态。如果没有检测到产品ID或者没有检测到合法的零售版产品ID,则视为未激活。如果检测到合法的零售版产品ID,则视为成功激活。如果检测到OEM版的产品ID,则继续验证。

4、如果检测到OEM版产品ID,验证过程启动,并检查已安装的OEM证书是否正确。主要是用先前从BIOS加载到内存里的SLIC的公钥验证产品证书的数字签名。如果验证失败,则视为未激活。

5、验证ACPI里SLIC与RSDT(Root System Description Table,根系统描述表)的OEM ID字段比较,以及用ACPI里SLIC标志和XSDT(Extended System Description Table,扩展系统描述表)中的OEM ID和OEM Table ID字段比较,如果不一致,则视为未激活。

6、经过以上重重关卡之后,方视为正确的OEM授权,否则视为未激活并按照相关流程处理,例如要求激活。