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 是一个面向 Office 的轻量钩子 DLL:把它放进 Office 目录后,订阅版(如 Microsoft 365)能通过本地许可校验,已装版本的全部本地功能随之可用。它适合在 Windows 上以 C2R(点击运行)方式安装 Office、但不打算支付订阅费用的用户。上手成本:3 条命令加 1 个空白密钥,干净环境里大约 5 分钟。
📋 部署前后的实际变化
场景设定:你装好了 Microsoft 365 家庭版,但没有绑定付费订阅。
| 观察点 | 部署前 | 部署后 |
|---|---|---|
| 打开 Word / Excel | 右下角显示未授权水印,编辑时有提示 | 无水印、无提示 |
| 本地功能 | 订阅版功能被限制或不可用 | 已装版本的功能集完整可用 |
| 状态查询(slui 3) | 许可无效 | 显示已激活 |
| 需要做的事 | 购买订阅,或等待提示消失 | Office 更新后重新核验一次 |
水印和提示不是"重启一下"就能解决的,它们来自 Office 启动时对许可状态的一次查询。ohook 改变的就是这次查询的返回结果。
🔍 许可状态替换的原理
一句话版本:Office C2R 启动时,优先从自己的 System 目录加载同名的 sppc.dll 来查询许可状态。ohook 把一份同名 DLL 放进这个目录,加载顺序(应用目录优先于系统目录)就让它生效了。
真正的校验只有一个入口:函数SLGetLicensingStatusInformation,每个 Office 应用启动时调用一次。钩子源码 里的实现会先调真实实现拿到结果,再把其中"未授权"的条目改写为已授权,并把宽限期和到期字段清零;全部逻辑不到 110 行。普通版与增强版的全部差异,由 构建配置 里一个编译宏控制。
| 对比点 | 调用前(直接查真实实现) | 调用后(经 ohook) |
|---|---|---|
| 实际加载的库 | 系统 sppc.dll(由 sppcs.dll 链接指过去) | ohook 的同名 DLL,目录优先级胜出 |
| 查询原始结果 | 未激活时返回未授权 | 相同——钩子先拿到真实状态 |
| 状态改写 | 无 | 改写为已授权,宽限期/到期清零 |
| Office 最终表现 | 水印、功能锁、订阅横幅 | 无提示,功能全开 |
| 在线订阅检查 | 部分版本会向订阅服务再发一次请求 | 普通版不动它;增强版通过注册表心跳时间戳拦截 |
顺带回答一个常见问题:为什么不直接装旧版本的许可文件(Mondo 2016 那类)?那些许可针对新版 Office 的产品策略不完整,无法确认哪些功能会悄悄不可用;用已装版本自身的许可,功能集合才是完整的。
🚀 三步完成 ohook 的激活部署
开始前准备两样东西:管理员终端、ohook 项目文件。以下以 64 位 Windows 上的 64 位 Office 为例:
git clone https://gitcode.com/gh_mirrors/oh/ohook cd ohook仓库里是源码和构建脚本,没有预编译产物:环境里有 MinGW 就执行 make 生成对应 DLL;已经拿到预编译 DLL 的话跳过构建。
第一步:创建系统库链接,让 Office 目录里的 sppcs.dll 指向系统的 sppc.dll:
mklink "%programfiles%\Microsoft Office\root\vfs\System\sppcs.dll" "%windir%\System32\sppc.dll"第二步:放入钩子 DLL,用钩子文件覆盖 Office 目录中的 sppc.dll:
copy /y sppc64.dll "%programfiles%\Microsoft Office\root\vfs\System\sppc.dll"第三步:安装空白密钥,用 slui 装入与已装版本对应的密钥,然后重启 Office:
slui 4 NBBBB-BBBBB-BBBBB-BBBBG-234RY版本与选项差异全部进表:
| 维度 | 普通版 | 增强版 |
|---|---|---|
| 文件名(64 位 / 32 位) | sppc64.dll / sppc32.dll | sppcplus64.dll / sppcplus32.dll |
| 许可状态钩子 | 有 | 有 |
| 修改注册表心跳时间戳 | 不修改 | 首次运行写入未来时间 |
| 在线订阅检查 | 不处理 | 拦截 |
| 使用建议 | 默认选它 | 出现在线检查横幅时再换 |
| 版本 ID | 营销名称 | 空白密钥 |
|---|---|---|
| O365HomePrem | Microsoft 365 家庭版 | NBBBB-BBBBB-BBBBB-BBBBG-234RY |
| O365ProPlus | Microsoft 365 企业应用版 | NBBBB-BBBBB-BBBBB-BBBCF-PPK9C |
🩺 部署自查与排错
动手前先过一遍检查项:
- ✅ Office 为 C2R 安装(路径含 root\vfs)
- ✅ 三条命令都在管理员终端执行
- ✅ DLL 位数与 Office 位数一致(64 位 Office 用 64 系列)
- ✅ 空白密钥与已装版本匹配
- ✅ 覆盖前备份了原有 sppc.dll,便于还原
出问题对照下表:
| 现象 | 可能原因 | 处理 |
|---|---|---|
| 出现"检查此设备许可证状态时出现问题"横幅 | 本地校验通过后,部分版本仍会在线请求订阅服务,收到"无订阅"回复 | hosts 中加入 0.0.0.0 ols.officeapps.live.com,或改用增强版 |
| 杀毒软件标记 sppc.dll | 替换系统组件同名实现的行为易被启发式拦截 | 核对文件来源,加白名单,或退回普通版 |
| 部署后水印仍在 | 密钥与版本不匹配,或 slui 未用管理员权限 | 对照密钥表,管理员终端重跑第三步 |
| Office 更新后状态回退 | 更新可能重写 System 目录中的文件 | 重跑第一、二步,再按维护节奏核验 |
| mklink 提示文件已存在 | 链接或同名文件已在 | 确认现有指向,备份后重建链接 |
🔁 更新验证与维护边界
不要依赖"以前一直是好的",按这个节奏来:
- 每次 Office 更新后立即验证:打开 Word 确认无水印;管理员终端执行 slui 3 查看许可状态;确认 System 目录里 sppc.dll 与 sppcs.dll 链接都在。缺了就重跑第一、二步的两条命令。
- 日常每月抽查一次:一次状态查询即可。日常使用未再见到异常提示的话,不用主动动它。
- 边界要说清:ohook 只改本地许可状态。依赖真实订阅账号的在线能力(OneDrive 1TB、Excel 在线服务等)不在范围内——这不是缺陷,是设计边界。
本项目以 MIT 协议发布。以上内容属于技术实现记录,在生产机器上执行前,请确认符合当地法律法规与软件许可协议;本文不承诺任何方式无风险,项目作者也未承诺提供直接的用户支持。
🧭 收尾:记住三件事,然后动手
- ohook 改的是启动时许可查询的返回结果,不是 Office 本体:落盘变化只有 1 条链接加 1 份同名 DLL,随时可整体还原。
- 普通版与增强版只差"是否写注册表心跳时间戳"一件事:默认从普通版开始,横幅出现再升级。
- 验证口径固定:无水印 + slui 3 显示已激活,才算通过;不靠"没见到提示"下结论。
下一步:打开 ohook 仓库拿到 DLL,然后在管理员终端执行第一条 mklink 命令。
【免费下载链接】ohookAn universal Office "activation" hook with main focus of enabling full functionality of subscription editions项目地址: https://gitcode.com/gh_mirrors/oh/ohook
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考