| name | JS Reverse Analyzer |
| description | 通用的 JavaScript 逆向分析工具,用于分析网站的加密和签名算法,生成详细的逆向报告和 Python 实现代码 |
| version | 1.0.0 |
| author | AI Assistant |
| tags | ["reverse-engineering","javascript","web-scraping","security"] |
JS 逆向分析工具(JS Reverse Analyzer)
简介
这是一个通用的 JavaScript 逆向分析工具,能够帮助分析目标网站的加密算法、签名机制和反爬策略。该工具会:
- 📊 识别和分析关键 JS 文件
- 🔍 提取加密/签名算法
- 📝 生成详细的逆向分析报告
- 🐍 提供 Python 实现代码
- ✅ 验证方法和使用示例
使用方法
📋 分析流程说明
本 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 文件:
- 主入口文件:通常包含路由和应用逻辑
- 第三方库文件:可能包含加密库(如 CryptoJS)
- 业务逻辑文件:包含具体的请求处理逻辑
重点查找以下关键字:
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:校验码
- 自定义算法:字符串拼接、位运算等
提取要点:
- 找到请求发送函数(如
axios.post, fetch)
- 追踪参数构造过程
- 识别签名/加密函数调用
- 提取算法实现代码
步骤 4: 生成分析报告
创建结构化的逆向分析报告,包含以下章节:
# [网站名称] JS 逆向分析报告
## 1. 目标网站信息
- URL、网站名称、分析时间
## 2. 关键 JS 文件识别
- 主要 JS 文件列表
- 第三方库依赖
## 3. 请求签名算法分析
- 核心代码片段
- 算法步骤说明
- 参数构造方式
## 4. 算法实现细节
- 具体算法的代码实现
- 关键常量和变量
## 5. Python 逆向实现
- 完整的 Python 代码
- 使用示例
## 6. 关键要点
- API 域名
- 签名特点
- 注意事项
## 7. 验证方法
- 浏览器调试步骤
- 验证方式
## 8. 可能的反爬措施
- User-Agent 检测
- Cookie 验证
- 频率限制
- IP 限制
## 9. 总结
步骤 5: Python 代码实现
提供完整的 Python 逆向代码,必须包含:
- 算法函数:实现 JS 中的加密/签名算法
- 参数生成函数:构造请求参数
- 请求函数:发送 HTTP 请求
- 使用示例:可直接运行的代码
Python 代码模板:
import json
import time
import hashlib
import requests
def custom_algorithm(data):
"""自定义算法实现"""
pass
def generate_signature(params, timestamp):
"""生成签名"""
pass
def make_request(url, params):
"""发送请求"""
pass
if __name__ == '__main__':
result = make_request(api_url, params)
print(json.dumps(result, indent=2, ensure_ascii=False))
常见算法识别
1. MD5 签名
特征:
识别方法:
md5(data)
crypto.MD5(data)
Python 实现:
import hashlib
def md5_sign(data):
return hashlib.md5(data.encode('utf-8')).hexdigest()
2. AES 加密
特征:
识别方法:
CryptoJS.AES.encrypt(data, key)
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 加密
特征:
识别方法:
encrypt.setPublicKey(publicKey)
encrypt.encrypt(data)
Python 实现:
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
import base64
def rsa_encrypt(data, public_key):
4. CRC32 校验
特征:
识别方法:
Python 实现:
def crc32(data):
crc = 0xFFFFFFFF
return crc & 0xFFFFFFFF
5. 自定义算法
识别方法:
最佳实践
1. 代码可读性
- 添加详细的中文注释
- 使用有意义的变量名
- 保持代码结构清晰
2. 完整性
- 包含所有必要的导入
- 提供完整的使用示例
- 错误处理和异常捕获
3. 可维护性
4. 安全性提醒
在报告中必须包含:
输出文件
分析完成后,生成以下文件:
- task.md - 任务清单(跟踪进度)
- [网站名]_js_reverse_analysis.md - 完整的逆向分析报告
注意事项
📋 分析注意事项
基本原则
按照本 Skill 的步骤 1-5 进行分析是主要方式。在分析过程中需要注意:
- 网络请求:如果浏览器工具不可用,使用
read_url_content 获取页面内容
- JS 混淆:如果代码混淆严重无法阅读,可以考虑使用
deobfuscate_code 工具辅助
- 验证挑战:遇到五秒盾等验证页面,可以使用
bypass_challenge 工具
- 动态执行:如果发现签名是运行时生成,可以使用
analyze_with_browser 工具
- 保持深度:重点是理解算法逻辑,而不只是提取代码
- 时效性:提醒用户算法可能会更新,需要定期检查
示例输出
参考之前为 vbdata.cn 生成的分析报告:
- 清晰的章节结构
- 详细的算法说明
- 完整的 Python 代码
- 实用的验证方法
技术栈
- JavaScript 分析:理解 ES6+ 语法
- 加密库识别:CryptoJS, forge, jsencrypt 等
- Python 实现:requests, hashlib, Crypto 等
- 调试工具:浏览器开发者工具
更新日志
- v1.0.0 (2026-01-27): 初始版本,支持常见加密算法分析
使用示例
用户输入:
分析 https://example.com/api 的 JS 逆向算法
AI 执行流程:
- 使用
read_url_content 获取页面
- 识别关键 JS 文件
- 分析加密算法
- 生成报告和 Python 代码
- 提供验证方法
最终输出:
- 📄 详细的逆向分析报告(Markdown 格式)
- 🐍 可运行的 Python 实现代码
- ✅ 验证步骤和注意事项