热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Windows7的OEMSLP激活条件及验证过程相关说明

OEM方式激活是目前Windows7比较完美的激活方式,也是目前最广泛使用的破解方法。本文对该激活方式及其验证过程进行解释说明,希望有助大家正确准备相关验证所需条件、顺利完成进行OEM激活。本

OEM方式激活是目前Windows 7比较完美的激活方式,也是目前最广泛使用的破解方法。
本文对该激活方式及其验证过程进行解释说明,希望有助大家正确准备相关验证所需条件、顺利完成进行OEM激活。
本文包括部分我的个人理解,如有错误欢迎指正。

微软公司一直在加强防盗版方面工作,从Vista开始引入了软件保护平台(Software Protection Platform,简称SPP)技术。对零售、OEM和批量激活采用了不同类型的序列号和授权激活方式。(关于几种序列号和授权激活方式请参考《Windows 7的几种授权激活方式及序列号相关知识介绍》)
针对OEM授权方式的Windows激活,从Windows XP开始微软引入了SLP(System-Locked Preinstallation)技术, 在预安装过程中将系统同硬件锁定来防止盗版。
Windows XP采用的是SLP 1.0版,其原理是检测BIOS中是否存在由OEM硬件厂家设置的特定字串,如果有则认为软件为OEM合法授权可以激活。
该方法过于简单,只要利用DMI工具编辑BIOS加入相应字串即可伪造从而完成OEM激活。

从 Vista 系统开始,SLP 验证技术升级为2.0。主要是加入了利用密钥对信息进行签名的过程。因此验证过程也变得复杂了些,要环环相扣,以防验证信息被伪造。
该验证过程需要在BIOS的ACPI中扩展出专门的SLIC表来支持。

Windows 7系列中,采用了SLP 2.1技术,在这个版本中微软并没有对SLP技术进行大的改动,仍然利用SLIC表,而且SLIC表的结构也没有变化,只是将Marker版本变成了2.1,当然这种会造成Marker中数字签名的改变。它对 2.0是兼容的。因此使用SLIC 2.1同样可以用于Vista激活。本文主要针对SLP 2.1方式进行说明。

使用OEM方式进行激活需要三个条件

1、所谓的系统硬件条件,是指BIOS中包含验证所需信息,这是OEM厂商在出厂时提供的。
主要是SLIC表,以及RSDT和XSDT中的OEMID、OEM Table ID信息。SLIC表包含OEMID、OEM Table ID、Windows Marker版本、Windows旗标等信息,以及用来对这些信息进行验证保护的OEM厂商公钥和Marker的数字签名。
这里的验证要求:SLIC表校验正确、数字签名正确、OEM ID和OEM Table ID一致、Windows旗标正确。对于Windows 7还要求Marker的版本号(至少)为0x20001。
这是整个OEM激活过程最麻烦的条件。
破解包括两大类方法:修改主板BIOS或者网卡PXE加入实际SLIC称为硬改(Hardmod),通过启动程序加载仿真的SLIC方式称为软改(Softmod)。软改方式方便,硬改方式完美。无论哪种方式都需要实现Windows可以正确识别的SLIC等信息。
关于SLIC更多介绍请参考《BIOS中SLIC 2.1表详细组成及验证相关解释说明》。

2、微软颁发的OEM证书(扩展名为XRM-MS的文件)。
该证书为xml格式,需要与对应品牌SLIC匹配。因为该证书中包含了OEMID、OEM公钥等信息,用来与SLIC的相应信息进行验证匹配,防止SLIC被修改。
同时需要验证OEM证书本身正确性以防证书被修改,这包括利用中的验证证书内容,用作为微软公钥(与OEM公钥无关)来解密数字签名,从而验证的正确性。验证过程中还包括规范化转换(Canonicalize)和哈希运算等处理。

3、微软发给OEM厂商的序列号,即Key。
OEM厂商的序列号有两种:SLP Key 和非SLP Key。它只与Windows的版本有关,比如用于旗舰版的Key不能用于专业版,与OEM厂商无关,即可用于任何品牌的OEM系统。
SLP Key 是微软颁发给大的OEM厂商,比如Asus、 Dell、 Lenovo等使用。用来由OEM厂商进行批量预安装时使用,用户无法直接获得,实际上显示给用户的是Product ID(插播一条广告:推荐阅读《查看和更换Windows XP序列号的脚本》),但是可以通过破解得到(比如用ImageX解压boot.wim文件)。它是唯一可以不必联系微软就可以进行离线激活的序列号。
非SLP Key由微软发给一些小的OEM厂商,与零售版的序列号类似,需要电话激活或者在线激活。
本文讨论的激活方式是采用SLP方式,因此需要SLP序列号。

如何检查是否满足OEM激活的条件

1、检查SLIC。
可以使用SLIC_Dump_ToolKit 查看本机的SLIC版本及Marker是否正常、及OEMID是否一致等信息。

