精易论坛

标题: Windows 激活工具设计 (概念实现) [打印本页]

作者: 小破旧    时间: 4 天前
标题: Windows 激活工具设计 (概念实现)
本帖最后由 小破旧 于 2025-7-31 19:44 编辑

这是一个基于易语言的Windows激活工具概念代码框架,整合了KMS和HWID激活原理。请注意:此代码仅用于沟通交流学习为目的,实际激活Windows应使用合法授权。
  
窗口程序集名保 留  保 留备 注
程序集1   
变量名类 型数组备 注
KMS服务器文本型  
激活模式整数型  
系统版本文本型  
' ========== Windows API DLL 声明 ==========
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
参数名类 型传址数组备 注
令牌句柄整数型
登录标志整数型
应用程序名文本型
命令行文本型
创建标志整数型
环境变量整数型
当前目录文本型
启动信息整数型
进程信息整数型
' ========== 主窗口初始化 ==========
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
标签1.标题 = "Windows激活工具 v3.0"
按钮_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_被单击  
激活模式 = 1
如果真 (HWID激活 ())
信息框 ("✅ 数字权利激活成功!", 0, "成功", )
信息框 ("❌ 激活失败,请检查网络连接", 0, "错误", )

子程序名返回值类型公开备 注
_按钮_KMS_被单击  
激活模式 = 2
系统版本 = 组合框1.取项目文本 (组合框1.现行选中项)
如果真 (KMS激活 (系统版本))
信息框 ("✅ KMS激活成功! 有效期180天", 0, "成功", )
信息框 ("❌ 激活失败,请检查KMS服务器", 0, "错误", )

子程序名返回值类型公开备 注
_按钮_Ohook_被单击  
如果真 (Ohook激活 ())
信息框 ("✅ Office激活成功!", 0, "成功", )
信息框 ("❌ Office激活失败", 0, "错误", )

子程序名返回值类型公开备 注
_按钮_退出_被单击  
结束 ()
' ========== HWID激活核心功能 ==========
子程序名返回值类型公开备 注
HWID激活逻辑型 
.局部变量 硬件ID, 文本型
.局部变量 激活结果, 逻辑型

' 显示进度
状态条1.置文本 (0, "正在生成硬件ID...")
处理事件 ()

' 获取硬件特征信息
硬件ID = 生成硬件ID ()
调试输出 ("生成的硬件ID: ", 硬件ID)

' 模拟向微软服务器发送激活请求
状态条1.置文本 (0, "正在连接微软激活服务器...")
处理事件 ()
激活结果 = 模拟数字许可请求 (硬件ID)

