订阅过期横幅又弹出来?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
如果你用的是订阅版 Office,也就是 Microsoft 365,多半见过那条刺眼的横幅:"你的订阅已过期,部分功能不可用"。本文要介绍的 ohook,正是一个让订阅版 Office 全功能可用的开源"激活钩子":代码量极小、不碰系统核心、部署只要几条命令,而且随时可逆。
上周同事阿凯在周会上忍不住吐槽:他的 Excel 高级图表灰了,Word 的专业模板没了,每次保存都要先点掉一个激活弹窗。他算了一笔账——一年订阅费几百块,换算下来够吃两顿火锅。我问他:"要不要试试一条'野路子'?"于是我们花了大概一首歌的时间折腾完,他的 Office 恢复了满血状态,横幅再也没出现。
摆在他面前的两条路,也是你面前的两条路
遇到订阅过期,无非两条路:
| 路线 | 做法 | 花销 | 心态 |
|---|---|---|---|
| 路线 A | 乖乖续费 | 每年几百 | 省心省事,就是钱包疼 |
| 路线 B | 部署 ohook | 0 | 要动手,还要懂一点原理 |
路线 B 之所以值得考虑,是因为 ohook 是一个完全开源的小工具(MIT 协议),所有源码都摆在仓库里,随便翻、随便审查。它的目标非常单纯:让订阅版 Office 的本地功能全部可用,不做破解补丁、不伪造证书那套事。
一句话版本:Office 启动时会问系统"我有没有有效许可证?",ohook 守在中间,替系统回答"当然有"。
它到底动了什么手脚?一个"对账单"的比喻
把原理讲得生活化一点。
Office 每次启动都要查一遍自己的"许可证账本",确认资格是否有效、还剩多少天。正常情况下,这本账由系统的软件授权服务统一管理,Office 只需要按规定翻一翻。
ohook 的做法很取巧:它把自己伪装成一个同名 DLL(sppc.dll),放进 Office 自己的目录里。Office 启动时会优先加载它,于是每一次"翻账本"的动作,都落在了 ohook 手上——ohook 把系统返回的"未授权"当场改写为"已授权",把到期时间清零,然后再把其余查询原样转发给真实的系统库。
整个过程发生在内存层面,没有任何许可证文件被伪造,系统目录里的文件也一个没动。这就是它"干净"的地方:唯一被改变的,只是 Office 加载 DLL 的位置。删除文件即卸载,可逆性拉满。
整个项目的核心逻辑集中在一个 C 文件里(sppc.c),构建后产出的就是那个小小的 DLL。没有后台服务、没有常驻进程、没有庞大的运行时依赖,简洁得有点"朴素"。
上手:三步部署,再加一个可选步骤
动手之前,先做三件确认:
- 确认 Office 是 C2R(Click-to-Run)安装模式,安装路径下存在
root\vfs\System目录 - 确认位数匹配:32 位系统配 32 位 DLL,64 位配 64 位,不要混用
- 全程使用管理员身份打开命令行
下面以最常见的"64 位系统 + 64 位 Office"为例。
第 1 步:拿到钩子文件
把项目克隆到本地(也可以直接用编译好的sppc64.dll,省去自己编译的麻烦):
git clone https://gitcode.com/gh_mirrors/oh/ohook这一步只是把文件拿到手,没有任何"安装"动作。
第 2 步:铺一条"回廊"
在 Office 的目录里创建一个符号链接,指向系统的真实许可库:
mklink "%programfiles%\Microsoft Office\root\vfs\System\sppcs.dll" "%windir%\System32\sppc.dll"作用:给 Office 留一条通往"真实系统许可库"的通道,让钩子 DLL 把自己不处理的调用转交给它。系统文件本身保持原样。
第 3 步:放钩子 + 装空白密钥
把钩子 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 |
重新打开任意 Office 应用,横幅消失,灰掉的功能全部点亮。
可选第 4 步:处理"检查许可证"横幅
部分版本重启后可能弹出"检查此设备许可证状态时出现问题"的提示,这是 Office 在偷偷联网核对订阅到期时间。两种处理任选其一:
- 在 hosts 文件里加一行
0.0.0.0 ols.officeapps.live.com,直接阻断联网核对 - 换用 plus 版钩子,它会在注册表写入一条未来的"心跳失败时间",让 Office 跳过在线检查
四个高频疑问,一次说清
Q1:为什么不用现成的 Mondo 授权方案?
Mondo 2016 授权虽然能让各组件跑起来、也支持 KMS,但它对较新版本的 Office 只做了部分更新,策略条目不完整,某些功能可能悄悄失效。ohook 用的是你当前版本对应的正确许可证,每个功能都按设计工作。
Q2:普通版和 plus 版怎么选?
普通版只做"应答"这一件事,对系统改动最小,也最不容易被安全软件误报,日常优先用普通版;只有出现横幅提示时才考虑 plus 版。
Q3:能解锁 OneDrive 1TB、Python in Excel 这些在线功能吗?
不能。这些依赖微软云端的账号体系,钩子拦不住。
Q4:Office 更新之后还能用吗?
Office 升级可能覆盖掉目录里的钩子文件,偶尔需要重新部署一次。它不是"装一次管三年"的免维护方案,动手前要有这个预期。
什么时候该果断放弃 ohook?
| 场景 | 结论 |
|---|---|
| 想要 OneDrive 1TB、Python in Excel 等云端能力 | 别指望它,钩子管不到云端 |
| Office 不是 C2R 安装模式 | 直接划走,不适用 |
| 完全不想动手、不想看任何原理 | 可能会折腾出一肚子火 |
| 接受不了杀毒软件告警 | 钩子类工具可能触发误报,需要加白名单 |
| 需要官方技术支持 | 作者明确不为普通用户提供直接支持 |
它诚实的地方在于:解决的是"本地订阅功能解锁",解决不了任何云端能力。这不是缺陷,而是它刻意保持的克制。
最后,把选择权交给你
一边是每年几百块的订阅费,换来省心与官方保障;一边是几分钟的部署,换来本地全功能,但需要你懂一点原理、承担一点风险。
你更看重哪一边?如果你已经部署成功,欢迎在评论区聊聊你的 Office 版本和踩过的坑,帮后来人少走几步弯路。
⚠️ 合规提醒:本文所述内容仅用于技术研究与学习目的。请在遵守当地法律法规及软件许可协议的前提下使用,有条件请支持正版,尊重开发者的劳动。
【免费下载链接】ohookAn universal Office "activation" hook with main focus of enabling full functionality of subscription editions项目地址: https://gitcode.com/gh_mirrors/oh/ohook
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考