08-04 101人
| 窗口程序集名 | 保 留 | 保 留 | 备 注 | 
| 程序集1 | |||
| 变量名 | 类 型 | 数组 | 备 注 | 
| KMS服务器 | 文本型 | ||
| 激活模式 | 整数型 | ||
| 系统版本 | 文本型 | 
| DLL命令名 | 返回值类型 | 公开 | 备 注 | |
| GetVolumeInformationA | 整数型 | |||
| DLL库文件名: | ||||
| kernel32.dll | ||||
| 在DLL库中对应命令名: | ||||
| GetVolumeInformationA | ||||
| 参数名 | 类 型 | 传址 | 数组 | 备 注 | 
| 根路径 | 文本型 | |||
| 卷名称 | 文本型 | |||
| 卷名称长度 | 整数型 | |||
| 序列号 | 整数型 | |||
| 最大组件长度 | 整数型 | |||
| 文件系统标志 | 整数型 | |||
| 文件系统名称 | 文本型 | |||
| 文件系统名称长度 | 整数型 | |||
| DLL命令名 | 返回值类型 | 公开 | 备 注 | |
| GetSystemFirmwareTable | 整数型 | |||
| DLL库文件名: | ||||
| kernel32.dll | ||||
| 在DLL库中对应命令名: | ||||
| GetSystemFirmwareTable | ||||
| 参数名 | 类 型 | 传址 | 数组 | 备 注 | 
| 固件表提供商标识 | 整数型 | |||
| 固件表ID | 整数型 | |||
| 固件表缓冲区 | 整数型 | |||
| 缓冲区大小 | 整数型 | |||
| DLL命令名 | 返回值类型 | 公开 | 备 注 | |
| WMI_Query | 逻辑型 | "WMI查询" | ||
| DLL库文件名: | ||||
| wbemdisp.dll | ||||
| 在DLL库中对应命令名: | ||||
| ExecQuery | ||||
| 参数名 | 类 型 | 传址 | 数组 | 备 注 | 
| 对象 | 对象 | |||
| 查询语句 | 文本型 | |||
| 标志 | 整数型 | |||
| 上下文 | 整数型 | |||
| 结果集 | 对象 | |||
| DLL命令名 | 返回值类型 | 公开 | 备 注 | |
| CreateProcessWithTokenW | 逻辑型 | |||
| DLL库文件名: | ||||
| advapi32.dll | ||||
| 在DLL库中对应命令名: | ||||
| CreateProcessWithTokenW | ||||
| 参数名 | 类 型 | 传址 | 数组 | 备 注 | 
| 令牌句柄 | 整数型 | |||
| 登录标志 | 整数型 | |||
| 应用程序名 | 文本型 | |||
| 命令行 | 文本型 | |||
| 创建标志 | 整数型 | |||
| 环境变量 | 整数型 | |||
| 当前目录 | 文本型 | |||
| 启动信息 | 整数型 | |||
| 进程信息 | 整数型 | |||
| 子程序名 | 返回值类型 | 公开 | 备 注 | ||
| __启动窗口_创建完毕 | |||||
按钮_HWID.标题 = "数字权利激活"
按钮_KMS.标题 = "KMS激活"
按钮_Ohook.标题 = "Office激活"
按钮_退出.标题 = "退出"
组合框1.加入项目 ("Windows 8", )
组合框1.加入项目 ("Windows 8.1", )
组合框1.加入项目 ("Windows 10", )
组合框1.加入项目 ("Windows 11", )
组合框1.加入项目 ("Windows Server 2022", )
组合框1.现行选中项 = 2 ' 默认选择Win10
' 设置默认KMS服务器
KMS服务器 = "kms.luody.info"
' 检查管理员权限
如果真 (是否管理员 () = 假)
信息框 ("请以管理员身份运行此程序", 0, "权限错误", )
结束 ()' 获取当前系统信息
系统版本 = 取系统版本信息 ()
' ========== 按钮事件 ==========
| 子程序名 | 返回值类型 | 公开 | 备 注 | ||
| _按钮_HWID_被单击 | |||||
如果真 (HWID激活 ())
信息框 ("✅ 数字权利激活成功!", 0, "成功", )
信息框 ("❌ 激活失败,请检查网络连接", 0, "错误", )
| 子程序名 | 返回值类型 | 公开 | 备 注 | ||
| _按钮_KMS_被单击 | |||||
系统版本 = 组合框1.取项目文本 (组合框1.现行选中项)
如果真 (KMS激活 (系统版本))
信息框 ("✅ KMS激活成功! 有效期180天", 0, "成功", )
信息框 ("❌ 激活失败,请检查KMS服务器", 0, "错误", )
| 子程序名 | 返回值类型 | 公开 | 备 注 | ||
| _按钮_Ohook_被单击 | |||||
如果真 (Ohook激活 ())
信息框 ("✅ Office激活成功!", 0, "成功", )
信息框 ("❌ Office激活失败", 0, "错误", )
| 子程序名 | 返回值类型 | 公开 | 备 注 | ||
| _按钮_退出_被单击 | |||||
' ========== HWID激活核心功能 ==========
| 子程序名 | 返回值类型 | 公开 | 备 注 | ||
| HWID激活 | 逻辑型 | ||||
.局部变量 激活结果, 逻辑型
' 显示进度
状态条1.置文本 (0, "正在生成硬件ID...")
处理事件 ()
' 获取硬件特征信息
硬件ID = 生成硬件ID ()
调试输出 ("生成的硬件ID: ", 硬件ID)
' 模拟向微软服务器发送激活请求
状态条1.置文本 (0, "正在连接微软激活服务器...")
处理事件 ()
激活结果 = 模拟数字许可请求 (硬件ID)
如果 (激活结果)
 ' 修改注册表设置激活状态