2、检查证书。
使用SLIC_Dump_ToolKit将本机SLIC保存,使用PubkeyCompare验证该SLIC与证书是否匹配。另外用SlicInfo和CertInfo验证SLIC和证书是否伪造。

3、检查序列号。
使用Windows 7 PID Key Checker检查序列号是否为 OEM:SLP 类型。

如果以上各个条件满足,正常激活应该没有问题。

也可以使用微软的MGADiag工具诊断系统是否满足OEM激活条件。
该工具从
 http://go.microsoft.com/fwlink/?linkid=56062 或者下面的工具包链接中下载。运行MGADiag诊断以后,Windows标签中显示当前使用的序列号类型。点击Copy按钮,打开记事本可以将诊断结果粘贴下来,粘贴结果的最后部分就是OEM激活相关信息,包括OEMID和OEMCreatID是否匹配、SLIC的版本等。

关于以上SLIC和OEM证书及相关工具可参考《多家OEM品牌BIOS SLIC2.1及证书和相关工具打包下载》。


OEM激活具体验证过程

满足以上条件以后,就可以进入激活过程。前面提到整个验证过程是层层嵌套环环相扣的过程,以保证以上各项信息的正确性。下面是整个验证过程,验证流程如图所示。
1. 激活程序启动以后,如果检测到正确的SLP Key,开始OEM激活过程,否则进行WPA方式激活(在线或者电话激活)。
2. 检测OEM证书,并且利用OEM证书的数字签名,验证OEM证书的正确性,如果验证通过继续OEM激活,否则进行WPA激活。
3. 将SLIC中的OEM公钥、OEMID等信息与OEM证书中的信息相比较,如果匹配正确(表明OEM公钥等信息正确)则继续进行OEM激活,否则进行WPA激活。
4. 利用OEM公钥,对SLIC中Marker数字签名进行验证,如果 验证通过(表明Marker中Message信息正确)则继续OEM激活,否则WPA激活。
5. 验证Marker中的Windows旗标,如果旗标存在,则OEM激活过程继续,否则进行WPA激活。
6. 验证Marker的版本,如果(至少)为0x20001,则OEM激活过程继续,否则OEM激活失败,进行WPA激活。
7. 获取Marker中的OEM ID和OEM Table ID信息,将它与所有ACPI表头中的对应信息进行比较,如果一致则OEM激活成功,如果不一致则触发WPA激活过程。

为什么说OEM硬刷方式破解激活是完美激活

无论采用什么方法,只要你的计算机BIOS中有了SLIC等以上信息,对于Windows来说,这与OEM的计算机是完全一样无法区分的。而且OEM厂商也不可能为防止破解将所有已经出厂的计算机更换BIOS。所以BIOS信息可以放心使用。
OEM证书是与SLIC匹配在一起的,如果硬件信息不改变,OEM证书是无法更换的。因此证书可以放心使用。
微软唯一可以限制的就是Key。SLP Key是OEM厂商在批量预装系统时使用的,成千上万的合法OEM用户使用这个Key,微软对其封锁是有一定困难的。Vista时代,SLP Key就基本没被封锁。目前已泄露的LENOVO SLP Key之所以被封锁,是因为OEM版Windows 7的电脑还没有正式上市。而且,即使封锁也不能限制使用该Key对Windows 7进行离线激活,只是不能通过正版验证而已。再有更换Key非常方便,一条"slmgr.vbs -ipk"命令就可以了。到Windows 7正式上市的时候,这种Key应该很容易得到,通过破解OEM版系统恢复盘就可以获得。
由此综上所述,OEM破解激活方式是完全可以放心的,只是看起来原理和操作上可能稍微麻烦了一些。
更进一步,从推广策略讲,微软是不会真正意义严格防止盗版的。Windows XP的一些VLK到现在还没有被封就说明了这点。所有盗版用户都是Windows的潜在用户,为推广Windows起到间接作用,你的朋友、同事、客户、公司都可能受你影响而使用和购买Windows,就连我这篇文章也对推广Windows做出了一定贡献。如果没有盗版,很多人会加入Linux阵营,这对微软更加不利。当年DOS能够成功并非由于功能而是在于其开放的推广策略,Windows 同样如此。其实如果真正想防止盗版,完全可以把OEM激活设定更加严格的验证策略,但是微软没有这样做也不会这样做。至于为盗版Windows提供更新等服务,这有助其产品的功能和安全保证用户使用体验,从而提高自身的的信誉和口碑,而后者对于一个公司至关重要而且是用金钱无法买到的


推荐阅读
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文介绍了一个从入门到高手的VB.NET源代码,通过学习这些源代码,可以在21天内成为VB.NET高手。文章提供了下载地址,并提醒读者加入作者的QQ群和收藏作者的博客。 ... [详细]
author-avatar
44要和自己交个朋友
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有