开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 876|回复: 30
打印 上一主题 下一主题
收起左侧

[易语言纯源码] Windows 激活工具设计 (概念实现)

[复制链接]
结帖率:0% (0/1)
跳转到指定楼层
发表于 4 天前 | 只看该作者 回帖奖励 |正序浏览 |阅读模式   广东省揭阳市
分享源码
界面截图: -
是否带模块: 纯源码
备注说明: -
本帖最后由 小破旧 于 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. 硬件信息获取DLL
  • GetVolumeInformationA:获取硬盘卷序列号
  • GetSystemFirmwareTable:读取SMBIOS数据获取主板信息
  • WMI查询接口:通过wbemdisp.dll获取CPU序列号等硬件信息

2. 权限管理DLL
  • CreateProcessWithTokenW:以管理员权限执行命令
  • OpenProcessToken/GetTokenInformation:验证管理员权限

3. 网络通信DLL
  • WinHttp.WinHttpRequest:与微软激活服务器通信

4. 系统操作DLL
  • 计划任务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激活等完整功能。请注意遵守当地法律法规,仅在合法授权的系统上使用激活技术。

评分

参与人数 2好评 +1 精币 +1 收起 理由
kyo9766 + 1 感谢分享,很给力!~
多多帅吧 + 1 互相讨论,共同进步

查看全部评分


结帖率:0% (0/2)

签到天数: 1 天

30
发表于 昨天 23:24 | 只看该作者   广东省深圳市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

签到天数: 1 天

29
发表于 昨天 20:47 | 只看该作者   江苏省连云港市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 2 天

28
发表于 昨天 14:17 | 只看该作者   湖南省邵阳市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

结帖率:100% (19/19)

签到天数: 4 天

27
发表于 昨天 12:58 | 只看该作者   辽宁省大连市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

签到天数: 1 天

26
发表于 昨天 12:24 | 只看该作者   广东省汕头市
很酷,就是用不了,折腾半天白费劲
回复 支持 反对

使用道具 举报

签到天数: 3 天

25
发表于 昨天 06:30 | 只看该作者   广西壮族自治区南宁市

6666666666666666
回复 支持 反对

使用道具 举报

签到天数: 3 天

24
发表于 昨天 05:52 | 只看该作者   广西壮族自治区南宁市

6666666666666666
6666666666666666
回复 支持 反对

使用道具 举报

签到天数: 2 天

23
发表于 前天 21:53 | 只看该作者   湖南省长沙市
666666666666666666
回复 支持 反对

使用道具 举报

签到天数: 4 天

22
发表于 前天 21:50 | 只看该作者   山东省潍坊市
感谢分享,很给力
回复 支持 反对

使用道具 举报

签到天数: 3 天

21
发表于 前天 21:48 | 只看该作者   广西壮族自治区南宁市
支持支持支持支持支持支持支持支持
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表