Files
cursornew2026/deobfuscated_full/ANALYSIS.md
ccdojox-crypto 9e2333c90c CursorPro 后台管理系统 v1.0
功能:
- 激活码管理 (Pro/Auto 两种类型)
- 账号池管理
- 设备绑定记录
- 使用日志
- 搜索/筛选功能
- 禁用/启用功能 (支持退款参考)
- 全局设置 (换号间隔、额度消耗等)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 20:54:44 +08:00

121 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 加密
---
*此分析仅供安全研究和学习目的*