被"需要激活"弹窗折磨三周后,我用3步在Office目录里埋了一枚叫ohook的钩子
【免费下载链接】ohookAn universal Office "activation" hook with main focus of enabling full functionality of subscription editions项目地址: https://gitcode.com/gh_mirrors/oh/ohook
周三下午两点,你正赶一份第二天就要交的方案,Word顶部却弹出一行黄字:"需要激活"。你点了关闭,五分钟后它又回来了,还附赠一条红色横幅:"无产品"。真正把这个问题一次解决的,是藏在Office目录里的一枚"钩子"——它叫ohook,是一个专治订阅版Office的Office激活钩子,让微软365家族恢复到满血状态。
先说那个下午的真实经历
我的故事开始得并不体面。连续三周,我每天都要和Word的许可证横幅玩"你关我弹"的游戏。功能没全锁,但每开一个文档就跳一次提示,就像有个推销员站在你工位旁边,每隔五分钟重复一遍"该续费了"。
我试过KMS,180天一个轮回,到期那天永远在我最忙的时候。也试过各种补丁,结果更新一次Office,补丁就"阵亡"一次。直到我翻到ohook这个项目,它的第一句话就让我停住了:"一个通用的Office激活钩子"。注意,它没说"破解",说的是"钩子"。
它是什么,以及它坚决不是什么
先把定义钉死,免得后面产生误会。
它是什么:一个只有几KB的DLL钩子库,通过"替身"方式接管Office启动时的一次许可证检查,让订阅版Office认为自己持有有效许可。仓库里的核心逻辑全部集中在一个文件里,sppc.c 总共也就一百来行。
它不是:
- 不是密钥生成器,不碰任何加密算法;
- 不是系统补丁,不改写系统文件、不动内核;
- 不是后台驻留服务,部署完就完事,不用常驻内存;
- 更不是"万能激活",OneDrive的1TB存储、Python in Excel这类云端在线功能,它一概不管——项目作者在FAQ里对这个问题的回答干脆利落:No。
这个"是什么/不是什么"想清楚了,后面你就不会抱错期待。
用"大楼前台"的故事讲透钩子原理
别急着上手,先花两分钟弄懂它凭什么能行。这个原理用一个场景就能讲明白。
想象一栋办公楼,前台负责接待所有访客。Office每次启动,就像一位访客走到前台,例行公事地提交请求:"确认一下,我在楼里有合法工位吗?" 系统原本的前台会老实去翻会员系统,发现你没续费,于是回答"没有"。
ohook做的事情很巧妙:它把前台换成了"自己人"。访客的其他所有请求——问会议室在哪、找某位同事、借门禁卡——这位新前台都原样转给原来的同事处理,唯独"我有没有合法工位"这个问题,它永远笑眯眯地回答"有的,请进"。访客进了楼,该开会开会,该用会议室用会议室,一切照常。
对应到代码里:Office目录中的sppc.dll被换成了ohook编译的版本,但它的导出表里只有SLGetLicensingStatusInformation这一个函数被"动了手脚",其余上百个函数全部转发给真实的系统库(通过符号链接sppcs.dll指向System32\sppc.dll)。也就是说,整个系统只被"骗"了这一个回答,其余全部原样放行。
这就是为什么它和"改文件、打补丁"完全不同——它是搭了一座桥,而不是拆了一堵墙。
跟着我亲手走一遍:3步部署
部署的全部家当,就是两个文件加一条命令。以64位系统的Office C2R安装为例(官方步骤在 readme.md 里写得很清楚):
git clone https://gitcode.com/gh_mirrors/oh/ohook编译或直接取用sppc64.dll(32位系统对应sppc32.dll),然后打开管理员命令行,依次做三件事:
第一步,给系统库搭一座"桥":
mklink "%programfiles%\Microsoft Office\root\vfs\System\sppcs.dll" "%windir%\System32\sppc.dll"第二步,把钩子放到Office眼皮底下:
copy /y sppc64.dll "%programfiles%\Microsoft Office\root\vfs\System\sppc.dll"第三步,安装一个"空白密钥",让Office知道自己装的是哪个版本(拿不准就用营销名称去查):
| 版本 | 营销名称 | 空白密钥 |
|---|---|---|
| O365HomePrem | Microsoft 365家庭版 | NBBBB-BBBBB-BBBBB-BBBBG-234RY |
| O365ProPlus | Microsoft 365企业应用版 | NBBBB-BBBBB-BBBBB-BBBCF-PPK9C |
密钥装完,重启Word,横幅没了。整个过程五分钟,全程只动了Office自己的目录,系统层面只多了一条符号链接。
更进一步:普通版还是Plus版,先看完这张表再决定
项目提供两种构建,很多人在这一步纠结。别纠结,一张表搞定:
| 对比维度 | 普通版ohook | ohook+增强版 |
|---|---|---|
| 核心行为 | 只钩住许可证状态检查 | 额外改写注册表心跳值 |
| 系统改动 | 仅一条符号链接 | 会写入注册表项 |
| 防误报表现 | 更不容易被安全软件盯上 | 改动更"显眼" |
| 适用人群 | 绝大多数个人用户 | 遇到订阅心跳检查横幅的人 |
| 推荐度 | ⭐ 首选 | ⭐ 按需使用 |
普通版的思路是"能不动就不动";Plus版会额外把TimeOfLastHeartbeatFailure这个注册表值改到未来,用来阻止Office向微软服务器确认订阅到期时间(在源码里对应PLUS_BUILD宏,编译时加-DPLUS_BUILD即可构建)。默认建议先用普通版,只有当界面出现"检查此设备许可证状态时出现问题"之类的横幅,再考虑升级到Plus版。
四个最容易踩的坑,我替你提前踩过了
坑一:装了却还弹"检查许可证状态"横幅。某些版本会偷偷联网问ols.officeapps.live.com要订阅到期日,拿不到就弹通知。在hosts里加一行即可:
0.0.0.0 ols.officeapps.live.com坑二:杀毒软件把钩子当病毒。它是DLL代理类技术的产物,被误报很正常。优先用普通版,把文件加入白名单,并从官方仓库下载,别碰第三方改版。
坑三:觉得它和Mondo许可证方案等价。这是项目FAQ里预判的"头号问题"。Mondo 2016许可证虽然也能让Office跑起来,但那是老许可证,缺少新版Office的部分策略项,某些功能是否受影响根本无法验证;ohook用的是与所装版本匹配的正式许可证,功能完整性有保障。
坑四:指望它解锁在线功能。再次强调,OneDrive容量、云端AI这类在线服务不在它的管辖范围,本地功能满血不等于云端服务免费。
动手之前,把这三件事想清楚
第一,这个项目以MIT协议开源,作者明确说项目主要面向授权合作伙伴发布,不对普通用户提供直接技术支持——遇到问题,社区和文档就是你的主要依靠。
第二,它只是让Office"认为"自己有合法许可,属于灰色地带的工具。请把它用在技术研究和学习上,遵守你所在地区的法律与软件许可协议,有能力时支持正版。
第三,如果你只是想少一个弹窗、少一次续费焦虑,它确实值得一试。仓库就在文章开头那个命令里,clone下来翻一翻sppc.c和readme.md,你会比我更快理解这枚钩子的全部秘密。
哦对了,我三周没再见过那条黄横幅了。希望你的Word,也能安静下来。
【免费下载链接】ohookAn universal Office "activation" hook with main focus of enabling full functionality of subscription editions项目地址: https://gitcode.com/gh_mirrors/oh/ohook
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考