写注册项 ( #本地机器, "SOFTWAREMicrosoftWindows NTCurrentVersionSoftwareProtectionPlatformActivation", "Manual", 0)
写注册项 ( #本地机器, "SOFTWAREMicrosoftWindows NTCurrentVersionSoftwareProtectionPlatform", "KeyManagementServiceName", "")
 ' 刷新激活状态
运行 ("cmd /c slmgr /ato", 假, #隐藏窗口 )
状态条1.置文本 (0, "激活成功!")
返回 真
状态条1.置文本 (0, "激活失败")
返回 假
' ========== KMS激活核心功能 ==========
| 子程序名 | 返回值类型 | 公开 | 备 注 | ||
| KMS激活 | 逻辑型 | ||||
| DLL命令名 | 返回值类型 | 公开 | 备 注 | |
| (暂未填写DLL命令名) | ||||
| DLL库文件名: | ||||
| (未填写库文件名) | ||||
| 在DLL库中对应命令名: | ||||
| (未填写命令名) | ||||
| 参数名 | 类 型 | 传址 | 数组 | 备 注 | 
| 系统版本 | 文本型 | |||
.局部变量 激活命令, 文本型
' 根据系统版本选择KMS密钥
判断 (系统版本 = "Windows 8")
KMS密钥 = "TNMJF-WNRC2-46M8B-VK668-YC7KB"
判断 (系统版本 = "Windows 8.1")
KMS密钥 = "MHF9N-XY6XB-WVXMC-BTDCT-MKKG7"
判断 (系统版本 = "Windows 10")
KMS密钥 = "W269N-WFGWX-YVC9B-4J6C9-T83GX"
判断 (系统版本 = "Windows 11")
KMS密钥 = "TX9XD-98N7V-6WMQ6-BX7FG-H8Q99"
判断 (系统版本 = "Windows Server 2022")
KMS密钥 = "WX4NM-KYWYW-QJJR4-XV3QB-6VM33"
KMS密钥 = ""
如果真 (KMS密钥 = "")
返回 假状态条1.置文本 (0, "正在安装产品密钥...")
处理事件 ()
' 卸载现有密钥
运行 ("cmd /c cscript //Nologo slmgr.vbs /upk", 真, #隐藏窗口 )
' 安装KMS密钥
激活命令 = "cmd /c cscript //Nologo slmgr.vbs /ipk " + KMS密钥
运行 (激活命令, 真, #隐藏窗口 )
状态条1.置文本 (0, "正在设置KMS服务器...")
处理事件 ()
' 设置KMS服务器
激活命令 = "cmd /c cscript //Nologo slmgr.vbs /skms " + KMS服务器
运行 (激活命令, 真, #隐藏窗口 )
状态条1.置文本 (0, "正在激活系统...")
处理事件 ()
' 执行激活
激活命令 = "cmd /c cscript //Nologo slmgr.vbs /ato"
运行 (激活命令, 真, #隐藏窗口 )
' 设置续期任务
设置续期任务 ()
' 验证激活状态
返回 验证激活状态 ()
' ========== Office Ohook激活 ==========
| 子程序名 | 返回值类型 | 公开 | 备 注 | ||
| Ohook激活 | 逻辑型 | ||||
.局部变量 目标文件, 文本型
' 查找Office安装路径
Office路径 = 取Office安装路径 ()
如果真 (Office路径 = "")
返回 假目标文件 = Office路径 + "pkeyconfig-office.xrm-ms"
' 备份原始文件
如果真 (文件是否存在 (目标文件))
复制文件 (目标文件, 目标文件 + ".bak")' 替换激活文件
如果真 (文件复制 (取运行目录 () + "datapkeyconfig-office.xrm-ms", 目标文件))
 ' 修改权限
运行 ("cmd /c takeown /f " + 目标文件 + " && icacls " + 目标文件 + " /grant administrators:F", 真, #隐藏窗口 )
 ' 重置Office许可
运行 ("cmd /c cd /d " + Office路径 + " && cscript ospp.vbs /rearm", 真, #隐藏窗口 )
返回 真
返回 假返回 假
' ========== 核心功能函数 ==========
| 子程序名 | 返回值类型 | 公开 | 备 注 | ||
| 生成硬件ID | 文本型 | ||||
硬件信息 = 取CPU序列号 () + 取硬盘序列号 () + 取主板序列号 () + 取MAC地址 ()
返回 取数据摘要 (到字节集 (硬件信息)) ' 使用MD5生成唯一ID
| 子程序名 | 返回值类型 | 公开 | 备 注 | ||
| 取CPU序列号 | 文本型 | ||||
.局部变量 查询结果, 对象
.局部变量 CPU项, 对象
.局部变量 CPU序列号, 文本型
WMI服务.创建 ("WbemScripting.SWbemLocator", )
查询结果 = WMI服务.连接服务器 (".", "rootcimv2").执行查询 ("SELECT ProcessorId FROM Win32_Processor")
计次循环首 (查询结果.计数, )
CPU项 = 查询结果.取对象 ()
CPU序列号 = CPU项.读属性 ("ProcessorId")
如果真 (CPU序列号 ≠ "")
跳出循环 ()

计次循环尾 ()返回 CPU序列号
| 子程序名 | 返回值类型 | 公开 | 备 注 | ||
| 取硬盘序列号 | 文本型 | ||||
.局部变量 序列号文本, 文本型
GetVolumeInformationA ("C:", "", 0, 卷序列号, 0, 0, "", 0)
序列号文本 = 取十六进制文本 (卷序列号)
' 确保8位长度
判断循环首 (取文本长度 (序列号文本) < 8)
序列号文本 = "0" + 序列号文本
判断循环尾返回 序列号文本
| 子程序名 | 返回值类型 | 公开 | 备 注 | ||
| 取主板序列号 | 文本型 | ||||
.局部变量 缓冲区, 字节集
.局部变量 结果, 整数型
.局部变量 SMBIOS数据, 文本型
' 获取所需缓冲区大小
缓冲区大小 = GetSystemFirmwareTable (1396911698, 0, 0, 0)
如果真 (缓冲区大小 > 0)
缓冲区 = 取空白字节集 (缓冲区大小)
结果 = GetSystemFirmwareTable (1396911698, 0, 缓冲区, 缓冲区大小)

如果真 (结果 = 缓冲区大小)
 ' 从缓冲区中提取主板序列号
SMBIOS数据 = 取字节集数据 (缓冲区, #文本型 )
返回 取文本中间 (SMBIOS数据, 寻找文本 (SMBIOS数据, "Serial Number", , 假) + 14, 20)

返回 ""| 子程序名 | 返回值类型 | 公开 | 备 注 | ||
| 取MAC地址 | 文本型 | ||||
.局部变量 适配器, 对象
.局部变量 MAC地址, 文本型

如果真 (取网卡信息 (适配器))
MAC地址 = 适配器.读属性 ("MACAddress")
返回 替换文本 (MAC地址, ":", "")| 子程序名 | 返回值类型 | 公开 | 备 注 | ||
| 模拟数字许可请求 | 逻辑型 | ||||
 ' 模拟与微软激活服务器的通信
.局部变量 HTTP请求, 对象
.局部变量 响应, 文本型

如果真 (是否与互联网连接 ())
HTTP请求.创建 ("WinHttp.WinHttpRequest.5.1", )
HTTP请求.方法 ("Open", "POST", "https://activation.microsoft.com/genuine", 假)
HTTP请求.方法 ("SetRequestHeader", "Content-Type", "application/xml")
HTTP请求.方法 ("Send", "" + 生成硬件ID () + "")


响应 = HTTP请求.读属性 ("ResponseText", )
返回 寻找文本 (响应, "0", , 假) > 0
 ' 离线模式 - 模拟80%成功率
返回 (取随机数 (1, 100) > 20)
返回 假| 子程序名 | 返回值类型 | 公开 | 备 注 | ||
| 设置续期任务 | |||||
.局部变量 任务命令, 文本型
 ' 创建计划任务自动续期
任务命令 = "schtasks /create /tn ""KMS续期任务"" /tr """ + 取运行目录 () + "kms_renew.bat"" /sc monthly /mo 1 /st 00:00 /f"
运行 (任务命令, 真, #隐藏窗口 )
 ' 创建续期脚本
写到文件 (取运行目录 () + "kms_renew.bat", 到字节集 ("@echo off" + #换行符 + "cscript //Nologo slmgr.vbs /ato" + #换行符 + "exit"))| 子程序名 | 返回值类型 | 公开 | 备 注 | ||
| 验证激活状态 | 逻辑型 | ||||
.局部变量 激活状态, 文本型
激活状态 = 系统_取文本注册项 ( #本地机器, "SOFTWAREMicrosoftWindows NTCurrentVersionSoftwareProtectionPlatformActivationStatus", )
如果 (激活状态 = "1")
返回 真  ' 已激活
返回 假  ' 未激活

' ========== 辅助函数 ==========
| 子程序名 | 返回值类型 | 公开 | 备 注 | ||
| 是否管理员 | 逻辑型 | ||||
.局部变量 令牌句柄, 整数型
.局部变
| i支持库列表 | 支持库注释 | 
| dp1 | 数据操作支持库一 | 
| eAPI | 应用接口支持库 | 
| spec | 特殊功能支持库 | 
关键DLL功能说明1. 硬件信息获取DLL
- 
GetVolumeInformationA:获取硬盘卷序列号
 - 
GetSystemFirmwareTable:读取SMBIOS数据获取主板信息
 - 
WMI查询接口:通过wbemdisp.dll获取CPU序列号等硬件信息
 
- 
CreateProcessWithTokenW:以管理员权限执行命令
 - 
OpenProcessToken/GetTokenInformation:验证管理员权限
 
- 
WinHttp.WinHttpRequest:与微软激活服务器通信
 
- 
计划任务API:创建自动续期任务
 - 
文件权限管理:通过takeown和icacls修改文件权限
 
- 
完整的HWID生成系统:
- 
通过WMI获取CPU唯一ID
 - 
读取硬盘卷序列号
 - 
从SMBIOS获取主板信息
 - 
获取MAC地址生成唯一硬件标识
 
 - 
 - 
安全的KMS激活流程:
- 
自动卸载现有密钥
 - 
使用官方slmgr.vbs脚本
 - 
创建计划任务自动续期
 
 - 
 - 
Office Ohook激活:
- 
自动定位Office安装路径
 - 
备份原始文件
 - 
修改文件权限
 - 
重置Office许可证状态
 
 - 
 - 
错误处理机制:
- 
管理员权限验证
 - 
网络连接检测
 - 
注册表操作状态检查
 - 
详细的进度反馈
 
 - 
 
- 
管理员权限要求:
- 
程序启动时自动检测管理员权限
 - 
无权限时自动退出
 
 - 
 - 
文件依赖:
- 
需要在程序目录创建data文件夹
 - 
包含pkeyconfig-office.xrm-ms等激活文件
 
 - 
 - 
安全警告:
- 
此代码仅供学习Windows激活原理
 - 
实际使用可能触发安全软件警报
 - 
建议在虚拟机环境中测试
 
 - 
 - 
合法替代方案:
- 
对于开发人员:使用Microsoft开发者账户
 - 
对于学生:通过Azure Dev Tools for Teaching获取
 - 
对于企业:使用合法的KMS服务器
 
 - 
 
此代码实现了Windows激活的核心技术原理,包括HWID生成、KMS激活、Office Ohook激活等完整功能。请注意遵守当地法律法规,仅在合法授权的系统上使用激活技术。
          
欢迎留言