本指南说明了如何通过修改注册表,来伪造或更改特定 Windows 更新(KB 补丁)的安装时间。此方法基于对 Windows CBS (Component Based Servicing) 机制的分析。
1. 原理背景
Windows 操作系统(以及依赖读取注册表的大部分补丁扫描工具,如 LeakRepair 项目)会将补丁的安装信息存储在注册表的 CBS\Packages 路径下。
每个补丁在此路径下会以 Package_..._for_KBXXXXXX... 的形式存在一个或多个项(Key)。
记录安装时间的核心键值对(Values)有两个:
InstallTimeHigh(REG_DWORD)InstallTimeLow(REG_DWORD)
这两个值组合成了一个 64 位的 FILETIME,代表自 1601 年 1 月 1 日以来的 100 纳秒间隔数。
多项覆盖规则:如果同一个 KB 号有多个 Package 项(例如
Package_1...、Package_2...),由于程序遍历注册表时的顺序是默认枚举顺序,后面的项会覆盖前面项读取到的时间。为了确保修改生效,建议将该 KB 号对应的所有 Package 项的时间全部统一修改。
2. 修改步骤
第一步:计算目标时间对应的注册表值
由于注册表使用的是特殊的 64 位 FILETIME,且被拆分成了高位和低位,手动计算非常困难。
请使用下方提供的 Python 脚本,将您期望的人类可读时间(如 2026-07-24 15:00:00)转换出要填入注册表的值。
第二步:定位注册表路径
- 按下
Win + R键,输入regedit,回车打开“注册表编辑器”。 - 导航至以下路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages - 使用
Ctrl + F快捷键,在Packages目录下搜索你要修改的 KB 编号(例如KB5005537)。 - 你会找到一个或多个形如
Package_X_for_KB5005537~...的子项。
第三步:修改键值
针对搜索到的每一个相关的 Package 项,执行以下操作:
- 在右侧窗口找到
InstallTimeHigh和InstallTimeLow(如果没有则可以手动新建DWORD (32位) 值)。 - 双击打开,将基数选择为 十六进制。
- 填入 Python 脚本计算出的对应数值(无需带
0x前缀)。 - 确认保存。修改立即生效,下次扫描程序时就会读取到你设定的时间。
3. 时间计算辅助脚本 (Python)
将以下代码保存为 calc_kb_time.py 并运行:
1 | import datetime |
运行示例
1 | === Windows KB 安装时间生成器 === |