5 分钟实现 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
距离交方案只剩半小时,Word 顶部却挂出红字:许可证即将到期。续费肉疼,网上那些"180 天激活"的教程又麻烦——直到你遇到 ohook:一个开源的 Office 激活钩子工具,专治订阅版 Microsoft 365 功能用不全,全程两个命令、一个密钥。
先看清旧方案的死穴,再认识它的"反向操作"
传统思路都在和许可机制硬碰硬:KMS 每 180 天就要重新激活一次,还得依赖一台 KMS 服务器在线;破解补丁直接改动 Office 程序本体,一次更新全部作废;在线工具靠第三方服务器吊命,服务一关,激活立刻失效。ohook 恰恰相反——它不碰任何加密与许可机制,只是改写了 Office 听到的那个回答。
把 Office 启动想象成进写字楼打卡:系统里有一个"门禁台"(sppc.dll),Office 每次启动都要朝它喊一声"我的授权还有效吗",门禁台照实回答。ohook 的招数是,在 Office 自己那层楼的走廊里放一个同名同姓的"门禁台"——Windows 加载 DLL 讲究先来后到,离得近的优先被问到。于是 Office 问到了它,它再通过一个符号链接(sppcs.dll)去问真正的系统门禁台,把所有答案原封不动转达,唯独"激活状态"这一句,由它亲自回答:已授权。
这个"只改一句"的克制,写死在导出表sppc.def里:
EXPORTS SLGetLicensingStatusInformation = SLGetLicensingStatusInformationHook SLCallServer = SPPCS.SLCallServer SLClose = SPPCS.SLClose被钩住的只有一个许可证状态检查函数,其余几十个系统 API 全部转发给真实 DLL。系统文件一个没动,Office 的正常服务照常运转——这就是它"侵入性极低"的底气。
原理懂了,下面按任务动手,四个任务做完,激活就生效了。
任务一:用 MinGW 把钩子 DLL 编译出来
项目基于 MinGW 交叉编译,一条make能同时产出 32 位与 64 位两个版本(外加两个 ohook+ 增强版)。先拉源码:
git clone https://gitcode.com/gh_mirrors/oh/ohook cd ohook用文本编辑器打开Makefile,把PREFIX32、PREFIX64改成你本机 MinGW 的路径(例如C:/mingw32/bin/与C:/mingw64/bin/),然后执行:
make成功后目录里会出现sppc32.dll、sppc64.dll、sppcplus32.dll、sppcplus64.dll,取你需要的那一个。
常见报错:提示找不到
gcc或make,多半是 MinGW 没装好或 PREFIX 路径写错;若只有 64 位编译器,可暂时注释掉 32 位相关的编译规则,只编需要的目标。
任务二:把钩子放进 Office 的加载目录
以最常见的 64 位 C2R(Click-to-Run)版 Office 为例,加载目录在%programfiles%\Microsoft Office\root\vfs\System\。在管理员命令行里执行两行:
mklink "%programfiles%\Microsoft Office\root\vfs\System\sppcs.dll" "%windir%\System32\sppc.dll" copy /y sppc64.dll "%programfiles%\Microsoft Office\root\vfs\System\sppc.dll"第一行创建符号链接,让 Office 目录里的sppcs.dll指向系统真实 DLL,作为转发通道;第二行把钩子 DLL 以sppc.dll的名字放进去,让 Office 优先加载它。
常见报错:
mklink提示权限不足,请确认命令行以管理员身份运行;copy提示文件被占用,先退出所有 Office 程序(Outlook、Teams 也要退干净)再重试。
任务三:安装空白密钥让 Office 认账
最后给当前订阅版本装一个"空白密钥",Office 据此认领对应的产品 SKU:
| 目标版本 | 营销名称 | 空白密钥 |
|---|---|---|
| O365HomePrem | Microsoft 365 家庭版 | NBBBB-BBBBB-BBBBB-BBBBG-234RY |
| O365ProPlus | Microsoft 365 企业应用版 | NBBBB-BBBBB-BBBBB-BBBCF-PPK9C |
在任意 Office 应用的"账户 → 更改产品密钥"里输入即可。
常见报错:提示密钥无效,多半是版本没对应上——家庭版与商业版密钥不能混用。
任务四:重启 Word,验证结果
重启 Word:红色横幅消失、订阅功能全部可用,就成了。极少数版本会在启动后访问ols.officeapps.live.com查询订阅到期日,若看到"检查此设备许可证状态时出现问题"的横幅,往 hosts 文件末尾加一行即可:
0.0.0.0 ols.officeapps.live.com普通版还是 ohook+?按你的情况对号入座
两者的差别只有一个编译宏(-DPLUS_BUILD),别纠结,看场景选:
| 你的情况 | 推荐版本 | 理由 |
|---|---|---|
| 默认使用、追求最干净 | 普通版 ohook | 只改回答,不碰注册表,误报概率更低 |
| 出现订阅到期横幅 | ohook+ | 额外把注册表TimeOfLastHeartbeatFailure改写为2040-01-01T00:00:00Z,跳过在线续期查询 |
| 在意杀毒软件误报 | 普通版 ohook | 行为更接近常规 DLL,更不容易被拦 |
高频疑问,一次讲清
为什么不用现成的 Mondo 2016 许可证?Mondo 是给老版本 Office 设计的,产品策略里缺了不少新版本条目,某些新功能可能悄悄失效;ohook 用的是当前安装版本的正式许可证,功能才完整。
杀毒软件误报怎么办?钩子 DLL 的加载方式容易被安全软件盯上。从官方仓库自行编译、优先用普通版、把文件加入白名单,都比关掉防护稳妥。
能顺便解锁 OneDrive 1TB 或 Python in Excel 吗?不能。这类在线能力依赖微软账号体系,本地钩子管不到,项目也明确不做。
一句话总结:ohook 没有破解任何东西,只是替 Office 回答了一句"已授权",所以它干净、可逆、不怕 Office 更新。
下一步,去 GitCode 给 ohook 点个 star;遇到问题在仓库提交 issue,或先翻翻根目录的readme.md,里面维护了完整说明与空白密钥表。
最后照例提醒:本文仅用于技术原理学习与个人研究。请在遵守当地法律法规与微软软件许可协议的前提下使用,支持正版才是长远之道。
【免费下载链接】ohookAn universal Office "activation" hook with main focus of enabling full functionality of subscription editions项目地址: https://gitcode.com/gh_mirrors/oh/ohook
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考