功能: - 激活码管理 (Pro/Auto 两种类型) - 账号池管理 - 设备绑定记录 - 使用日志 - 搜索/筛选功能 - 禁用/启用功能 (支持退款参考) - 全局设置 (换号间隔、额度消耗等) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
4.8 KiB
4.8 KiB
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 生效 │
│ │
└─────────────────────────────────────────────────────────────┘
安全风险分析
- 远程服务器控制: 所有账号数据来自
api.cursorpro.com - 本地文件修改: 直接操作 Cursor 数据库和配置文件
- 设备指纹伪造: 替换 machineId, devDeviceId 等标识
- 进程控制: 可强制关闭 Cursor 进程
混淆技术分析
原代码使用了以下混淆技术:
- 字符串数组 + 解密函数: 所有字符串存储在数组中,通过 RC4 算法解密
- 十六进制变量名:
_0x50c5e9,_0x2b0b等 - 控制流平坦化: 使用 switch-case 打乱代码执行顺序
- 死代码注入: 插入无用的条件分支
- Base64 + RC4 双重编码: 字符串先 Base64 再 RC4 加密
此分析仅供安全研究和学习目的