CursorPro 后台管理系统 v1.0

功能:
- 激活码管理 (Pro/Auto 两种类型)
- 账号池管理
- 设备绑定记录
- 使用日志
- 搜索/筛选功能
- 禁用/启用功能 (支持退款参考)
- 全局设置 (换号间隔、额度消耗等)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
ccdojox-crypto
2025-12-16 20:54:44 +08:00
commit 9e2333c90c
62 changed files with 9567 additions and 0 deletions

120
deobfuscated/ANALYSIS.md Normal file
View File

@@ -0,0 +1,120 @@
# CursorPro 反混淆分析报告
## 项目结构
```
deobfuscated/
├── extension.js # 扩展主入口
├── api/
│ └── client.js # API 客户端
├── utils/
│ ├── account.js # 账号管理工具
│ └── sqlite.js # SQLite 数据库操作
└── webview/
└── provider.js # Webview 提供者
```
## 功能分析
### 1. extension.js - 扩展入口
- **cleanServiceWorkerCache()**: 清理 Cursor 的 Service Worker 缓存
- **activate()**: 注册 webview provider 和状态栏
- **updateUsageStatusBar()**: 更新状态栏显示使用量
### 2. api/client.js - API 客户端
与远程服务器通信,主要 API
| 函数 | 端点 | 说明 |
|------|------|------|
| `verifyKey()` | POST /api/verify | 验证激活码 |
| `switchAccount()` | POST /api/switch | 切换账号 |
| `getSeamlessStatus()` | GET /api/seamless/status | 获取无缝模式状态 |
| `injectSeamless()` | POST /api/seamless/inject | 注入无缝模式 |
| `getProxyConfig()` | GET /api/proxy-config | 获取代理配置 |
**默认 API 服务器**: `https://api.cursorpro.com` (从混淆代码中提取)
### 3. utils/account.js - 账号管理
**getCursorPaths()** - 返回 Cursor 配置路径:
| 平台 | 数据库路径 |
|------|-----------|
| Windows | `%APPDATA%/Cursor/User/globalStorage/state.vscdb` |
| macOS | `~/Library/Application Support/Cursor/User/globalStorage/state.vscdb` |
| Linux | `~/.config/Cursor/User/globalStorage/state.vscdb` |
**writeAccountToLocal()** - 写入账号数据到本地:
- 修改 SQLite 数据库中的认证 token
- 更新 storage.json 中的设备 ID
- 写入 machineid 文件
- Windows: 写入注册表
**关键数据库字段**
```
cursorAuth/accessToken - 访问令牌
cursorAuth/refreshToken - 刷新令牌
cursorAuth/WorkosCursorSessionToken - WorkOS 会话令牌
cursorAuth/cachedEmail - 缓存邮箱
cursorAuth/stripeMembershipType - 会员类型
telemetry.serviceMachineId - 服务机器ID
telemetry.devDeviceId - 设备ID
```
### 4. utils/sqlite.js - SQLite 操作
通过 `sqlite3` 命令行工具直接操作 Cursor 的 VSCode 状态数据库:
- `sqliteGet()` - 读取单个值
- `sqliteSet()` - 写入单个值
- `sqliteSetBatch()` - 批量写入 (使用事务)
### 5. webview/provider.js - Webview 界面
实现侧边栏 UI提供
- 激活码验证界面
- 使用统计显示
- 无缝模式配置
- 代理设置
- 账号切换功能
## 工作原理
```
┌─────────────────────────────────────────────────────────────┐
│ CursorPro 工作流程 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 用户输入激活码 │
│ ↓ │
│ 2. 发送到远程 API 服务器验证 │
│ ↓ │
│ 3. 服务器返回账号数据 (token, email, 设备ID等) │
│ ↓ │
│ 4. 写入本地 Cursor 配置文件: │
│ - state.vscdb (SQLite 数据库) │
│ - storage.json │
│ - machineid │
│ ↓ │
│ 5. 提示重启 Cursor 生效 │
│ │
└─────────────────────────────────────────────────────────────┘
```
## 安全风险分析
1. **远程服务器控制**: 所有账号数据来自 `api.cursorpro.com`
2. **本地文件修改**: 直接操作 Cursor 数据库和配置文件
3. **设备指纹伪造**: 替换 machineId, devDeviceId 等标识
4. **进程控制**: 可强制关闭 Cursor 进程
## 混淆技术分析
原代码使用了以下混淆技术:
1. **字符串数组 + 解密函数**: 所有字符串存储在数组中,通过 RC4 算法解密
2. **十六进制变量名**: `_0x50c5e9`, `_0x2b0b`
3. **控制流平坦化**: 使用 switch-case 打乱代码执行顺序
4. **死代码注入**: 插入无用的条件分支
5. **Base64 + RC4 双重编码**: 字符串先 Base64 再 RC4 加密
---
*此分析仅供安全研究和学习目的*