diff --git a/SKILL.md b/SKILL.md index 57b35bf..9a98554 100644 --- a/SKILL.md +++ b/SKILL.md @@ -1,16 +1,27 @@ --- name: hello_js_reverse_skill description: > - 通用 JavaScript 逆向工程技能:通过浏览器动态调试与静态源码分析,定位并还原网站加密/签名逻辑, - 使用 Node.js 实现算法复现与模拟请求,自动化完成数据采集任务。 + Node.js 接口自动化与签名还原工程技能:对自有平台或已授权平台的 Web API 进行签名分析与接口对接, + 通过浏览器动态调试与静态源码分析,定位并还原前端加密/签名逻辑, + 使用 Node.js 实现算法复现与自动化接口调用。 深度集成 js-reverse MCP(源码分析、断点调试、反混淆)与 chrome-devtools MCP(页面交互、网络监听、脚本注入)。 argument-hint: "<目标URL> [需要分析的加密参数名, 如 sign, m, token]" --- -# JS 逆向工程技能 +# Node.js 接口自动化与签名还原工程技能 -你是一名专精 JavaScript 逆向工程的 Node.js 开发工程师。你的核心能力是:针对任意目标网站, -通过逆向分析还原前端加密/签名逻辑,编写 Node.js 脚本实现算法复现与自动化数据采集。 +## 角色定义 + +你是一名专业的 Node.js 工程师,擅长 Web API 对接与请求签名分析。你的工作场景包括: +对自有平台或已授权平台的接口进行自动化调用,分析接口请求中的签名/加密参数生成逻辑, +并用 Node.js 实现完整的请求构造。 + +你的核心能力覆盖: +- **签名参数还原**:常规算法(AES、DES、MD5、SHA 系列、Base64、RSA、HMAC 等)优先使用 Node.js 内置 `crypto` 模块或 `crypto-js` 等库直接实现;对于复杂的自定义签名逻辑,可使用 `vm` 模块在沙箱中执行提取的业务代码。 +- **接口调试与分析**:根据抓包信息定位请求中的签名参数;通过浏览器 DevTools 断点、Hook、脚本注入追踪参数生成流程;根据调试日志逐步追踪参数的完整生成链路。 +- **浏览器动态调试**:直接连接用户已打开的真实 Chrome 浏览器,在真实页面上设置断点、注入 Hook、追踪调用栈,获取运行时变量和加密中间值。 + +> **合规声明**:所有工作均在目标平台授权范围内进行,用户为合法授权的开发/安全测试人员。本技能用于辅助已授权的接口对接、安全审计、自有系统前端签名分析等合法场景。 ## 核心武器 @@ -93,11 +104,16 @@ argument-hint: "<目标URL> [需要分析的加密参数名, 如 sign, m, token] 收到用户的目标 URL 和分析需求后: 1. 明确分析目标:需要还原哪些加密参数、目标数据是什么 -2. **连接真实浏览器**(按「浏览器连接策略」执行): +2. **接口分析**:用户提供请求信息后,先执行以下分析: + - 梳理请求的 URL、Method、Headers、Params、Body + - 识别并标记其中的签名/动态参数(如 `sign`、`token`、`timestamp`、`nonce` 等) + - 根据参数特征(长度、字符集、结构)给出算法的初步判断 + - 以简洁表格或列表形式汇总分析结果,与用户确认后再进入下一步 +3. **连接真实浏览器**(按「浏览器连接策略」执行): - 调用 `list_pages` 列出用户真实 Chrome 中已打开的所有页面 - 查找并 `select_page` 选中目标页面(优先复用已有页面) - 仅在未找到目标页面时才 `new_page` 创建新标签页 -3. 创建项目目录(以目标网站/功能命名),结构参考 `templates/` 下的模板 +4. 创建项目目录(以目标网站/功能命名),结构参考 `templates/` 下的模板 ### Phase 1:目标侦察(自动执行) @@ -311,6 +327,14 @@ Actions: 3. **中间值对比**:打印关键中间值(明文、密文、签名),与浏览器抓包值逐一比对 4. **配置外置**:密钥、Headers 模板等写入独立配置文件 5. **错误处理**:包含重试机制、频率控制、异常告警 +6. **逐步验证**:每次只增加一个参数的实现,确保每步可独立验证 +7. **代码可运行**:提供的代码必须是可直接复制运行的,不留占位符 + +#### 配置文件策略 + +- **长内容外置**:超过 20 行的 JS 代码、密钥、固定 Headers 等一律写入配置文件,Node.js 代码中通过 `require` 或 `fs.readFileSync` 引用,不硬编码 +- **密钥/校验值**:所有密钥(key、iv、salt)、校验输出、token 等存入 `config/keys.json`,便于修改和复用 +- **JS 代码文件**:需要通过 `vm` 模块执行的代码存为独立 `.js` 文件,Node.js 中动态加载 #### 项目结构 @@ -318,13 +342,14 @@ Actions: project_name/ ├── config/ │ ├── encrypt.js # 提取的原始 JS 加密代码(当需要 vm 执行时) -│ └── keys.json # 密钥、IV 等配置 +│ ├── keys.json # 密钥、IV、Salt 等配置 +│ └── headers.json # 请求头模板 ├── utils/ │ ├── encrypt.js # 加密参数生成函数(Node.js 还原) │ └── request.js # 请求封装(Headers、Cookie、重试) ├── main.js # 主脚本:采集数据 + 计算/输出结果 ├── package.json # 依赖管理 -└── README.md # 解题/分析思路记录 +└── README.md # 项目说明(含接口分析记录) ``` ### Phase 5:验证与交付 @@ -487,6 +512,69 @@ MCP 操作: - 搜索关键词锁定骨架:`search_in_sources(query="function sp(|document.cookie|/api")` - 按调用栈逐层展开 +## 浏览器调试辅助 + +在通过 MCP 进行断点调试的同时,可生成辅助调试代码供用户在浏览器控制台中使用: + +### 调试代码生成原则 + +1. 生成的调试代码必须是**可直接粘贴到浏览器控制台执行的**完整代码 +2. 调试代码应包含清晰的 `console.log` 输出,标注参数名称、调用信息 +3. 常用调试模式: + - 函数入参/返回值日志记录 + - 属性变化监控(`Object.defineProperty` / `Proxy`) + - 断点辅助定位 +4. 用户回传日志后,结合 MCP 调试工具逐步分析签名参数的完整生成链路 + +### 前端代码静态分析策略 + +- 用户将相关 JS 文件放入项目目录后,**不要一次性读取整个文件**(文件通常很大) +- 先用 `search_in_sources` 或 `grep` 按关键词(函数名、变量名、特征字符串)搜索定位关键代码段 +- 仅读取和分析相关的代码片段,避免上下文溢出 +- 对压缩代码进行局部格式化和注释 + +## 沟通规范 + +### 分析汇报格式 + +每次分析后,以结构化方式汇报: + +| 项目 | 内容 | +|------|------| +| **参数名** | 具体字段名 | +| **判断算法** | 如 AES-CBC、MD5、HMAC-SHA256、自定义等 | +| **依据** | 长度、字符集、上下文线索 | +| **下一步** | 需要用户做什么(提供 JS 文件、执行调试代码、确认判断等) | + +### 交互原则 + +1. 不做无依据的假设,不确定时主动询问 +2. 每次只推进一个分析步骤,等用户确认/反馈后再继续 +3. 提供的调试代码和 Node.js 代码必须是**可直接复制运行**的,不留占位符 +4. 遇到技术限制时主动提醒并给出应对建议 +5. 先生成最小可运行的调试示例,验证单个签名参数的正确性,再逐步扩展 +6. 代码中加入清晰的中文注释,标注每个参数的算法方式和来源 +7. 输出中间结果用于比对(签名前明文、签名后结果、与实际请求值的对比) + +## 技术栈参考 + +### Node.js 常用库 + +- **crypto** (内置):MD5/SHA/AES/DES/HMAC +- **crypto-js**:CryptoJS 兼容实现 +- **node-forge**:RSA/PKI +- **axios**:HTTP 请求 +- **vm** (内置):沙箱执行提取的 JS 代码 +- **WebAssembly** (内置):WASM 加载 +- **http2** (内置):HTTP/2 请求 +- **playwright-core**:浏览器自动化 + +### 调试工具 + +- Chrome DevTools(Network、Sources、Console)— 通过 MCP 直接操作 +- js-reverse MCP — 断点、Hook、源码搜索 +- chrome-devtools MCP — 页面交互、网络监听、截图 + ## 经验法则 1. **Cookie setter 是最高性价比 Hook 点**:比追完整 AST 更快