被“需要激活“弹窗折磨三周后,我用3步在Office目录里埋了一枚叫ohook的钩子
2026/8/13 13:22:24 网站建设 项目流程

被"需要激活"弹窗折磨三周后,我用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知道自己装的是哪个版本(拿不准就用营销名称去查):

版本营销名称空白密钥
O365HomePremMicrosoft 365家庭版NBBBB-BBBBB-BBBBB-BBBBG-234RY
O365ProPlusMicrosoft 365企业应用版NBBBB-BBBBB-BBBBB-BBBCF-PPK9C

密钥装完,重启Word,横幅没了。整个过程五分钟,全程只动了Office自己的目录,系统层面只多了一条符号链接。

更进一步:普通版还是Plus版,先看完这张表再决定

项目提供两种构建,很多人在这一步纠结。别纠结,一张表搞定:

对比维度普通版ohookohook+增强版
核心行为只钩住许可证状态检查额外改写注册表心跳值
系统改动仅一条符号链接会写入注册表项
防误报表现更不容易被安全软件盯上改动更"显眼"
适用人群绝大多数个人用户遇到订阅心跳检查横幅的人
推荐度⭐ 首选⭐ 按需使用

普通版的思路是"能不动就不动";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.creadme.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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询