﻿# XYplorer 28 一键激活工具与注册码生成

<p align="left">
  <b>简体中文</b> | <a href="README_EN.md">English</a>
</p>

> 🌐 **在线工作台与算法解构**：[https://xyplorer.int0.cc/](https://xyplorer.int0.cc/) *(或本地运行 `web/` 体验)*  
> 📦 **开源仓库**：[https://xyplorer.int0.cc](https://xyplorer.int0.cc)  
> 💎 **正版购买**：[XYplorer 官方网站 (https://www.xyplorer.com)](https://www.xyplorer.com) ｜ [官方购买通道 (https://www.xyplorer.com/purchase.php)](https://www.xyplorer.com/purchase.php)  

一个开源、可审计的 **XYplorer 28 (x64) 注册码校验机制还原与激活工程**（纯离线逆向，零网络依赖）。

本项目针对 **XYplorer 28.30.1900**（PE32+ x64，Delphi 风格核心代码 + VB6 运行时窗口类）进行了深度逆向工程分析。完整厘清了目标程序中相互独立的 **“输入校验链”** 与 **“自引用签名嵌入激活”** 两套防御体系，并给出了基于 Frida 内存挂钩与单步迭代收敛算法的工程化激活方案。

> **声明**：本项目仅供计算机逆向工程、密码学分析与软件安全机制的学习、研究与学术交流。请勿用于商业及未授权用途，生产及商业环境请支持并购买 [XYplorer 官方正版授权](https://www.xyplorer.com/purchase.php)。

---

## 核心特性

- **双机制深度解构**：全面理清“校验链”（`cf666` → `cd979` → `cf0b7` → `9541`）与“签名嵌入”（`FUN_140665409` 自引用校验）的数学逻辑与内存状态转换。
- **离线注册码生成与校验器**：支持生成通过完整校验链的长格式 Key（第 9 段版本号对齐，支持 `28.30` 等指定版本）。
- **自引用签名嵌入与迭代收敛**：证明了 `X` 签名串对 `pos` 切片的不敏感性，实现通过一次运行即时收敛并构造可永久激活的合法注册码。
- **免安装独立激活引擎**：提供打包内置 Frida 运行时环境的独立执行程序（`XYplorerActivateEngine.exe`），无需安装 Python 即可一键激活。
- **原生 GUI 客户端**：提供轻量原生 Windows 图形界面工具（`XYplorerActivate.exe`），支持自动多级进程与注册表路径探测、INI 自动回填与重启验证。
- **100% 内存实机验证**：通过 Frida 内存注入与注册标志位 `DAT_1422E9936` 监听，标题栏 “30-Day Trial” 标记彻底移除，行为与正版完全一致。

---

## 快速开始

### 1. 使用一键激活图形界面 (GUI)

运行 `tools/XYplorerActivate.exe`（单文件原生 WinForms 界面）：
1. 启动工具，程序将自动通过**运行中进程 / 注册表 / 默认路径**三级探测填入 `XYplorer.exe` 与配置文件路径。
2. 输入期望的授权用户名（默认 `Pro User`）。
3. 点击 **“一键激活”** 按钮，工具将自动完成占位 Key 注入、抓取自引用签名、回填并重启验证。

> 💡 若目录下存在 `tools/engine/XYplorerActivateEngine.exe`，将自动启用内置引擎，**无需安装 Python/Frida**；若独立运行源码则需要本地 `pip install frida`。

---

### 2. 命令行 CLI (Python 核心库)

```bash
# 1. 生成符合版本校验链的长格式 Key
python src/xyplorer_keygen.py gen -n 3 --version 28.30

# 2. 校验任意输入的注册码格式与版本段
python src/xyplorer_keygen.py verify "xy05-AAAAA-BBB-2061-PQ-RS-TU-OP-28.30-VW"

# 3. 运行完整单元测试
python tests/test_keygen.py

# 4. 命令行一键激活（自动化签名抓取与回填）
python tools/frida/activate.py --name "Pro User" \
       --exe "C:\Program Files\XYplorer\XYplorer.exe" \
       --ini "%APPDATA%\XYplorer64\XYplorer.ini"
```

---

## 逆向核心原理摘要

### 1. 机制一：界面校验链（输入即时校验）
当在注册窗口输入注册码时，程序触发校验函数链：
```
cf666(key, -1, 0)
  └─ cd979(".", key, 0)
       ├─ cf0b7: 拆分 '-' 分段；长格式取第 9 段（短格式取第 11 段）
       └─ 9541 / 9344: 将该段与版本参考串（如 "28.30"）做 double 浮点相等比对
通过判定: cd979 == -1 且 cf666 == 0 → 界面弹窗 "Thank you"
```

### 2. 机制二：启动自引用签名嵌入（真实授权判定）
每次程序冷启动时，在 `FUN_14066CFEC` 重新计算授权状态：
```
启动状态计算:
  fc90 = ENCODE( Code[pos : pos+4] )
  X    = GEN( Name, Code, 版本, ... )     # 确定性签名生成
  fc88 = ENCODE( X[pos : pos+4] )

激活判定:
  fc88 == fc90  ⟺  Code[pos : pos+4] == X[pos : pos+4]
```
- **提取索引 `pos`**：实测 `pos=15`（`11 + (日期 % 91) / 9`）。
- **一次迭代收敛定理**：由于 `GEN` 签名算法对输入 `Code` 的 `pos` 处 4 字符变化具备局部不变性，写入任意初始占位 Key 启动抓取 `X` 后，将 `X[pos:pos+4]` 回填入 Key，下次启动必然精确满足 `Code[pos:pos+4] == X[pos:pos+4]`，`DAT_1422E9936` 赋值为 `0`（已注册）。

完整逆向推导与 Ghidra/Frida 汇编细节详见 [`docs/activation-mechanism.md`](docs/activation-mechanism.md) 与 [`docs/algorithm.md`](docs/algorithm.md)。

---

## 项目结构

```
xyplorer-keygen/
├── src/
│   ├── xyplorer_keygen.py      # 校验链核心生成与验证库 (Python)
│   └── XYplorerActivate.cs     # 一键激活 GUI 源码 (C# / WinForms)
├── tools/
│   ├── XYplorerActivate.exe    # 编译就绪的轻量 GUI 工具
│   ├── engine/                 # 打包独立引擎目录 (免 Python 环境)
│   └── frida/
│       └── activate.py         # Frida 进程内签名捕获与激活驱动脚本
├── docs/
│   ├── activation-mechanism.md # 签名对与自引用激活机制深度报告
│   ├── algorithm.md            # 校验算法与分段规范说明
│   └── reverse-engineering.md  # 逆向过程全记录与踩坑复盘
├── tests/
│   └── test_keygen.py          # 单元测试与回归样本用例
├── web/                        # 现代 Web 官网与算法可视化演示台
├── build.ps1                   # 源码一键编译脚本 (.NET csc)
├── LICENSE                     # MIT 开源许可证
└── README.md                   # 项目中文文档
```

---

## 免责声明（Disclaimer）

1. **仅供学习与学术研究 (Educational & Research Purpose Only)**：  
   本项目（包括源码、逆向算法分析文档、GUI 工具及 Web 前端展示）仅用于计算机软件逆向工程、密码学分析与软件安全机制的学习、交流与学术探讨，不具备任何破坏或绕过正版商业保护体系的意图。
2. **禁止商业与未授权用途 (Non-Commercial & Authorized Use Only)**：  
   严禁将本项目中的任何代码、工具、注册码生成逻辑或衍生作品用于商业牟利、二次转售、批量分发或任何未经软件著作权方授权的环境中。
3. **支持正版软件 (Support Genuine Software)**：  
   本项目倡导并鼓励所有用户尊重开发者的知识产权与劳动成果。XYplorer 是一款优秀的 Windows 文件管理工具，如需在日常生产、办公或商业环境中长期稳定使用，请前往 [XYplorer 官网 (https://www.xyplorer.com)](https://www.xyplorer.com) 购买官方正版授权。
4. **无担保与责任自负 (As-Is & Limitation of Liability)**：  
   本项目按“现状 (AS IS)”提供，作者不提供任何形式的明示或暗示担保。使用者因使用、修改或传播本项目内容所产生的一切直接或间接法律责任、安全风险或数据损失，均由使用者自行承担，与本项目作者及贡献者无关。
5. **版权与合规声明 (Copyright Notice & Compliance)**：  
   XYplorer 及其相关商标、版权归其原作者 Donald Lessau (Cologne Code Company) 所有。若相关权利方认为本项目侵犯了其合法权益，请通过 GitHub Issue 或邮件联系，维护方将在收到通知后及时进行合规处理。

---

## 许可证 (License)

本项目采用 [MIT License](LICENSE) 开源协议。