颠覆常规! 无需KMS的Office产品激活?Ohook Activation的奇妙原理

本文最后更新于 2024年1月6日 下午

长期以来,我一直都订阅了Office365,不不仅仅是为了Office办公软件,套餐内的1T Onedrive空间,在网络通畅的情况下,还是挺好用的。而且和账号进行绑定,在有网络情况下,登录微软账号即可同步我的订阅记录和连接云端文档。

但是,用习惯Office365后,如何在内网上使用Word、Excel和PPT三大金刚呢?如何才可以在我内网设备上进行Office365的激活呢?

Didn't Work?

前言

恰好,看到一个很有趣的项目: Ohbook Activation: https://massgrave.dev/ohook.html

根据官方的描述:

  • This activation method can activate all kinds of Office versions on Windows 8 and higher and their Server equivalent except Office 2010 and Office UWP apps.
  • This activation method works offline and activates Office permanently.
  • This activation method can survive Office repairs, Office updates, and even Windows major feature upgrades. You do not need to reactivate in these cases.
  • For the O365 subscription version, you can’t get server side O365 specific features such as 1TB storage in Onedrive. However, almost all other features and 5GB storage in free onedrive account would work fine.
  • This activation method does not modify/patch any onboard system files, instead it installs a custom SPPC.dll (open source) file for the activation to work. Check further details in below “**How does it work?**” section.

我们可以知道,这个是用来激活Windows和Office的; 似乎不是什么特别的,“魔改”、精简版本的Windows和Office也可以做到。

但是,它居然可以激活订阅制的Office365!岂不是就正好满足我的需求?毕竟用习惯了Office365,一时换上WPS,有些不习惯……

哇

有别于传统的KMS和官方数字化激活漏洞(Windows)。它是用文件软链接的形式实现,类似于“请求劫持”,不修改Windows或者Office核心文件,不会影响功能使用。

并且订阅制的Office365也是可以激活,只是无法享受Office365零售版本的1TB空间。完美解决我买了Office365,但是在内网电脑上无法激活和使用的问题。

居然这么神奇? 和传统的KMS有什么区别呢? 是不是数字化激活呢? 让我们看看为什么可以做到。

难以置信

KMS是什么?

首先,我们看看传统的方法: KMS(Key Management Service)。

实际上,KMS就是官方激活Windows和Office的方式之一; 尤其是对非零售的版本,KMS甚至是首选方式。

原因很简单,KMS诞生之处,就是用于企业和组织批量激活设备的,尤其是很多企业,办公网和互联网电脑是物理区分开的。企业购买KMS服务后,在局域网内服务器搭建一个授权中心,并使用该服务器为内网中的设备进行激活,而无需连接公网。

当企业内部有多台计算机需要激活时,可以在内网中设置一台服务器作为KMS主机。这台KMS主机会监听内网中的激活请求,并提供激活服务。内网中的其他设备可以通过内网连接到KMS主机,并定期向其发送激活请求,从而完成激活和续期过程

KMS激活内网

为什么是激活和续期呢?
KMS就有点像DHCP,分配的IP是默认有有效期,在租期快到时候和DHCP服务器进行续期。而KMS的有效是180天。利用部分漏洞和特殊密钥,可以做到一次性激活到2038年。

graph LR
    A[客户端请求] --> B[KMS主机发现]
    B --> C[KMS主机响应]
    C --> D[KMS激活]
    D --> E[KMS激活验证]
    E --> F[激活确认]
    F --> A

对于企业来说,这种在内网搭建KMS服务器的方式有以下优势:

  1. 安全性:由于KMS服务器仅在内网中可访问,不需要连接到公共网络,因此可以提供更高的安全性。这有助于保护企业的激活环境免受外部的未经授权访问或攻击。
  2. 效率:在内网中搭建KMS服务器可以提供更快速的激活响应。设备无需通过公网与远程KMS服务器通信,而是直接与内网中的KMS主机通信,减少了网络延迟和带宽消耗
  3. 管理和控制:企业可以更好地管理和控制内网中的激活服务。他们可以监视KMS服务器的活动,确保合规性,并根据需要进行维护和更新。

