# JS Reverse Analyzer

> 通用的 JavaScript 逆向分析工具，用于分析网站的加密和签名算法，生成详细的逆向报告和 Python 实现代码

- Skill: `sjhhh024-cmyk/js-reverse-analyzer` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add sjhhh024-cmyk/js-reverse-analyzer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/sjhhh024-cmyk/js-reverse-analyzer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: sjhhh024-cmyk (https://skillmd.com/u/sjhhh024-cmyk)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/sjhhh024-cmyk/js-reverse-analyzer

---


# JS 逆向分析工具（JS Reverse Analyzer）

## 简介

这是一个通用的 JavaScript 逆向分析工具，能够帮助分析目标网站的加密算法、签名机制和反爬策略。该工具会：

1. 📊 识别和分析关键 JS 文件
2. 🔍 提取加密/签名算法
3. 📝 生成详细的逆向分析报告
4. 🐍 提供 Python 实现代码
5. ✅ 验证方法和使用示例

## 使用方法

### 📋 分析流程说明

本 Skill 提供**完整的 JS 逆向分析流程**，引导 AI 进行系统化的分析。

**主要使用方式**：
- ✅ 按照**下面的步骤 1-5** 进行分析（这是主要流程）
- ✅ 在分析过程中，根据具体情况**灵活判断和调整**
- ✅ **只在遇到技术障碍时**，才调用 MCP 工具辅助

### 🔧 MCP 辅助工具（可选）

本 Skill 配备了 **13个 MCP 辅助工具**，用于突破技术限制。

**何时考虑使用 MCP 工具**：
- 🛡️ 遇到**验证挑战**（五秒盾、Cloudflare）→ 可用 `bypass_challenge` 工具绕过
- 🔒 JS 代码**严重混淆**无法阅读 → 可用 `deobfuscate_code` 工具反混淆
- ⚡ 需要**浏览器环境**动态执行 → 可用 `analyze_with_browser` 工具
- 🔍 **不确定网站保护程度** → 可用 `detect_protection` 工具检测

**重要提示**：
- MCP 工具只是**辅助手段**，不是主要流程
- **优先使用 Skill 的分析步骤**，只在必要时才调用 MCP 工具
- 保持分析的**深度和思考**，不要过度依赖自动化工具

### 基本使用

当用户请求分析某个网站的 JS 逆向算法时：

```
请分析 [网站URL] 的 JS 加密算法
```

### 工作流程

按照以下步骤进行分析：

#### 步骤 1: 页面内容获取

使用 `read_url_content` 工具获取目标页面的 HTML：

```
read_url_content(目标URL)
```

从 HTML 中识别加载的 JS 文件列表。

#### 步骤 2: JS 文件分析

> **💡 MCP 工具提示**：如果 JS 文件**高度混淆**难以阅读，使用 `deobfuscate_code` 工具先反混淆！

下载并分析识别到的关键 JS 文件：

1. **主入口文件**：通常包含路由和应用逻辑
2. **第三方库文件**：可能包含加密库（如 CryptoJS）
3. **业务逻辑文件**：包含具体的请求处理逻辑

重点查找以下关键字：
- `sign`, `signature`, `encrypt`, `decrypt`
- `md5`, `sha`, `aes`, `rsa`, `crc`
- `timestamp`, `nonce`, `token`
- `headers`, `request`, `axios`, `fetch`

#### 步骤 3: 算法提取

从 JS 代码中提取核心算法：

**常见算法类型**：
- **MD5/SHA**：哈希签名
- **AES/DES**：对称加密
- **RSA**：非对称加密
- **Base64**：编码
- **CRC32**：校验码
- **自定义算法**：字符串拼接、位运算等

**提取要点**：
1. 找到请求发送函数（如 `axios.post`, `fetch`）
2. 追踪参数构造过程
3. 识别签名/加密函数调用
4. 提取算法实现代码

#### 步骤 4: 生成分析报告

创建结构化的逆向分析报告，包含以下章节：

```markdown
# [网站名称] JS 逆向分析报告

## 1. 目标网站信息
- URL、网站名称、分析时间

## 2. 关键 JS 文件识别
- 主要 JS 文件列表
- 第三方库依赖

## 3. 请求签名算法分析
- 核心代码片段
- 算法步骤说明
- 参数构造方式

## 4. 算法实现细节
- 具体算法的代码实现
- 关键常量和变量

## 5. Python 逆向实现
- 完整的 Python 代码
- 使用示例

## 6. 关键要点
- API 域名
- 签名特点
- 注意事项

## 7. 验证方法
- 浏览器调试步骤
- 验证方式

## 8. 可能的反爬措施
- User-Agent 检测
- Cookie 验证
- 频率限制
- IP 限制

## 9. 总结
```

#### 步骤 5: Python 代码实现

提供完整的 Python 逆向代码，必须包含：

1. **算法函数**：实现 JS 中的加密/签名算法
2. **参数生成函数**：构造请求参数
3. **请求函数**：发送 HTTP 请求
4. **使用示例**：可直接运行的代码

**Python 代码模板**：

```python
import json
import time
import hashlib
import requests


def custom_algorithm(data):
    """自定义算法实现"""
    # TODO: 实现具体算法
    pass


def generate_signature(params, timestamp):
    """生成签名"""
    # 1. 参数处理
    # 2. 拼接字符串
    # 3. 计算签名
    pass


def make_request(url, params):
    """发送请求"""
    # 1. 生成时间戳
    # 2. 生成签名
    # 3. 构造请求头
    # 4. 发送请求
    pass


# 使用示例
if __name__ == '__main__':
    result = make_request(api_url, params)
    print(json.dumps(result, indent=2, ensure_ascii=False))
```

## 常见算法识别

### 1. MD5 签名

**特征**：
- 32位十六进制字符串
- 通常用于参数签名

**识别方法**：
```javascript
// 查找 md5、MD5、hash 等关键字
md5(data)
crypto.MD5(data)
```

**Python 实现**：
```python
import hashlib

def md5_sign(data):
    return hashlib.md5(data.encode('utf-8')).hexdigest()
```

### 2. AES 加密

**特征**：
- 需要密钥和 IV
- 通常配合 Base64 编码

**识别方法**：
```javascript
// 查找 AES、encrypt 等关键字
CryptoJS.AES.encrypt(data, key)
```

**Python 实现**：
```python
from Crypto.Cipher import AES
import base64

def aes_encrypt(data, key, iv):
    cipher = AES.new(key.encode(), AES.MODE_CBC, iv.encode())
    # 加密逻辑
```

### 3. RSA 加密

**特征**：
- 需要公钥
- 用于敏感信息加密

**识别方法**：
```javascript
// 查找 RSA、publicKey 等关键字
encrypt.setPublicKey(publicKey)
encrypt.encrypt(data)
```

**Python 实现**：
```python
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
import base64

def rsa_encrypt(data, public_key):
    # RSA 加密逻辑
```

### 4. CRC32 校验

**特征**：
- 用于数据完整性校验
- 常见于时间戳处理

**识别方法**：
```javascript
// 查找 crc、CRC32 等关键字
// 特征常量：0xEDB88320 或 3988292384
```

**Python 实现**：
```python
def crc32(data):
    crc = 0xFFFFFFFF
    # CRC32 算法
    return crc & 0xFFFFFFFF
```

### 5. 自定义算法

**识别方法**：
- 字符串拼接规则
- 位运算
- 数组操作
- 特殊编码

## 最佳实践

### 1. 代码可读性

- 添加详细的中文注释
- 使用有意义的变量名
- 保持代码结构清晰

### 2. 完整性

- 包含所有必要的导入
- 提供完整的使用示例
- 错误处理和异常捕获

### 3. 可维护性

- 模块化设计
- 便于调试和修改
- 提供日志输出（可选）

### 4. 安全性提醒

在报告中必须包含：
- 合法使用声明
- 频率控制建议
- 反爬虫应对方案

## 输出文件

分析完成后，生成以下文件：

1. **task.md** - 任务清单（跟踪进度）
2. **[网站名]_js_reverse_analysis.md** - 完整的逆向分析报告

## 注意事项

### 📋 分析注意事项

#### 基本原则

按照本 Skill 的步骤 1-5 进行分析是主要方式。在分析过程中需要注意：

1. **网络请求**：如果浏览器工具不可用，使用 `read_url_content` 获取页面内容
2. **JS 混淆**：如果代码混淆严重无法阅读，可以考虑使用 `deobfuscate_code` 工具辅助
3. **验证挑战**：遇到五秒盾等验证页面，可以使用 `bypass_challenge` 工具
4. **动态执行**：如果发现签名是运行时生成，可以使用 `analyze_with_browser` 工具
5. **保持深度**：重点是**理解算法逻辑**，而不只是提取代码
6. **时效性**：提醒用户算法可能会更新，需要定期检查

## 示例输出

参考之前为 vbdata.cn 生成的分析报告：
- 清晰的章节结构
- 详细的算法说明
- 完整的 Python 代码
- 实用的验证方法

## 技术栈

- **JavaScript 分析**：理解 ES6+ 语法
- **加密库识别**：CryptoJS, forge, jsencrypt 等
- **Python 实现**：requests, hashlib, Crypto 等
- **调试工具**：浏览器开发者工具

## 更新日志

- v1.0.0 (2026-01-27): 初始版本，支持常见加密算法分析

---

## 使用示例

用户输入：
```
分析 https://example.com/api 的 JS 逆向算法
```

AI 执行流程：
1. 使用 `read_url_content` 获取页面
2. 识别关键 JS 文件
3. 分析加密算法
4. 生成报告和 Python 代码
5. 提供验证方法

最终输出：
- 📄 详细的逆向分析报告（Markdown 格式）
- 🐍 可运行的 Python 实现代码
- ✅ 验证步骤和注意事项

