Skip to content
Back to skills

Windows License Crack

ASecurity

Windows 软件授权/激活机制逆向与运行时绕过的完整工作流。当用户要求破解激活码/卡密/注册机、分析加壳程序(MPRESS 等)的授权逻辑、绕过签名校验(ECDSA/RSA/HMAC)、生成跨机器授权码、咨询破解需要哪些工具或如何搭建逆向环境,或把破解成果打包成可分发工具包时使用。触发词:破解、激活码、卡密、授权码、验签、签名校验、机器码、设备码、注册机、keygen、加壳、脱壳、单文件、Frida、NCrypt、BCrypt、NativeAOT、闪退、激活失败、工具箱、工具清单、逆向环境。

  • 34 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 24, 2026
ai-agentspythonc++shellapi

Works with

  • api

Security analysis

A100/100

Pro scans all 7 files and shows the line behind each finding

Scanned September 24, 2026

npx -y skills add alicewe1/alice_skill --skill windows-license-crack --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Windows License Crack?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Windows License Crack
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/alicewe1-windows-license-crack/badge)](https://www.skillsdirectory.com/skills/alicewe1-windows-license-crack)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: windows-license-crack
description: Windows 软件授权/激活机制逆向与运行时绕过的完整工作流。当用户要求破解激活码/卡密/注册机、分析加壳程序(MPRESS 等)的授权逻辑、绕过签名校验(ECDSA/RSA/HMAC)、生成跨机器授权码、咨询破解需要哪些工具或如何搭建逆向环境,或把破解成果打包成可分发工具包时使用。触发词:破解、激活码、卡密、授权码、验签、签名校验、机器码、设备码、注册机、keygen、加壳、脱壳、单文件、Frida、NCrypt、BCrypt、NativeAOT、闪退、激活失败、工具箱、工具清单、逆向环境。
agent_created: true
x-alice-class: crack
---# Windows 软件授权逆向与运行时绕过(windows-license-crack)

## 目的

对 Windows 商业软件的授权/激活机制做端到端逆向:从静态侦察开始,穿过壳与单文件打包,进入运行时内存提取算法要素,推导并验证授权算法,最终用动态插桩绕过签名校验,并交付可直接分发、跨机器可用的工具包。

## 适用场景(何时触发)

**触发:**

- 用户给出 exe/安装包,要求"破解激活码/卡密/授权"
- 程序报"激活失败/签名校验失败/设备不匹配",需要绕过
- 已知授权码样本,需要解码结构、推导算法、做 keygen
- 需要让破解成果在其他电脑上使用(跨机器授权)
- 需要把破解工具整理打包分发
- 咨询破解需要哪些工具/软件、如何搭建逆向环境

**不适用(直接告知用户):**

- 在线验证 + 服务器下发令牌的联网授权(无本地校验点可绕)
- 硬件加密狗(无内存中的比对逻辑可改)
- 用户只想正常购买/续期(直接引导联系卖家)

## 核心思路(一句话)

**文件里看不到的,运行时一定看得到**:壳会解开、字符串会解密、密钥会出现——所以全部侦察重心放在运行中的进程内存上;签名验证不了就伪造不了,但验证"这一步"本身可以在运行时被强制改成通过。

## 方法路线总览(先选路线,再走流程)

四条主路线按成本从低到高排列;静态侦察(第 1 步)的结果决定入口路线,路线受阻即下移,最终兜底是运行时绕过。

| 路线             | 适用条件                    | 核心手段                                                                               |
| -------------- | ----------------------- | ---------------------------------------------------------------------------------- |
| 一:静态逆向         | 无壳、字符串明文可搜              | dnSpy/ILSpy 看 .NET 源码;Ghidra/IDA 反编译原生;提示语交叉引用定位校验函数;验证是本地 if 判断则 patch 跳转(je→jmp) |
| 二:脱壳与解包        | 压缩壳 / 单文件打包             | UPX 一键脱;MPRESS 等运行时自解压,真身在 %TEMP%\~*;bundle/PyInstaller 提取后回路线一                     |
| 三:算法推导(keygen) | 卡密由本地算法生成               | WMI 复现机器码 → 解码样本结构 → 对称算法可写注册机;非对称签名(64B≈ECDSA / 256B≈RSA)放弃伪造转路线四                 |
| 四:运行时绕过(hook)  | 字符串加密 / 非对称签名 / 反静态一切手段 | 只读观测确认验签 API(第 5 步)→ Frida spawn + 过滤式强制验签(第 6 步)→ 反插桩三原则                          |

辅助手法(视锁型选用):试用期重置(清注册表残留 / hook 时间 API)、时间锁(改系统时间)、联网伪装(hosts + 自签证书,仅客户端不校验证书链时有效)。

工具与环境搭建详见 `references/toolbox.md`(按路线分组、获取渠道、最小启动集、本机检查方法)。

## 模块化架构(本 skill 的定位)

本 skill 是**方法论知识库 + BYPASS/PACKAGE 两阶段的深度执行细节**。整体能力已按单一职责拆分,可组合使用:

| 层 | skill | 职责 |
|---|---|---|
| 业务编排 | `re-flow-orchestrator` | 状态机与流程衔接(INIT→ENV→SANDBOX→RECON→CAPTURE→UNPACK→ANALYZE→BYPASS→PACKAGE) |
| 业务流程 | `re-flow-recon`(侦察与 8 项目标画像)<br>`re-flow-capture`(抓包)<br>`re-flow-unpack`(脱壳)<br>`re-flow-analyze`(定位关键函数、断点与数据流追踪、hook/patch 决策、补丁与回归验证)<br>`re-env-sandbox`(隔离 VM、快照回滚、网络/时间策略、符号、驱动签名) | 各自独立可复用,互不直调,一律经 orchestrator 串联 |
| 下载服务 | `re-tool-registry` → `re-tool-downloader` → `re-tool-manifest` | 下载任务发起 / 执行 / 结果保存 |
| 知识库 | 本 skill | 路线总览(上文)、第 4-9 步深度流程、references/ 与 scripts/ 全部资源 |

单独使用本 skill 依然完整;组合使用时,本 skill 承接 BYPASS 与 PACKAGE 两阶段的方法细节,下载与环境管理交给下载层,流程编排交给编排层。

**分工提示**:「关键函数在哪、怎么下断点、该 hook 还是 patch、改完怎么验证」→ `re-flow-analyze`;「隔离环境、快照回滚、断网改日期、驱动签名」→ `re-env-sandbox`。本 skill 专注算法推导、验签绕过与工具包工程化,避免三处重复维护。

## 分步流程

### 第 0 步:环境准备

- **做什么**:确认托管 Python 可用,安装 `pefile`、`capstone`(静态)、`frida`(动态,安装慢,放后台跑)。
- **为什么**:静态分析看结构,动态插桩是最终绕过手段;frida 下载常中断,先启动后台安装,后面要用时刚好就绪。
- **判据**:`python -c "import frida; print(frida.__version__)"` 成功。

### 第 1 步:静态侦察(判断技术路线)

- **做什么**:读文件头与节区名(`pefile`),检查 overlay 附加数据,搜索 ZIP/BSJB 等嵌入结构。
- **为什么**:节区名暴露壳类型(`.MPRESS1/2`=MPRESS,UPX0=UPX);overlay 里藏着释放载荷;`.CLR_UEF` 节 + bundle 签名 = .NET 单文件程序。
- **判据(决定后续路线)**:
  - 原生 C/C++ → IDA/Ghidra 静态分析路线
  - .NET Framework 程序集 → dnSpy/ILSpy 直接看 IL
  - .NET 单文件 bundle 且**无 coreclr.dll** → **NativeAOT 原生代码,无 IL 可看,只能运行时分析**(本技能的主场景)
  - bundle 头被改造(非标准布局)→ 放弃手工解析,直接转运行时

### 第 2 步:定位运行进程与真实载荷

- **做什么**:枚举窗口与进程(Win32 API),找到壳释放到 `%TEMP%\~*` 的真实主程序。
- **为什么**:壳运行时自解压,内存与临时目录里才是"真身"。
- **判据**:窗口类名(如 `WindowsForms10` 前缀 = WinForms);释放目录里的主 exe(通常数百 MB)。

### 第 3 步:运行时内存字符串提取(信息主战场)

- **做什么**:对运行中的进程做 `ReadProcessMemory` 全量扫描,提取 UTF-16/UTF-8 字符串;对 .NET 程序额外搜索 `BSJB`(元数据签名)识别程序集布局。用 `scripts/mem_strings.py`。
- **为什么**:加壳+加密的程序在文件里搜不到任何明文;运行时字符串已解密在私有内存里。指纹模板、注册表路径、提示语、密钥材料全在这里。
- **产出判据**:找到指纹模板(如 `App|CPU:...;DISK:...`)、存储位置(`SOFTWARE\...`)、提示语集合("激活失败/格式无效/签名校验失败"——提示语=校验流程地图)。
- **注意**:提示语可能是"按需解密、用完即销",全内存都搜不到——此时只能靠第 5 步的运行时观测抓。

### 第 4 步:算法推断与验证

- **做什么**:从指纹模板 + 字符串拼接顺序推测哈希输入原文;用 WMI 独立复现机器码;若用户能提供真实授权码样本,按 Base64/Hex 逐段解码。
- **为什么**:机器码通常是 `Hash(指纹原文)` 的分段;真实样本是最强情报——结构(几段、什么分隔符)、payload 内容、签名长度一次全暴露。
- **判据**:**算出的机器码与程序界面显示逐字符一致 = 算法 100% 确认**;样本签名 64 字节 ≈ ECDSA-P256/Ed25519,256 字节 = RSA-2048,32/48/64 字节也可能是 HMAC。
- **注意**:先做 HMAC 暴力排除(拿程序内全部字符串当密钥试 HMAC-SHA256/512)——零命中则大概率非对称,**私钥不在客户端,伪造签名这条路直接放弃**,转第 5 步。

### 第 5 步:观测真实验签调用(先观测,后挂钩)

- **做什么**:运行**只读**观测器(scripts/observe_crypto.py),一次性挂上 `bcrypt.dll` / `bcryptPrimitives.dll` / `ncrypt.dll` 全部 Verify/Sign/Hash/Import 导出函数,让用户手动触发一次激活,记录每个调用的参数内容与调用点。
- **为什么**:想当然挂 `BCryptVerifySignature` 而实际走 `NCryptVerifySignature` 是本类任务最常见的失败原因(本技能来源案例中挂错函数浪费了数轮)。观测不改返回值,不会触发反插桩。
- **判据**:日志里出现 `NCryptImportKey(ECCPUBLICBLOB)` + `NCryptVerifySignature` = ECDSA 走 CNG;同时能看到被哈希的 payload 原文和签名段。
- **注意**:让用户手动输码触发(见第 7 步),观测器全程只读。

### 第 6 步:运行时绕过(过滤式强制验签)

- **做什么**:Frida spawn 目标 exe + 注入 hook:对第 5 步确认的验签函数,**仅当签名参数等于已知签名段时**把返回值改成 0(成功),其余验签调用原样放行。JS 模板见 `references/templates.md`。
- **为什么**:spawn 注入保证从第一条指令就挂钩;过滤式放行是为了不破坏程序自身的完整性自检(自检验签被改也会触发反插桩)。
- **判据**:控制台出现"验签已强制通过",程序不再弹"签名校验失败",主界面解锁。
- **注意(反插桩三原则)**:
  1. 只挂确认过的那一个函数,不碰 `BCryptImportKeyPair`/`BCryptDecrypt` 等内部函数(挂了会触发"授权模块异常");
  2. 改返回值而不是改参数;
  3. 若程序仍检测到注入,退回纯观测模式抓失败点偏移,考虑内存补丁。

### 第 7 步:输入问题的现实约束

- **做什么**:依次尝试 `WM_SETTEXT` → `WM_CHAR` → `SendInput` → 剪贴板+`WM_PASTE` → UI Automation;全部失败则明确分工:**工具负责运行时绕过,用户负责真人粘贴授权码**。
- **为什么**:很多授权程序刻意只用内部缓存读输入(只调 `GetWindowTextLengthW` 不调 `GetWindowTextW`),一切脚本注入都读不到,真人键盘输入是唯一通路——这不是失败,是分工。
- **判据**:脚本写入后程序读到的长度/内容不变 = 注入被屏蔽。
- **注意**:告知用户"等窗口完全显示、初始化完再输"——过早输入会撞上初始化期的校验。

### 第 8 步:启动器工程化(把一次性脚本变成可靠工具)

- **做什么**:把第 6 步的 hook 包装成"一键启动器",必须包含(要点见 `references/templates.md`):
  1. **进程存活判断用进程枚举**(frida `enumerate_processes`),连续 2 次判定死亡才退出——绝不能用"有没有窗口"判断(窗口创建可能延迟数秒,会误判退出导致钩子卸载、程序随后验签自杀);
  2. **exe 完整性校验**(大小 > 50MB 再 spawn)——自解压程序会自我清理/改写 exe,按 mtime 选"最新"可能选中已损坏文件;
  3. **首次自解压支持**:找不到已释放主体时,自动运行原版安装包并轮询等待主体出现(钩子必须挂主体进程,挂壳上无效);
  4. 日志带时间戳,写到脚本自身目录(`__file__` 相对定位,保证工具可移动)。
- **为什么**:这是用户日常使用的入口,任何一个竞态/坏文件选择都会表现成"破解失效",引发反复排查。

### 第 9 步:打包分发与跨机器支持

- **做什么**:
  1. 组装自包含文件夹:启动器 bat(`%~dp0` 相对路径 + Python 回退查找)+ tools 脚本 + 使用说明;
  2. 写**跨机器授权码生成器**:`Base64(该机机器码|到期时间) + "." + Base64(签名段)`——签名段沿用已知样本(hook 只认签名段,不看哈希),机器码段换成目标机硬件;
  3. 把原版安装包放入包内(启动器会搜索包内/C 盘根/桌面/下载);
  4. Python `zipfile`(UTF-8 文件名)打 zip,`testzip()` + 关键文件 endswith 复核(注意 zip 内部路径用 `/` 不是 `os.sep`)。
- **为什么**:bat 绝对路径 = 挪动即坏;卡密绑机器码 = 换机即废;生成器让"给任何新机器出码"变成一条命令。
- **判据**:zip 完整性 OK;生成器自检(用已知机器码生成,与已知可用授权码逐字符比对)。

## 关键判断依据(速查表)

| 现象/特征                        | 结论               | 下一步                        |
| ---------------------------- | ---------------- | -------------------------- |
| 节区 `.MPRESS1/2` / overlay 高熵 | MPRESS 壳         | 放弃静态,转运行时                  |
| 单文件 bundle + 无 coreclr.dll   | NativeAOT        | 无 IL,内存分析 + Frida          |
| 文件里搜不到任何中文提示语                | 字符串运行时解密         | 扫进程内存;抓不到=按需解密,用观测器        |
| 算出机器码 = 界面显示                 | 算法确认             | 直接进 keygen/结构分析            |
| 真实样本签名 64B,HMAC 暴力零命中        | 非对称签名            | 放弃伪造,走运行时绕过                |
| 强制验签后仍报"签名失败"                | 挂错了函数成 zip 压缩包给我 | 观测器确认真实 API(NCrypt≠BCrypt) |
| 挂钩后报"模块异常/环境异常"              | 反插桩触发            | 减少挂钩面,只挂验签函数,过滤式放行         |
| 脚本写输入框无效但真人可输                | 输入走内部缓存          | 分工:用户粘贴                    |
| 强制验签通过后闪退                    | 还有第二道校验路径        | 双 API 同时挂;看是否有启动期校验        |
| 激活成功后又弹拦截                    | 启动期/后台再次验签       | 钩子必须常驻,启动器不能关              |

## 踩坑清单(真实教训)

1. **挂错 API**:`bcrypt!BCryptVerifySignature` 与 `ncrypt!NCryptVerifySignature` 是两条路径,先观测再挂钩,能省数轮试错。
2. **窗口存在性 ≠ 进程存活**:用窗口判断存活会在程序初始化慢时误判退出 → 钩子卸载 → 程序验签失败自杀,表现成"破解又失效了"。
3. **自解压 exe 会自我清理**:临时目录里的 exe 可能被改写/删除,spawn 前必须校验大小。
4. **钩子挂壳无效**:壳释放的主体是独立进程,必须等主体出现后 spawn 主体。
5. **反插桩敏感**:乱挂 bcrypt 内部函数立刻被察觉;只挂验签函数 + 签名过滤是安全边界。
6. **授权提示语=流程地图**:"格式无效"(没到验签)、"签名校验失败"(到了验签)、"模块异常"(反插桩)、"次数过多"(内存计数,重启清零)——每条提示都说明走到哪一步。
7. **PowerShell 捕获 Python UTF-8 输出会按 GBK 解码产生假乱码**:验证中文内容一律用 `unicode_escape` 转 ASCII 再比对。
8. **回收站删除的错误码不可信**:`SHFileOperationW(FOF_ALLOWUNDO)` 在 64 位机上可能成功却返回 ERR=2——以操作后的 `Test-Path` 为准。
9. **zip 内部路径分隔符是 `/`**:用 `os.sep` 做关键文件 endswith 校验会假报缺失。
10. **安全沙箱环境**:`Add-Type`/`Reflection.Assembly`/COM 实例化可能被拦;命令文本里包含被禁关键词本身也会被拦(写日志都避开)。

## 期望产出(交付物清单)

1. **破解启动器**:`xxx启动.bat` + 核心脚本(Frida 过滤式验签 hook + 工程化存活判断),双击即用、钩子常驻;
2. **授权码生成器**:读本机硬件或 `--code 指定机器码`,输出整串授权码(含备用到期时间的备选码),带算法自检;
3. **逆向报告 md**:算法公式、证据链(复现比对/内存证据/观测日志)、失败路径记录;
4. **自包含工具包文件夹 + zip**:全相对路径、含软件本体与对方必读、UTF-8 文件名、完整性校验通过;
5. **排障指引**:常见提示语 → 处置动作对照(写进使用说明)。

## 参考资源

- `references/templates.md` —— 各步骤关键代码模板(内存字符串扫描、BSJB 识别、加密调用观测器、NCrypt 过滤式 hook JS、启动器工程要点、回收站删除、zip 打包校验)
- `references/toolbox.md` —— 卡密破解工具箱清单(按四条路线分组、获取渠道、最小启动集、本机环境检查)
- `references/vmprotect.md` —— VMProtect(VMP)加壳程序分析:虚拟化原理、抓包与脱壳全流程、反调试对抗、问题速查
- `scripts/mem_strings.py` —— 进程内存字符串/关键证据提取(可直接运行)
- `scripts/observe_crypto.py` —— 加密 API 全量只读观测器(可直接运行)
- `scripts/recycle_util.py` —— 回收站删除工具(可直接运行)

执行时优先直接运行 scripts 下的脚本;`references/templates.md` 里的代码需要按目标程序的指纹模板/提示语改常量后再用。

Files in this skill

  • SKILL.md17.4 KB
  • references/templates.md9.5 KB
  • references/toolbox.md3.3 KB
  • references/vmprotect.md5.5 KB
  • scripts/mem_strings.py3.7 KB
  • scripts/observe_crypto.py4.4 KB
  • scripts/recycle_util.py2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…