但是,后期KMS方法被公开后,逐渐被用于破解和盗版激活。这种方法本质上是微软官方提供的企业方法。

尴尬

什么是HWID?

接下来,我们看看另外一个方法:HWID(HWID Activation),也就是我们平时所说的数字权利激活。本质上它也是一种软件密钥管理的一种形式,通过在安装软件时收集计算机的硬件信息(主要是主板信息),并将这些硬件信息与软件密钥绑定,在另外时候,请求远程服务器判断是否激活当前设备。

所以,这个也是官方的方法。其实我们平时购买零售版本的Windows(比如:Windows10家庭版、Windows10专业版)就是这样:

在电脑激活后,就是绑定主板信息的,如果你再次重装系统,只要你的主板不更换,当Windows连接网络后,从微软服务器上获取信息,判断你的电脑是否已经激活

HWID

但是,2015年Windows10横空出世,微软为了快速推广Windows10,允许已经激活的Windows7直接升级并激活对应版本的Windows10

Windows 7/8/8.1升级到Windows10时,系统执行安装包中的gatherosstate.exe程序,生成一个包含当前硬件信息及其他信息的文件,上传到微软的服务器,回显一个JSON文件并记录,然后给予永久许可证

graph TD
A[升级Windows]
C[执行gatherosstate.exe程序]
D[微软校验服务器]
E[激活数字化激活]
F[存储设备激活信息]
AA[设备重装系统]
BB[激活成功]

A -->|1. 解压出执行gatherosstate.exe| C
C -->|2. 打包硬件信息| D
D -->|3. 回显数据| E
D -->|4. 存储| F
E -->|5. 继续| A
AA -->|A. 联网发起请求 | D 
F -->|B. 自动安装|BB

紧接着,后续就通过欺骗gatherosstate.exe,快速的生成一个有效的xml文件让微软以为当前硬件是有效的来实现数字权利。

直到2023年9月26日,微软关闭了升级通道。大部分通过此方法进行激活的脚本失效。但是2023年10月03日,有人发现,微软是加固了升级通道的密钥校验: https://devicepartner.microsoft.com/en-us/communications/comm-windows-ends-installation-path-for-free-windows-7-8-upgrade

实际上还是可以,只是需要其他方法而已。本次的主角不是它,我们点到即可。

Ohook工具

上述的KMS和HWID方法,都是利用了微软官方的方法,这次的Ohook,有什么区别呢?
我们看看Ohook的原理:

  • 复制并替换OfficeSystem目录内的到sppc.dll文件,以取代系统库。
  • Office在安装完成后,使用SLGetLicensingStatusInformation函数完成许可证检查,并且这是唯一一次的检查。
  • 替换的sppc.dll文件,劫持SLGetLicensingStatusInformation函数钩子,使其混淆为激活状态。

实际上,你如果不使用官方的脚本进行操作。在手动操作的过程中,也能体会到:

  1. 在Office C2R的System目录中创建一个指向系统sppc.dll的符号链接,并将其命名为sppcs.dll

    1
    mklink "%programfiles%\Microsoft Office\root\vfs\System\sppcs.dll" "%windir%\System32\sppc.dll"
  2. 将钩子库sppc.dll文件,复制到Office C2R的System目录中:

    1
    copy /y sppc64.dll "%programfiles%\Microsoft Office\root\vfs\System\sppc.dll"
  3. 安装对应版本的空白密钥。使其触发SLGetLicensingStatusInformation函数事件,激活Office。

实际上的原理是这样:

graph LR
A[Office安装] --> B[SLGetLicensingStatusInformation函数检查]
B -->|未激活| C[模拟激活状态]
C --> D
B -->|已激活| D[正常使用Office]

官方的流程图也非常详细:

官方流程图

总的来说: Ohook直接修改了许可检查函数,而不需要外部激活服务;激活看起来更加“内置”于系统中,可以完全取代KMS,实现的效果和验证有点类似于HWID。只是无法在重装系统并安装Office后,通过联网使其自动生效。

