Office 永久激活新思路ohook 钩子方案 3 步搞定全程无需修改系统文件【免费下载链接】ohookAn universal Office activation hook with main focus of enabling full functionality of subscription editions项目地址: https://gitcode.com/gh_mirrors/oh/ohook如果你正在寻找一种不折腾的Office 永久激活方案这篇文章介绍的 ohook 可能是你见过最反常识的一个它不破解任何加密不修改任何系统文件不依赖任何在线服务器却能让订阅版 Microsoft 365 的完整功能长期可用。它的全部秘密只藏在 Office 启动时那句问话里。先看一个反转ohook 不是破解工具是一个传话筒大多数人以为激活 Office 只能和它的许可机制硬碰硬改文件、改注册表、伪造 KMS 服务器。ohook 的思路完全反过来——它什么都不破坏只是让 Office听到它想听的答案。把场景翻译成人话Office 每次启动都会调用系统里的一个函数SLGetLicensingStatusInformation问一句我的许可证状态正常吗。正常流程里这个函数会如实返回未授权或已过期。ohook 做的只有一件事在 Office 的加载目录里放一个冒名顶替的sppc.dll把回答许可证状态这个函数换成自己的版本。Office 问它答已授权仅此而已。但问题来了Office 还需要调用系统 DLL 里几十个其他函数安装许可证、验证密钥、管理会话等被顶替之后它们怎么办答案藏在项目源码的导出表sppc.def里LIBRARY sppc.dll EXPORTS ;hooked function SLGetLicensingStatusInformation SLGetLicensingStatusInformationHook ;everything else SLCallServer SPPCS.SLCallServer SLClose SPPCS.SLClose SLInstallLicense SPPCS.SLInstallLicense ...看懂这段就理解了 ohook 的全部设计除了被钩住的许可证状态检查函数其余所有 API 一律转发给真正的系统sppc.dll——也就是部署时通过符号链接生成的sppcs.dll。系统文件原地不动Office 需要的真实服务照常运转只有许可证状态这一个答案被悄悄改写。这就是无需修改系统文件的真正含义不破坏任何东西只是在 Office 的门口多站了一个传话筒。动手前先做决策普通版还是 ohook编译之前先花三十秒决定用哪个版本。项目用-DPLUS_BUILD宏区分两种构建Makefile一次会产出四个 DLL。两者的差别其实很小对比项ohook普通版ohook增强版钩住许可证状态检查✅✅改写注册表心跳时间不修改✅ 写入TimeOfLastHeartbeatFailure对系统的侵入程度低较高被安全软件误报的概率更低略高适用场景大多数情况首选出现订阅横幅时兜底一句话建议默认编译普通版。只有当你遇到检查此设备许可证状态时出现问题这类横幅才换 ohook——它会自动把HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Common\Licensing\Resiliency下的TimeOfLastHeartbeatFailure改写为2040-01-01T00:00:00Z跳过 Office 对订阅到期时间的在线查询。3 步部署流程从源码到激活全程可逆原理和版本都定好了上手只需三个动作而且每一步都可逆——随时删掉符号链接和 DLL系统恢复原状。以 64 位 C2RClick-to-Run安装的 Office 为例。第 1 步拉取源码并编译git clone https://gitcode.com/gh_mirrors/oh/ohook cd ohook项目基于 MinGW 交叉编译。先按本机环境把Makefile里的PREFIX32、PREFIX64指向 MinGW 路径然后执行make一次性得到 32 位和 64 位共四个 DLLsppc32.dll、sppc64.dll普通版sppcplus32.dll、sppcplus64.dll增强版。这一步是所有后续动作的前提——我们后面要直接把这些编译产物送进 Office 的加载目录。第 2 步建立传话筒并放置钩子64 位 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第一行创建符号链接sppcs.dll指向系统真正的sppc.dll——这是上文转发机制的落地点第二行把编译好的钩子 DLL 以sppc.dll的名字放进目录让 Office 加载时优先选中它。为什么分两个文件sppc.dll负责说谎sppcs.dll负责跑腿职责清楚。想还原系统删掉这两个文件即可。第 3 步安装空白密钥最后给当前订阅版本装一个空白密钥让 Office 认领对应的产品 SKUOffice 版本营销名称空白密钥O365HomePremMicrosoft 365 家庭版NBBBB-BBBBB-BBBBB-BBBBG-234RYO365ProPlusMicrosoft 365 企业应用版NBBBB-BBBBB-BBBBB-BBBCF-PPK9C重启 Word红色横幅消失订阅版功能完整可用Office 永久激活就此完成。拆开源码一次克制的撒谎如果你想知道它凭什么撒谎得这么干净核心逻辑其实只有几行全部集中在sppc.cfor(int i 0; i *pnStatusCount; i) { if((*ppLicensingStatusi)-eStatus SL_LICENSING_STATUS_UNLICENSED) continue; if(IsGracePeriodProduct(hSLC, ((*ppLicensingStatusi)-SkuId))) continue; (*ppLicensingStatusi)-eStatus SL_LICENSING_STATUS_LICENSED; (*ppLicensingStatusi)-dwGraceTime 0; (*ppLicensingStatusi)-dwTotalGraceDays 0; (*ppLicensingStatusi)-hrReason 0; (*ppLicensingStatusi)-qwValidityExpiration 0; }两个continue是刻意的克制不碰未授权的 SKU也不碰宽限期产品只对本该有效的许可证回答没问题。这种最小干预正是它兼容 Office 更新的来源——它改的不是 Office 的文件而是 Office 启动时的一次对话。实战复盘部署后最可能遇到的三种情况⚠️ 订阅横幅依然出现部分版本会在许可证状态检查之后访问ols.officeapps.live.com查询订阅到期日。在 hosts 文件里加一行即可0.0.0.0 ols.officeapps.live.com⚠️ 杀毒软件误报钩子 DLL 的行为容易被安全软件误判。稳妥的做法是从官方仓库获取文件、优先使用普通版、把文件加入白名单而不是直接关闭防护。⚠️ OneDrive 1TB、Python in Excel 用不了这类在线功能依赖微软账号体系本地钩子管不到ohook 也明确表示不会去管——别指望它。这不是缺陷而是它的边界。顺带解答一个高频疑问为什么不直接用 Mondo 2016 许可证因为那是为老版本 Office 设计的产品策略product policy缺了不少新版本条目部分新功能可能悄悄失效。ohook 用的是当前安装版本的正式许可证功能才是完整的。下一步由你决定如果你正被 Microsoft 365 的订阅成本困扰ohook 提供了一条干净、可逆、不碰系统文件的路径拉下源码编译两个 DLL两条命令部署装一个空白密钥然后打开 Word 验证效果。项目采用 MIT 协议开源遇到问题可以在仓库提交 issue也可以顺手收藏关注后续对更多 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),仅供参考