换个思路实现 Office 永久激活:开源钩子 Ohook 如何点亮 Microsoft 365 全部功能
【免费下载链接】ohookAn universal Office "activation" hook with main focus of enabling full functionality of subscription editions项目地址: https://gitcode.com/gh_mirrors/oh/ohook
开源激活工具 Ohook 的目标很朴素:让订阅版的 Microsoft 365 / Office 在没有任何授权的情况下,也能让官方客户端自己认定"已授权",从而实现 Office 永久激活的效果。它不修改系统核心文件、不依赖 KMS 服务器、没有常驻后台进程,整套机制的核心代码只有几百行。如果你正在寻找 Microsoft 365 免费激活方法,或者想弄明白"许可证钩子"到底是怎么工作的,这篇 Ohook 安装教程会把你从原理讲到实操。
先看结论:不用续费,功能照样全开
装上 Ohook 之后,打开 Word、Excel、PowerPoint,常见的体验是这样的:订阅到期弹窗不再出现,原本置灰的高级功能全部恢复可用,Excel 里那些依赖订阅授权的数据分析能力也能正常使用。
需要提前说清楚的是,它的思路和传统"破解"完全不同——Ohook 不做任何加密算法的拆解,也不往系统里塞后门。它做的事情只有一件:在 Office 询问"我有没有合法许可证"的时候,让答案永远是"有"。
白话原理:Office 问一句,Ohook 抢答一句
检查只发生在启动那一下
Windows 上 Office 的许可证校验并不复杂。客户端启动时,会调用系统软件授权服务提供的一个接口——SLGetLicensingStatusInformation——去查询当前设备的授权状态。查完这一次,后续运行基本就不再校验了。这就是整个机制的突破口:只要拦住这一次查询,就拦住了全部。
钩子怎么"狸猫换太子"
Windows 加载 DLL 时有个默认规则:应用程序所在目录优先于系统目录。Ohook 利用这一点,把一个特制的sppc.dll放进 Office 的目录里。于是 Office 启动时,加载的是这份"冒牌"库,而不是系统自带的真库。
冒牌库做了两件事(对应 sppc.c 源码):
- 先把真正系统库的查询结果拿回来;
- 再逐条检查返回的授权状态,只要不是"未授权"的 SKU,就统一改写为"已授权"(
SL_LICENSING_STATUS_LICENSED),同时把宽限期、失败原因、过期时间等字段全部清零。
真正系统库的调用没有被跳过,只是返回值被"微调"了。所以 Office 拿到的数据结构是完整合法的,不存在缺字段导致的崩溃风险。
其余函数为什么要"转发"
sppc.dll不止一个导出函数,Office 偶尔也会调用其他接口。Ohook 的做法是把这些函数全部"转发"给系统真库——项目在安装时会先建立一个名为sppcs.dll的符号链接,指向系统原本的sppc.dll(定义见 sppc.def)。冒牌库只改写许可证状态这一个函数,其余几十个函数原样透传。翻译成大白话:门卫换了人,但开门的钥匙和房子都没动。
三个原则,让它的"安全性"可以讲得清楚
- 不动系统文件:整个安装过程只是新增一个符号链接和一个 DLL,Windows 原有文件一个都不碰;
- 随时可回滚:把 Office 目录里新增的两个文件删掉,一切恢复原状,不需要重装系统或修复 Office;
- 与版本无关:钩子拦截的是接口调用而不是某个版本号的特定逻辑,所以 Office 更新后通常依然有效。
这也是它和那些"替换系统授权文件"的老办法之间最本质的区别。
标准版还是加强版:两分钟搞清选哪个
项目提供了两种构建,差异在 Makefile 里用PLUS_BUILD宏区分:
- 标准版(
sppc32.dll/sppc64.dll):只做许可证状态的拦截改写,行为最干净; - 加强版(
sppcplus32.dll/sppcplus64.dll):在标准版基础上,额外往注册表写入一条TimeOfLastHeartbeatFailure记录,用来阻断 Office 的联网订阅检查。
建议绝大多数用户选标准版。加强版多写了一条注册表项,被安全软件误报的概率也更高,属于"非必要不用"的配置。
小白也能完成的三步激活流程
下面以 64 位系统上的 C2R(即点即用)版 Office 为例。请先以管理员身份打开命令提示符。
第 1 步:把仓库拉到本地
git clone https://gitcode.com/gh_mirrors/oh/ohook cd ohook第 2 步:给 Office 目录铺好"替身"
先把系统真库"挂"进 Office 目录,名字改成sppcs.dll:
mklink "%programfiles%\Microsoft Office\root\vfs\System\sppcs.dll" "%windir%\System32\sppc.dll"再把钩子库复制进去,名字用sppc.dll(32 位 Office 就用sppc32.dll):
copy /y sppc64.dll "%programfiles%\Microsoft Office\root\vfs\System\sppc.dll"第 3 步:安装空白密钥
给目标版本安装一个空密钥,让系统认为"这台设备有订阅产品":
- Microsoft 365 家庭版:
NBBBB-BBBBB-BBBBB-BBBBG-234RY - Microsoft 365 企业应用版:
NBBBB-BBBBB-BBBBB-BBBCF-PPK9C
完成之后重启 Word 或 Excel,在"文件 → 账户"里就能看到授权状态已经变成已激活。整个流程不会超过几分钟,这就是完整的 Microsoft 365 免费激活方法。
激活后失效?四类坑的排查清单
弹"检查此设备许可证状态时出现问题"横幅
部分 Office 版本会在启动后联网查询订阅到期日,查询失败就会弹横幅。在hosts文件末尾加一行即可绕过:
0.0.0.0 ols.officeapps.live.com如果不想动 hosts,也可以换用加强版,它通过注册表值达到同样效果。
杀毒软件把 DLL 报毒
钩子类工具被误报很常见。优先换回标准版(代码路径更短、行为更少),仍报毒就把sppc.dll加入白名单,并确认文件确实来自官方仓库克隆。
想用 Mondo 许可证"凑合"
有人会用 Mondo 2016 的许可证装到新版本上,图个省事。但老许可证的产品策略并不完整,新版 Office 的许多策略条目(形如office-UUID)在旧许可证里根本不存在,哪些功能会悄悄失效根本无从排查。Ohook 的做法是让"正确版本的许可证"生效,功能完整性反而是它的优势。
指望它解锁在线服务
OneDrive 的 1TB 空间、Python in Excel 这类云端订阅功能,Ohook 并不会启用。它的边界很清楚:只管本地客户端的授权状态,云端那部分它管不着。
进阶玩法:给整栋办公室一键部署
IT 管理员可以把部署写成一段脚本,批量推到员工机器:
@echo off set "OFDIR=%programfiles%\Microsoft Office\root\vfs\System" if not exist "%OFDIR%" set "OFDIR=%programfiles(x86)%\Microsoft Office\root\vfs\System" if not exist "%OFDIR%" ( echo 未找到 C2R 版 Office 目录,部署中止。 exit /b 1 ) mklink "%OFDIR%\sppcs.dll" "%windir%\System32\sppc.dll" copy /y sppc64.dll "%OFDIR%\sppc.dll" echo 部署完成,请让员工重启 Office 并检查账户状态。脚本自动兼容 64 位和 32 位 Office 的目录差异,跑完就收工。
收尾:行动清单与合规提醒
动手之前,记住这张清单:
- 只从官方仓库克隆,核对文件完整性;
- 默认选标准版,减少系统写入;
- 部署前后各截一张授权状态图,方便对比排查;
- 保留符号链接和 DLL 的备份,随时可逆。
最后照例说一句:Ohook 项目以 MIT 协议开源,代码完全公开可审计,但它依然只应服务于技术研究与学习。不同国家与地区对软件许可的要求各不相同,请务必在遵守当地法律和微软许可条款的前提下使用,支持正版始终是最稳妥的选择。若只是出于学习目的,这个"几百行代码撬动整个授权体系"的思路,本身就是一份很值得研读的教材。
【免费下载链接】ohookAn universal Office "activation" hook with main focus of enabling full functionality of subscription editions项目地址: https://gitcode.com/gh_mirrors/oh/ohook
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考