说实话,有点类似于注册机的原理……

所以,这样的激活,有什么问题么?

是否可以离线激活?

答案是肯定的,通过劫持的方式,直接激活;在内网也可以进行激活,只要你不重装Office、重装系统,那么它就是一直保持激活状态。

方法是否安全?

可能没有比这更安全的方法了?代码开源、修改非系统文件、无需连网。能存在什么风险呢?感兴趣可以看看源码,个人认为,如果是C++的小伙伴,一定觉得写的很棒:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
HRESULT WINAPI SLGetLicensingStatusInformationHook(
HSLC hSLC,
SLID *pAppID,
SLID *pProductSkuId,
PWSTR pwszRightName,
UINT *pnStatusCount,
SL_LICENSING_STATUS **ppLicensingStatus
) {
HRESULT hResult = SLGetLicensingStatusInformation(
hSLC,
pAppID,
pProductSkuId,
pwszRightName,
pnStatusCount,
ppLicensingStatus
);

if(hResult != S_OK)
return hResult;

for(int i = 0; i < *pnStatusCount; i++) {
if((*ppLicensingStatus+i)->eStatus == 0) continue;
if(IsGracePeriodProduct(hSLC, &((*ppLicensingStatus+i)->SkuId))) continue;

(*ppLicensingStatus+i)->eStatus = 1;
(*ppLicensingStatus+i)->dwGraceTime = 0;
(*ppLicensingStatus+i)->dwTotalGraceDays = 0;
(*ppLicensingStatus+i)->hrReason = 0;
(*ppLicensingStatus+i)->qwValidityExpiration = 0;
}

if(!bIsHeartbeatRegistryModified) {
ModifyHeartbeatRegistry();
bIsHeartbeatRegistryModified = TRUE;
}

return hResult;
}

什么又是MAS?

现在,我们来看看如何使用MAS(Microsoft Activation Scripts)激活我们的Windows和Office。MAS就是融合上诉所以脚本的产物,官网就是我文章开头所给的地址:

官网描述:

A Windows and Office activator using HWID / Ohook / KMS38 / Online KMS activation methods, with a focus on open-source code and fewer antivirus detections.

我们可以使用它,以HWID、Ohook或者KMS的方式,激活Windows和Office设备。支持的版本:

  • Windows 10-11(HWID、KMS38)、Windows 10-11(Online KMS、KMS38)
  • Office(Ohook、Online KMS)

只需要打开Windows的Powershell(并不是CMD,Powershell在Windows10上默认是蓝色的,Windows11上则直接使用Windows Terminal默认调用),输入:irm https://massgrave.dev/get | iex,即可自动下载脚本:

使用一键命令

如果网络正常,会进入交互模式:

进入交互模式

按提示进行激活即可。

当然,如果你的网络无法连接massgrave的服务器,你也可以手动下载它的离线版本:

解压后,在目录内找到MAS_AIO(All IN ONE):

进入交互模式

熟悉的界面和配方:

进入交互模式

推荐按『1』数字化激活Windows,之后回到这个界面,可以看看是否需要离线激活Office。

支持创作

制作教程不易,如果热心的小伙伴,想支持创作,可以加入我们的「爱发电」电圈(还可以解锁远程协助、好友位😃):

当然,也欢迎在B站或YouTube上关注我们:

更多:

彩蛋: 镜像下载

可以看到,Ohook确实是一个很不错的工具,思路也非常清晰;本质上是利用系统接口扩展产品功能或修正限制的一种很好方式。如果用于更正当的目的,完全可以为产品研发、测试、优化等带来很多便利。

其实我还喜欢Ohook的官方,直接提供了Office、Windows的下载地址,这不是比曾经那个『MSDN,I Tell You』好用么?

下载Windows、Office



颠覆常规! 无需KMS的Office产品激活?Ohook Activation的奇妙原理
https://www.mintimate.cn/2023/12/26/whatOhook/
作者
Mintimate
发布于
2023年12月26日
许可协议