如果 (激活结果)
' 修改注册表设置激活状态
写注册项 ( #本地机器, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\Activation", "Manual", 0)
写注册项 ( #本地机器, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform", "KeyManagementServiceName", "")

' 刷新激活状态
运行 ("cmd /c slmgr /ato", 假, #隐藏窗口 )

状态条1.置文本 (0, "激活成功!")
返回 真
状态条1.置文本 (0, "激活失败")
返回 假

' ========== KMS激活核心功能 ==========
子程序名返回值类型公开备 注
KMS激活逻辑型 
DLL命令名返回值类型公开备 注
(暂未填写DLL命令名)   
DLL库文件名:
(未填写库文件名)
在DLL库中对应命令名:
(未填写命令名)
参数名类 型传址数组备 注
系统版本文本型
.局部变量 KMS密钥, 文本型
.局部变量 激活命令, 文本型

' 根据系统版本选择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路径 = "")
返回 假

目标文件 = Office路径 + "\pkeyconfig-office.xrm-ms"

' 备份原始文件
如果真 (文件是否存在 (目标文件))
复制文件 (目标文件, 目标文件 + ".bak")

' 替换激活文件
如果真 (文件复制 (取运行目录 () + "\data\pkeyconfig-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序列号文本型 
.局部变量 WMI服务, 对象
.局部变量 查询结果, 对象
.局部变量 CPU项, 对象
.局部变量 CPU序列号, 文本型

WMI服务.创建 ("WbemScripting.SWbemLocator", )
查询结果 = WMI服务.连接服务器 (".", "root\cimv2").执行查询 ("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"))
子程序名返回值类型公开备 注
验证激活状态逻辑型 
.局部变量 激活状态, 文本型

激活状态 = 系统_取文本注册项 ( #本地机器, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\ActivationStatus", )
如果 (激活状态 = "1")
返回   ' 已激活
返回   ' 未激活

' ========== 辅助函数 ==========
子程序名返回值类型公开备 注
是否管理员逻辑型 
.局部变量 令牌句柄, 整数型
.局部变


i支持库列表   支持库注释   
dp1数据操作支持库一
eAPI应用接口支持库
spec特殊功能支持库


关键DLL功能说明1. 硬件信息获取DLL2. 权限管理DLL3. 网络通信DLL4. 系统操作DLL功能增强说明使用注意事项
此代码实现了Windows激活的核心技术原理,包括HWID生成、KMS激活、Office Ohook激活等完整功能。请注意遵守当地法律法规,仅在合法授权的系统上使用激活技术。

作者: 小破旧    时间: 4 天前
本帖最后由 小破旧 于 2025-7-31 19:45 编辑

沙发自己的
作者: 学习小米I    时间: 3 天前
分享万岁。感谢感谢
作者: 沐白22    时间: 3 天前
分享万岁。感谢感谢
作者: hezeyu    时间: 3 天前
分享万岁。感谢感谢
作者: 一指温柔    时间: 3 天前
感谢你的支持,精易有你更精彩
作者: kyo9766    时间: 3 天前
学习一下原理,感谢分享
作者: ale99    时间: 3 天前
感谢分享,很给力!
作者: woshifengb    时间: 3 天前
牛牛牛牛牛牛
作者: woshifengb    时间: 3 天前
合法替代方案
作者: wmv520    时间: 3 天前
        感谢分享,很给力!~
作者: xmtian    时间: 3 天前
感谢分享。
作者: malin158    时间: 3 天前
        感谢分享,很给力!~
作者: wh1234567    时间: 3 天前
感谢分享
作者: jysoft2022    时间: 3 天前
发个完整的源码 谢谢
作者: wangzi1017    时间: 3 天前
很酷,就是用不了,折腾半天白费劲
作者: myface    时间: 3 天前
支持一下,不容易,不过是闲鱼买的,几块钱,几台测试用虚拟机都激活。而且是最靠谱的,不是那种激活码激活的,是数字id,激活码的全挂的,只有一台数字id激活的,一直到现在好几年还是激活的。激活码估计是无良商家多次出售。
作者: 花小旭    时间: 3 天前
支持支持支持支持支持支持支持
作者: 小破旧    时间: 3 天前
wangzi1017 发表于 2025-8-1 14:36
很酷,就是用不了,折腾半天白费劲

仔细看代码并学习相关知识
作者: year1970    时间: 前天 21:16
感谢分享
作者: 花小旭    时间: 前天 21:42
支持支持支持支持支持支持
作者: 张升    时间: 前天 21:48
支持支持支持支持支持支持支持支持
作者: ale99    时间: 前天 21:50
感谢分享,很给力
作者: 15111521472    时间: 前天 21:53
666666666666666666
作者: 张升    时间: 昨天 05:52

6666666666666666
6666666666666666
作者: 张升    时间: 昨天 06:30

6666666666666666
作者: quzhangjin    时间: 昨天 12:24
很酷,就是用不了,折腾半天白费劲
作者: yuan71058    时间: 昨天 12:58
感谢分享,很给力!~
作者: chjunlp2020    时间: 昨天 14:17
感谢分享,很给力!~
作者: 夏亿    时间: 昨天 20:47
感谢分享
作者: a358498501    时间: 昨天 23:24
感谢分享,很给力!~




欢迎光临 精易论坛 (https://bbs.125.la/) Powered by Discuz! X3.4